@indigina/kendo 1.1.2 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -41,16 +41,16 @@ import * as i3$2 from '@progress/kendo-angular-popup';
41
41
  import { PopupModule } from '@progress/kendo-angular-popup';
42
42
  import * as i2$2 from '@progress/kendo-angular-dialog';
43
43
  import { DialogsModule, WindowModule } from '@progress/kendo-angular-dialog';
44
- import * as i2$4 from '@progress/kendo-angular-buttons';
45
- import { ButtonsModule } from '@progress/kendo-angular-buttons';
46
- import * as i2$3 from '@progress/kendo-angular-dateinputs';
47
- import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
48
- import * as i3$3 from '@progress/kendo-angular-dropdowns';
49
- import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
50
- import * as i3$4 from '@progress/kendo-angular-grid';
44
+ import * as i3$3 from '@progress/kendo-angular-grid';
51
45
  import { GridModule, ExcelModule } from '@progress/kendo-angular-grid';
46
+ import * as i2$3 from '@progress/kendo-angular-buttons';
47
+ import { ButtonsModule } from '@progress/kendo-angular-buttons';
52
48
  import * as i6 from '@progress/kendo-angular-inputs';
53
49
  import { InputsModule } from '@progress/kendo-angular-inputs';
50
+ import * as i2$4 from '@progress/kendo-angular-dateinputs';
51
+ import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
52
+ import * as i3$4 from '@progress/kendo-angular-dropdowns';
53
+ import { DropDownsModule } from '@progress/kendo-angular-dropdowns';
54
54
  import { TooltipModule } from '@progress/kendo-angular-tooltip';
55
55
 
56
56
  class DebounceDirective {
@@ -1738,180 +1738,101 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
1738
1738
  type: Input
1739
1739
  }] } });
1740
1740
 
1741
- const AuthorizationHeader = 'Authorization';
1742
- class AuthHeadersInterceptor {
1743
- constructor(settingsService) {
1744
- this.settingsService = settingsService;
1741
+ class EntityService {
1742
+ constructor(httpService, endpoints) {
1743
+ this.httpService = httpService;
1744
+ this.endpoints = endpoints;
1745
1745
  }
1746
- intercept(request, next) {
1747
- if (!request.headers.keys().find((x) => x === AuthorizationHeader)) {
1748
- const token = this.settingsService.getToken();
1749
- if (token) {
1750
- const modified = request.clone({
1751
- setHeaders: {
1752
- Authorization: `Bearer ${token}`,
1753
- },
1754
- });
1755
- return next.handle(modified);
1756
- }
1757
- else {
1758
- return next.handle(request);
1759
- }
1746
+ getPage(state) {
1747
+ return this.httpService.get(this.endpoints.query(state));
1748
+ }
1749
+ get(id) {
1750
+ return this.httpService.get(this.endpoints.entityPath(id));
1751
+ }
1752
+ delete(id) {
1753
+ return this.httpService.delete(this.endpoints.entityPath(id));
1754
+ }
1755
+ save(model) {
1756
+ if (model.id) {
1757
+ return this.httpService.put(this.endpoints.entityPath(model.id), model);
1760
1758
  }
1761
- return next.handle(request);
1759
+ return this.httpService.post(this.endpoints.path, model);
1762
1760
  }
1763
1761
  }
1764
- AuthHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AuthHeadersInterceptor, deps: [{ token: SettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
1765
- AuthHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AuthHeadersInterceptor });
1766
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AuthHeadersInterceptor, decorators: [{
1767
- type: Injectable
1768
- }], ctorParameters: function () { return [{ type: SettingsService }]; } });
1769
-
1770
- var FieldTypes;
1771
- (function (FieldTypes) {
1772
- FieldTypes[FieldTypes["Text"] = 0] = "Text";
1773
- FieldTypes[FieldTypes["Checkbox"] = 1] = "Checkbox";
1774
- FieldTypes[FieldTypes["Dropdown"] = 2] = "Dropdown";
1775
- FieldTypes[FieldTypes["Multiselect"] = 3] = "Multiselect";
1776
- })(FieldTypes || (FieldTypes = {}));
1777
1762
 
1778
- const moment = momentModule;
1779
- class CurrentTimezoneComponent {
1780
- constructor() { }
1781
- ngOnInit() {
1782
- const timeZone = moment.tz.guess();
1783
- this.timeZoneAndOffset = timeZone + ' ' + moment().format('Z');
1763
+ class PartnerService extends EntityService {
1764
+ constructor(httpService) {
1765
+ super(httpService, endpoints.partners);
1784
1766
  }
1785
1767
  }
1786
- CurrentTimezoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CurrentTimezoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1787
- CurrentTimezoneComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CurrentTimezoneComponent, selector: "current-timezone", ngImport: i0, template: "<div class=\"divide-line\"></div>\n<div class=\"time-zone\">\n {{ 'CurrentTimeZone' | translate }}: {{ timeZoneAndOffset }}\n</div>\n", styles: [""], pipes: { "translate": i1.TranslatePipe } });
1788
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CurrentTimezoneComponent, decorators: [{
1789
- type: Component,
1790
- args: [{ selector: 'current-timezone', template: "<div class=\"divide-line\"></div>\n<div class=\"time-zone\">\n {{ 'CurrentTimeZone' | translate }}: {{ timeZoneAndOffset }}\n</div>\n", styles: [""] }]
1791
- }], ctorParameters: function () { return []; } });
1768
+ PartnerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: PartnerService, deps: [{ token: HttpService }], target: i0.ɵɵFactoryTarget.Injectable });
1769
+ PartnerServiceprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: PartnerService });
1770
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: PartnerService, decorators: [{
1771
+ type: Injectable
1772
+ }], ctorParameters: function () { return [{ type: HttpService }]; } });
1792
1773
 
1793
- const allKey = 'All';
1794
- const defaultValueField = 'id';
1795
- class ActivityFilterComponent {
1796
- constructor(translate) {
1797
- this.translate = translate;
1798
- this.showArchiveSwitcher = true;
1799
- this.showSearhText = true;
1800
- this.FieldTypes = FieldTypes;
1801
- this.defaultNamedModel = {
1802
- name: this.translate.instant(allKey),
1803
- id: null,
1804
- };
1805
- }
1806
- ngOnInit() {
1807
- var _a;
1808
- (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => (element.valueField = element.valueField
1809
- ? element.valueField
1810
- : defaultValueField));
1811
- this.filterService.filter$.subscribe((filter) => {
1812
- this.filter = filter;
1813
- this.changeFilter();
1814
- });
1815
- }
1816
- ngOnChanges() {
1817
- this.changeFilter();
1818
- }
1819
- setTodayFilter() {
1820
- this.filterService.setToday();
1821
- }
1822
- clearFilter() {
1823
- var _a;
1824
- (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
1825
- element.filter.value = null;
1826
- if (element.filter.values) {
1827
- element.filter.values = [];
1828
- }
1829
- });
1830
- this.filterService.reset();
1831
- this.emitChangeEvents();
1832
- }
1833
- applyFilter() {
1834
- this.setCustomFilters();
1835
- this.filterService.applyFilter(this.filter);
1836
- }
1837
- fieldChange(value, element) {
1838
- if (element.change) {
1839
- element.change(value);
1774
+ const urlSerialize = (object) => {
1775
+ let serialized = '';
1776
+ Object.keys(object).forEach((key) => {
1777
+ if (typeof object[key] === 'object') {
1778
+ const serializedObject = !isEmptyObject(object[key])
1779
+ ? JSON.stringify(object[key])
1780
+ : '';
1781
+ serialized += serializedObject ? `${key}=${serializedObject}&` : '';
1840
1782
  }
1841
- }
1842
- fillFilter() {
1843
- var _a, _b;
1844
- if (!this.filter) {
1845
- return;
1783
+ else {
1784
+ serialized +=
1785
+ object[key] || object[key] === 0 ? `${key}=${object[key]}&` : '';
1846
1786
  }
1847
- (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
1848
- element.filter = Object.assign(Object.assign({}, element.filter), { value: null, values: null });
1849
- });
1850
- (_b = this.filter.customFilters) === null || _b === void 0 ? void 0 : _b.forEach((filter) => {
1851
- var _a;
1852
- const element = (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.find((x) => x.filter.field === filter.field &&
1853
- x.filter.filterTarget === filter.filterTarget);
1854
- if (element) {
1855
- element.filter = Object.assign({}, filter);
1856
- }
1857
- });
1858
- }
1859
- setCustomFilters() {
1860
- var _a, _b;
1861
- (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
1862
- var _a;
1863
- const index = (_a = this.filter.customFilters) === null || _a === void 0 ? void 0 : _a.findIndex((x) => x.field === element.filter.field);
1864
- if (index !== -1) {
1865
- this.filter.customFilters.splice(index, 1);
1866
- }
1867
- });
1868
- (_b = this.customFilterElements) === null || _b === void 0 ? void 0 : _b.forEach((element) => this.filter.customFilters.push(element.filter));
1869
- }
1870
- fixMultiselectFilters() {
1871
- var _a;
1872
- const multiSelectFilters = (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.map((element) => {
1873
- if (element.fieldType === FieldTypes.Multiselect) {
1874
- return element.filter;
1875
- }
1876
- });
1877
- if (multiSelectFilters) {
1878
- multiSelectFilters.forEach((filter) => {
1879
- if (filter === null || filter === void 0 ? void 0 : filter.value) {
1880
- filter.values = [filter.value];
1881
- filter.value = null;
1882
- }
1883
- });
1787
+ });
1788
+ return serialized.slice(0, -1);
1789
+ };
1790
+ const isEmptyObject = (object) => {
1791
+ return object === null || Object.keys(object).length === 0;
1792
+ };
1793
+ const isDate = (date) => isNaN(date) && !isNaN(Date.parse(date));
1794
+ const urlDeserialize = (params) => {
1795
+ const deserialized = {};
1796
+ params.forEach((param, key) => {
1797
+ if (key === 'sort' || key === 'group') {
1798
+ deserialized[key] = JSON.parse(param);
1884
1799
  }
1885
- }
1886
- changeFilter() {
1887
- this.fillFilter();
1888
- this.fixMultiselectFilters();
1889
- this.emitChangeEvents();
1890
- }
1891
- emitChangeEvents() {
1892
- var _a;
1893
- (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
1894
- var _a;
1895
- if (element.filter.value || element.filter.values) {
1896
- this.fieldChange((_a = element.filter.value) !== null && _a !== void 0 ? _a : element.filter.values, element);
1800
+ else if (key === 'filter') {
1801
+ deserialized[key] = transformFilter(JSON.parse(param));
1802
+ }
1803
+ else {
1804
+ deserialized[key] = param;
1805
+ }
1806
+ });
1807
+ return deserialized;
1808
+ };
1809
+ function transformFilter(gridFilter) {
1810
+ transformFilters(gridFilter);
1811
+ return gridFilter;
1812
+ }
1813
+ function transformFilters(gridFilter) {
1814
+ if (gridFilter.filters.length) {
1815
+ gridFilter.filters.forEach((filter) => {
1816
+ let filterDescriptor = filter;
1817
+ filterDescriptor.value = isDate(filterDescriptor.value)
1818
+ ? new Date(filterDescriptor.value)
1819
+ : filterDescriptor.value;
1820
+ let compositeFilterDescriptor = filter;
1821
+ if (compositeFilterDescriptor.filters) {
1822
+ transformFilters(compositeFilterDescriptor);
1897
1823
  }
1898
1824
  });
1899
1825
  }
1900
1826
  }
1901
- ActivityFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ActivityFilterComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
1902
- ActivityFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: ActivityFilterComponent, selector: "activity-filter", inputs: { showArchiveSwitcher: "showArchiveSwitcher", showSearhText: "showSearhText", customFilterElements: "customFilterElements", filterService: "filterService" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"header-selection-field activity-filter\">\n <div class=\"filter-row\">\n <div>\n <label for=\"datefrom\" class=\"title-field\">\n <span>{{ 'ActivitiesFilter.DateFrom' | translate }}:</span>\n <div>\n <kendo-datetimepicker\n format=\"dd/MM/yyyy HH:mm\"\n [(value)]=\"filter.dateFrom\"\n ></kendo-datetimepicker>\n </div>\n </label>\n </div>\n <div>\n <label for=\"dateto\" class=\"title-field\">\n <span>{{ 'ActivitiesFilter.DateTo' | translate }}:</span>\n <div>\n <kendo-datetimepicker\n format=\"dd/MM/yyyy HH:mm\"\n [(value)]=\"filter.dateTo\"\n ></kendo-datetimepicker>\n </div>\n </label>\n </div>\n <div>\n <label class=\"title-field\">\n <span class=\"link-button\" (click)=\"setTodayFilter()\">\n {{ 'ActivitiesFilter.FilterToday' | translate }}\n </span>\n </label>\n </div>\n <div class=\"filter-row\">\n <div class=\"flag\" *ngIf=\"showArchiveSwitcher\">\n <div class=\"checkbox\">\n <label>\n <input [(ngModel)]=\"filter.switchToArchive\" type=\"checkbox\" />\n {{ 'ActivitiesFilter.SwitchToArchiveLabel' | translate }}\n </label>\n </div>\n </div>\n <div *ngIf=\"showSearhText\">\n <label class=\"title-field\">\n <span>{{ 'ActivitiesFilter.SearchLabel' | translate }}:</span>\n </label>\n <input\n type=\"text\"\n k-input\n class=\"input k-input searchtext-input\"\n [(ngModel)]=\"filter.searchText\"\n (keyup.enter)=\"applyFilter()\"\n [disabled]=\"filter.switchToArchive\"\n />\n </div>\n </div>\n </div>\n <div class=\"filter-row\">\n <ng-container *ngFor=\"let field of customFilterElements\">\n <ng-container [ngSwitch]=\"field.fieldType\">\n <ng-template [ngSwitchCase]=\"FieldTypes.Text\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <input\n type=\"text\"\n class=\"input k-input\"\n [(ngModel)]=\"field.filter.value\"\n [placeholder]=\"field.placeholder | translate\"\n />\n </div>\n </label>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Dropdown\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <kendo-dropdownlist\n [data]=\"field.data\"\n textField=\"name\"\n [valueField]=\"field.valueField\"\n [defaultItem]=\"defaultNamedModel\"\n [(ngModel)]=\"field.filter.value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"fieldChange($event, field)\"\n ></kendo-dropdownlist>\n </div>\n </label>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Checkbox\">\n <div class=\"flag\">\n <div class=\"checkbox\">\n <label>\n <input [(ngModel)]=\"field.filter.value\" type=\"checkbox\" />\n {{ field.title | translate }}\n </label>\n </div>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Multiselect\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <kendo-multiselect\n kendoMultiSelectSummaryTag\n [autoClose]=\"false\"\n [data]=\"field.data\"\n [(ngModel)]=\"field.filter.values\"\n textField=\"name\"\n [valueField]=\"field.valueField\"\n [valuePrimitive]=\"true\"\n [placeholder]=\"field.placeholder | translate\"\n (valueChange)=\"fieldChange($event, field)\"\n ></kendo-multiselect>\n </div>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <button class=\"btn btn-inverse\" (click)=\"applyFilter()\">\n {{ 'Buttons.Apply' | translate }}\n </button>\n <button class=\"btn btn-inverse\" (click)=\"clearFilter()\">\n {{ 'Buttons.Clear' | translate }}\n </button>\n </div>\n </div>\n</div>\n<current-timezone></current-timezone>\n", styles: ["::ng-deep .filter-row{display:flex;flex-flow:row wrap;margin-bottom:20px}::ng-deep .filter-row>div{margin:0 10px 30px 5px;min-width:100px}::ng-deep .filter-row .title-field{margin:0;width:100%}::ng-deep .filter-row .flag{margin-top:10px!important}\n"], components: [{ type: i2$3.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["twoDigitYearMax", "focusableId", "title", "disabled", "readonly", "readOnlyInput", "cancelButton", "steps", "calendarType", "animateCalendarNavigation", "weekNumber", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "value", "format", "tabindex", "disabledDates", "popupSettings", "min", "max", "defaultTab", "size", "rounded", "fillMode", "formatPlaceholder", "placeholder", "focusedDate"], outputs: ["valueChange", "open", "close", "focus", "blur"], exportAs: ["kendo-datetimepicker"] }, { type: i3$3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["listHeight", "disabled", "readonly", "filterable", "ignoreCase", "delay", "tabindex", "id", "data", "value", "popupSettings", "itemDisabled", "virtual", "valuePrimitive", "tabIndex", "size", "rounded", "fillMode", "iconClass", "loading", "textField", "valueField", "defaultItem"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i3$3.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "tabindex", "disabled", "readonly", "filterable", "listHeight", "clearButton", "tagMapper", "allowCustom", "valueNormalizer", "data", "value", "tabIndex", "size", "rounded", "fillMode", "placeholder", "itemDisabled", "checkboxes", "virtual", "popupSettings", "valuePrimitive", "loading", "valueField", "textField"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }, { type: CurrentTimezoneComponent, selector: "current-timezone" }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3$3.SummaryTagDirective, selector: "[kendoMultiSelectSummaryTag]", inputs: ["kendoMultiSelectSummaryTag"] }], pipes: { "translate": i1.TranslatePipe } });
1903
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ActivityFilterComponent, decorators: [{
1827
+
1828
+ class ExcelExportButtonComponent {
1829
+ }
1830
+ ExcelExportButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ExcelExportButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1831
+ ExcelExportButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: ExcelExportButtonComponent, selector: "excel-export-button", ngImport: i0, template: "<button type=\"button\" kendoGridExcelCommand>\n <em ngClass=\"fa fa-file-excel-o\"></em>\n {{ 'Buttons.ExcelExport' | translate }}\n</button>\n", styles: [""], directives: [{ type: i3$3.ExcelCommandDirective, selector: "[kendoGridExcelCommand]" }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i1.TranslatePipe } });
1832
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ExcelExportButtonComponent, decorators: [{
1904
1833
  type: Component,
1905
- args: [{ selector: 'activity-filter', template: "<div class=\"header-selection-field activity-filter\">\n <div class=\"filter-row\">\n <div>\n <label for=\"datefrom\" class=\"title-field\">\n <span>{{ 'ActivitiesFilter.DateFrom' | translate }}:</span>\n <div>\n <kendo-datetimepicker\n format=\"dd/MM/yyyy HH:mm\"\n [(value)]=\"filter.dateFrom\"\n ></kendo-datetimepicker>\n </div>\n </label>\n </div>\n <div>\n <label for=\"dateto\" class=\"title-field\">\n <span>{{ 'ActivitiesFilter.DateTo' | translate }}:</span>\n <div>\n <kendo-datetimepicker\n format=\"dd/MM/yyyy HH:mm\"\n [(value)]=\"filter.dateTo\"\n ></kendo-datetimepicker>\n </div>\n </label>\n </div>\n <div>\n <label class=\"title-field\">\n <span class=\"link-button\" (click)=\"setTodayFilter()\">\n {{ 'ActivitiesFilter.FilterToday' | translate }}\n </span>\n </label>\n </div>\n <div class=\"filter-row\">\n <div class=\"flag\" *ngIf=\"showArchiveSwitcher\">\n <div class=\"checkbox\">\n <label>\n <input [(ngModel)]=\"filter.switchToArchive\" type=\"checkbox\" />\n {{ 'ActivitiesFilter.SwitchToArchiveLabel' | translate }}\n </label>\n </div>\n </div>\n <div *ngIf=\"showSearhText\">\n <label class=\"title-field\">\n <span>{{ 'ActivitiesFilter.SearchLabel' | translate }}:</span>\n </label>\n <input\n type=\"text\"\n k-input\n class=\"input k-input searchtext-input\"\n [(ngModel)]=\"filter.searchText\"\n (keyup.enter)=\"applyFilter()\"\n [disabled]=\"filter.switchToArchive\"\n />\n </div>\n </div>\n </div>\n <div class=\"filter-row\">\n <ng-container *ngFor=\"let field of customFilterElements\">\n <ng-container [ngSwitch]=\"field.fieldType\">\n <ng-template [ngSwitchCase]=\"FieldTypes.Text\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <input\n type=\"text\"\n class=\"input k-input\"\n [(ngModel)]=\"field.filter.value\"\n [placeholder]=\"field.placeholder | translate\"\n />\n </div>\n </label>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Dropdown\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <kendo-dropdownlist\n [data]=\"field.data\"\n textField=\"name\"\n [valueField]=\"field.valueField\"\n [defaultItem]=\"defaultNamedModel\"\n [(ngModel)]=\"field.filter.value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"fieldChange($event, field)\"\n ></kendo-dropdownlist>\n </div>\n </label>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Checkbox\">\n <div class=\"flag\">\n <div class=\"checkbox\">\n <label>\n <input [(ngModel)]=\"field.filter.value\" type=\"checkbox\" />\n {{ field.title | translate }}\n </label>\n </div>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Multiselect\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <kendo-multiselect\n kendoMultiSelectSummaryTag\n [autoClose]=\"false\"\n [data]=\"field.data\"\n [(ngModel)]=\"field.filter.values\"\n textField=\"name\"\n [valueField]=\"field.valueField\"\n [valuePrimitive]=\"true\"\n [placeholder]=\"field.placeholder | translate\"\n (valueChange)=\"fieldChange($event, field)\"\n ></kendo-multiselect>\n </div>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <button class=\"btn btn-inverse\" (click)=\"applyFilter()\">\n {{ 'Buttons.Apply' | translate }}\n </button>\n <button class=\"btn btn-inverse\" (click)=\"clearFilter()\">\n {{ 'Buttons.Clear' | translate }}\n </button>\n </div>\n </div>\n</div>\n<current-timezone></current-timezone>\n", styles: ["::ng-deep .filter-row{display:flex;flex-flow:row wrap;margin-bottom:20px}::ng-deep .filter-row>div{margin:0 10px 30px 5px;min-width:100px}::ng-deep .filter-row .title-field{margin:0;width:100%}::ng-deep .filter-row .flag{margin-top:10px!important}\n"] }]
1906
- }], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { showArchiveSwitcher: [{
1907
- type: Input
1908
- }], showSearhText: [{
1909
- type: Input
1910
- }], customFilterElements: [{
1911
- type: Input
1912
- }], filterService: [{
1913
- type: Input
1914
- }] } });
1834
+ args: [{ selector: 'excel-export-button', template: "<button type=\"button\" kendoGridExcelCommand>\n <em ngClass=\"fa fa-file-excel-o\"></em>\n {{ 'Buttons.ExcelExport' | translate }}\n</button>\n", styles: [""] }]
1835
+ }] });
1915
1836
 
1916
1837
  class ConfirmDialogComponent {
1917
1838
  constructor(dialogService) {
@@ -1934,7 +1855,7 @@ class ConfirmDialogComponent {
1934
1855
  }
1935
1856
  }
1936
1857
  ConfirmDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: i2$2.DialogService }], target: i0.ɵɵFactoryTarget.Component });
1937
- ConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: ConfirmDialogComponent, selector: "confirm-dialog", viewQueries: [{ propertyName: "dialogActions", first: true, predicate: ["dialogActions"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #dialogActions>\n <button kendoButton (click)=\"cancel()\" translate=\"Cancel\"></button>\n <button kendoButton (click)=\"confirm()\" translate=\"Confirm\"></button>\n</ng-template>\n<div kendoDialogContainer></div>\n", styles: [""], directives: [{ type: i2$4.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "role", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "shape", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i2$2.DialogContainerDirective, selector: "[kendoDialogContainer]" }] });
1858
+ ConfirmDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: ConfirmDialogComponent, selector: "confirm-dialog", viewQueries: [{ propertyName: "dialogActions", first: true, predicate: ["dialogActions"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #dialogActions>\n <button kendoButton (click)=\"cancel()\" translate=\"Cancel\"></button>\n <button kendoButton (click)=\"confirm()\" translate=\"Confirm\"></button>\n</ng-template>\n<div kendoDialogContainer></div>\n", styles: [""], directives: [{ type: i2$3.ButtonDirective, selector: "button[kendoButton], span[kendoButton]", inputs: ["toggleable", "role", "togglable", "selected", "tabIndex", "icon", "iconClass", "imageUrl", "disabled", "size", "rounded", "fillMode", "themeColor", "shape", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i2$2.DialogContainerDirective, selector: "[kendoDialogContainer]" }] });
1938
1859
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
1939
1860
  type: Component,
1940
1861
  args: [{ selector: 'confirm-dialog', template: "<ng-template #dialogActions>\n <button kendoButton (click)=\"cancel()\" translate=\"Cancel\"></button>\n <button kendoButton (click)=\"confirm()\" translate=\"Confirm\"></button>\n</ng-template>\n<div kendoDialogContainer></div>\n", styles: [""] }]
@@ -1943,221 +1864,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
1943
1864
  args: ['dialogActions', { static: true }]
1944
1865
  }] } });
1945
1866
 
1946
- class EntityEditButtonsBarComponent {
1947
- constructor() {
1948
- this.save = new EventEmitter();
1949
- }
1950
- }
1951
- EntityEditButtonsBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityEditButtonsBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1952
- EntityEditButtonsBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: EntityEditButtonsBarComponent, selector: "entity-edit-buttons-bar", inputs: { valid: "valid" }, outputs: { save: "save" }, ngImport: i0, template: "<div class=\"form-group buttons-panel\">\n <div class=\"col-md-4\">\n <a\n [routerLink]=\"['../new']\"\n preserveFragment\n class=\"btn btn-succes\"\n translate=\"CreateNew\"\n requirePermission\n permissionType=\"Create\"\n >\n </a>\n </div>\n <div class=\"col-md-8 text-right\">\n <a\n [routerLink]=\"['../']\"\n preserveFragment\n class=\"btn btn-inverse\"\n translate=\"Cancel\"\n ></a>\n <button\n type=\"submit\"\n class=\"btn btn-success\"\n (click)=\"save.emit()\"\n translate=\"Save\"\n [disabled]=\"!valid\"\n requirePermission\n [permissionType]=\"['Edit', 'Create']\"\n ></button>\n </div>\n</div>\n", styles: [""], directives: [{ type: i1$4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: RequirePermissionDirective, selector: "[requirePermission]", inputs: ["permissionType", "permissionCategory"] }] });
1953
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityEditButtonsBarComponent, decorators: [{
1954
- type: Component,
1955
- args: [{ selector: 'entity-edit-buttons-bar', template: "<div class=\"form-group buttons-panel\">\n <div class=\"col-md-4\">\n <a\n [routerLink]=\"['../new']\"\n preserveFragment\n class=\"btn btn-succes\"\n translate=\"CreateNew\"\n requirePermission\n permissionType=\"Create\"\n >\n </a>\n </div>\n <div class=\"col-md-8 text-right\">\n <a\n [routerLink]=\"['../']\"\n preserveFragment\n class=\"btn btn-inverse\"\n translate=\"Cancel\"\n ></a>\n <button\n type=\"submit\"\n class=\"btn btn-success\"\n (click)=\"save.emit()\"\n translate=\"Save\"\n [disabled]=\"!valid\"\n requirePermission\n [permissionType]=\"['Edit', 'Create']\"\n ></button>\n </div>\n</div>\n", styles: [""] }]
1956
- }], propDecorators: { valid: [{
1957
- type: Input
1958
- }], save: [{
1959
- type: Output
1960
- }] } });
1961
-
1962
- class EntityEditFormComponent {
1963
- constructor(route) {
1964
- this.route = route;
1965
- this.saveInProgress = false;
1966
- }
1967
- ngOnInit() {
1968
- this.route.params.subscribe((params) => {
1969
- this.formGroup = null;
1970
- const formGroup = new FormGroupWithErrors({});
1971
- if (params.id) {
1972
- this.adapter
1973
- .getService()
1974
- .get(params.id)
1975
- .subscribe((model) => {
1976
- formGroup.addControl('id', new FormControl(model.id));
1977
- for (const key of Object.keys(model)) {
1978
- formGroup.addControl(key, new FormControl(model[key]));
1979
- }
1980
- this.adapter.setForm(formGroup);
1981
- this.formGroup = formGroup;
1982
- });
1983
- }
1984
- else {
1985
- this.adapter.setForm(formGroup);
1986
- this.formGroup = formGroup;
1987
- }
1988
- });
1989
- }
1990
- save() {
1991
- this.saveInProgress = true;
1992
- this.adapter
1993
- .getService()
1994
- .save(this.adapter.getValue())
1995
- .pipe(finalize(() => (this.saveInProgress = false)))
1996
- .subscribe((result) => {
1997
- this.adapter.onSaved(result);
1998
- }, (error) => {
1999
- this.formGroup.applyServerErrors(error.error, this.formGroup);
2000
- this.generalErrors.setErrors(this.formGroup.generalErrors);
2001
- });
2002
- }
2003
- }
2004
- EntityEditFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityEditFormComponent, deps: [{ token: i1$4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
2005
- EntityEditFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: EntityEditFormComponent, selector: "entity-edit-form", inputs: { title: "title", adapter: "adapter" }, viewQueries: [{ propertyName: "generalErrors", first: true, predicate: ["general_errors"], descendants: true }], ngImport: i0, template: "<div class=\"col-md-8\">\n <header class=\"header-page-bg\">\n <h4>{{ title | translate }}</h4>\n </header>\n <div class=\"panel editor-area hero-unit\">\n <form\n class=\"form-horizontal\"\n [formGroup]=\"formGroup\"\n novalidate\n autocomplete=\"off\"\n *ngIf=\"formGroup\"\n >\n <div class=\"col-md-3\"></div>\n <div class=\"col-md-9\">\n <app-general-errors\n #general_errors\n [form]=\"formGroup\"\n ></app-general-errors>\n </div>\n <ng-content></ng-content>\n <entity-edit-buttons-bar\n (save)=\"save()\"\n [valid]=\"formGroup.valid && formGroup.dirty && !saveInProgress\"\n >\n </entity-edit-buttons-bar>\n </form>\n </div>\n</div>\n", styles: [""], components: [{ type: GeneralErrorsComponent, selector: "app-general-errors", inputs: ["form"] }, { type: EntityEditButtonsBarComponent, selector: "entity-edit-buttons-bar", inputs: ["valid"], outputs: ["save"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], pipes: { "translate": i1.TranslatePipe } });
2006
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityEditFormComponent, decorators: [{
2007
- type: Component,
2008
- args: [{ selector: 'entity-edit-form', template: "<div class=\"col-md-8\">\n <header class=\"header-page-bg\">\n <h4>{{ title | translate }}</h4>\n </header>\n <div class=\"panel editor-area hero-unit\">\n <form\n class=\"form-horizontal\"\n [formGroup]=\"formGroup\"\n novalidate\n autocomplete=\"off\"\n *ngIf=\"formGroup\"\n >\n <div class=\"col-md-3\"></div>\n <div class=\"col-md-9\">\n <app-general-errors\n #general_errors\n [form]=\"formGroup\"\n ></app-general-errors>\n </div>\n <ng-content></ng-content>\n <entity-edit-buttons-bar\n (save)=\"save()\"\n [valid]=\"formGroup.valid && formGroup.dirty && !saveInProgress\"\n >\n </entity-edit-buttons-bar>\n </form>\n </div>\n</div>\n", styles: [""] }]
2009
- }], ctorParameters: function () { return [{ type: i1$4.ActivatedRoute }]; }, propDecorators: { generalErrors: [{
2010
- type: ViewChild,
2011
- args: ['general_errors']
2012
- }], title: [{
2013
- type: Input
2014
- }], adapter: [{
2015
- type: Input
2016
- }] } });
2017
-
2018
- class FieldDropdownComponent extends FieldComponent {
2019
- constructor(parent, eref) {
2020
- super(parent, eref, '');
2021
- this.parent = parent;
2022
- this.eref = eref;
2023
- this.data = [];
2024
- }
2025
- get control() {
2026
- return this.parent.form.get(this.fieldName);
2027
- }
2028
- ngOnChanges() {
2029
- return __awaiter(this, void 0, void 0, function* () {
2030
- yield this.getData();
2031
- this.control.setValue((this.data.find((d) => d.id === this.control.value) || this.data[0]).id);
2032
- });
2033
- }
2034
- getData() {
2035
- this.service
2036
- .getPage(this.filter ? { filter: this.filter } : {})
2037
- .subscribe((data) => (this.data = data.data));
2038
- }
2039
- }
2040
- FieldDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldDropdownComponent, deps: [{ token: i1$3.FormGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2041
- FieldDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: FieldDropdownComponent, selector: "field-dropdown", inputs: { service: "service", rebind: "rebind", filter: "filter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data\"\n textField=\"name\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\n <span *ngIf=\"control.errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">{{\n control.errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", styles: [""], components: [{ type: i3$3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["listHeight", "disabled", "readonly", "filterable", "ignoreCase", "delay", "tabindex", "id", "data", "value", "popupSettings", "itemDisabled", "virtual", "valuePrimitive", "tabIndex", "size", "rounded", "fillMode", "iconClass", "loading", "textField", "valueField", "defaultItem"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": i1.TranslatePipe }, viewProviders: [
2042
- { provide: ControlContainer, useExisting: FormGroupDirective },
2043
- ] });
2044
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldDropdownComponent, decorators: [{
2045
- type: Component,
2046
- args: [{ selector: 'field-dropdown', viewProviders: [
2047
- { provide: ControlContainer, useExisting: FormGroupDirective },
2048
- ], template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data\"\n textField=\"name\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\n <span *ngIf=\"control.errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">{{\n control.errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", styles: [""] }]
2049
- }], ctorParameters: function () { return [{ type: i1$3.FormGroupDirective }, { type: i0.ElementRef }]; }, propDecorators: { service: [{
2050
- type: Input
2051
- }], rebind: [{
2052
- type: Input
2053
- }], filter: [{
2054
- type: Input
2055
- }] } });
2056
-
2057
- class FieldMultiSelectComponent extends FieldComponent {
2058
- constructor(parent, eref) {
2059
- super(parent, eref, []);
2060
- this.parent = parent;
2061
- this.eref = eref;
2062
- this.data = [];
2063
- }
2064
- get control() {
2065
- return this.parent.form.get(this.fieldName);
2066
- }
2067
- ngOnChanges() {
2068
- this.getData().subscribe((data) => {
2069
- this.data = data.data;
2070
- this.control.setValue(this.control.value.filter((x) => this.data.filter((d) => d.id === x).length));
2071
- });
2072
- }
2073
- getData() {
2074
- return this.service.getPage(this.filter ? { filter: this.filter } : {});
2075
- }
2076
- }
2077
- FieldMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldMultiSelectComponent, deps: [{ token: i1$3.FormGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2078
- FieldMultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: FieldMultiSelectComponent, selector: "field-multiselect", inputs: { service: "service", rebind: "rebind", filter: "filter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-multiselect\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data\"\n [autoClose]=\"false\"\n textField=\"name\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n >\n </kendo-multiselect>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\n <span *ngIf=\"control.errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">{{\n control.errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", styles: [""], components: [{ type: i3$3.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "tabindex", "disabled", "readonly", "filterable", "listHeight", "clearButton", "tagMapper", "allowCustom", "valueNormalizer", "data", "value", "tabIndex", "size", "rounded", "fillMode", "placeholder", "itemDisabled", "checkboxes", "virtual", "popupSettings", "valuePrimitive", "loading", "valueField", "textField"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": i1.TranslatePipe }, viewProviders: [
2079
- { provide: ControlContainer, useExisting: FormGroupDirective },
2080
- ] });
2081
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldMultiSelectComponent, decorators: [{
2082
- type: Component,
2083
- args: [{ selector: 'field-multiselect', viewProviders: [
2084
- { provide: ControlContainer, useExisting: FormGroupDirective },
2085
- ], template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-multiselect\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data\"\n [autoClose]=\"false\"\n textField=\"name\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n >\n </kendo-multiselect>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\n <span *ngIf=\"control.errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">{{\n control.errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", styles: [""] }]
2086
- }], ctorParameters: function () { return [{ type: i1$3.FormGroupDirective }, { type: i0.ElementRef }]; }, propDecorators: { service: [{
2087
- type: Input
2088
- }], rebind: [{
2089
- type: Input
2090
- }], filter: [{
2091
- type: Input
2092
- }] } });
2093
-
2094
- const urlSerialize = (object) => {
2095
- let serialized = '';
2096
- Object.keys(object).forEach((key) => {
2097
- if (typeof object[key] === 'object') {
2098
- const serializedObject = !isEmptyObject(object[key])
2099
- ? JSON.stringify(object[key])
2100
- : '';
2101
- serialized += serializedObject ? `${key}=${serializedObject}&` : '';
2102
- }
2103
- else {
2104
- serialized +=
2105
- object[key] || object[key] === 0 ? `${key}=${object[key]}&` : '';
2106
- }
2107
- });
2108
- return serialized.slice(0, -1);
2109
- };
2110
- const isEmptyObject = (object) => {
2111
- return object === null || Object.keys(object).length === 0;
2112
- };
2113
- const isDate = (date) => isNaN(date) && !isNaN(Date.parse(date));
2114
- const urlDeserialize = (params) => {
2115
- const deserialized = {};
2116
- params.forEach((param, key) => {
2117
- if (key === 'sort' || key === 'group') {
2118
- deserialized[key] = JSON.parse(param);
2119
- }
2120
- else if (key === 'filter') {
2121
- deserialized[key] = transformFilter(JSON.parse(param));
2122
- }
2123
- else {
2124
- deserialized[key] = param;
2125
- }
2126
- });
2127
- return deserialized;
2128
- };
2129
- function transformFilter(gridFilter) {
2130
- transformFilters(gridFilter);
2131
- return gridFilter;
2132
- }
2133
- function transformFilters(gridFilter) {
2134
- if (gridFilter.filters.length) {
2135
- gridFilter.filters.forEach((filter) => {
2136
- let filterDescriptor = filter;
2137
- filterDescriptor.value = isDate(filterDescriptor.value)
2138
- ? new Date(filterDescriptor.value)
2139
- : filterDescriptor.value;
2140
- let compositeFilterDescriptor = filter;
2141
- if (compositeFilterDescriptor.filters) {
2142
- transformFilters(compositeFilterDescriptor);
2143
- }
2144
- });
2145
- }
2146
- }
2147
-
2148
- class ExcelExportButtonComponent {
2149
- }
2150
- ExcelExportButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ExcelExportButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2151
- ExcelExportButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: ExcelExportButtonComponent, selector: "excel-export-button", ngImport: i0, template: "<button type=\"button\" kendoGridExcelCommand>\n <em ngClass=\"fa fa-file-excel-o\"></em>\n {{ 'Buttons.ExcelExport' | translate }}\n</button>\n", styles: [""], directives: [{ type: i3$4.ExcelCommandDirective, selector: "[kendoGridExcelCommand]" }, { type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i1.TranslatePipe } });
2152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ExcelExportButtonComponent, decorators: [{
2153
- type: Component,
2154
- args: [{ selector: 'excel-export-button', template: "<button type=\"button\" kendoGridExcelCommand>\n <em ngClass=\"fa fa-file-excel-o\"></em>\n {{ 'Buttons.ExcelExport' | translate }}\n</button>\n", styles: [""] }]
2155
- }] });
2156
-
2157
- const nameField = 'name';
2158
- class EntityListComponent {
2159
- constructor(translate, route, router) {
2160
- this.translate = translate;
1867
+ const nameField = 'name';
1868
+ class EntityListComponent {
1869
+ constructor(translate, route, router) {
1870
+ this.translate = translate;
2161
1871
  this.route = route;
2162
1872
  this.router = router;
2163
1873
  this.filterChange = new EventEmitter();
@@ -2270,83 +1980,429 @@ class EntityListComponent {
2270
1980
  preserveFragment: true,
2271
1981
  });
2272
1982
  }
2273
- remove(entity) {
2274
- return __awaiter(this, void 0, void 0, function* () {
2275
- this.loadings++;
2276
- this.service.delete(entity.id).subscribe(() => {
2277
- if (this.selected.length &&
2278
- this.selected[this.selected.length - 1] === entity.id) {
2279
- this.router.navigate(['../'], {
2280
- preserveFragment: true,
2281
- relativeTo: this.route.firstChild,
2282
- });
1983
+ getData() {
1984
+ this.loadings++;
1985
+ this.service.getPage(this.gridState).subscribe((page) => {
1986
+ this.page = page;
1987
+ this.loadings--;
1988
+ });
1989
+ }
1990
+ remove(entity) {
1991
+ return __awaiter(this, void 0, void 0, function* () {
1992
+ this.loadings++;
1993
+ this.service.delete(entity.id).subscribe(() => {
1994
+ if (this.selected.length &&
1995
+ this.selected[this.selected.length - 1] === entity.id) {
1996
+ this.router.navigate(['../'], {
1997
+ preserveFragment: true,
1998
+ relativeTo: this.route.firstChild,
1999
+ });
2000
+ }
2001
+ this.loadings--;
2002
+ });
2003
+ this.getData();
2004
+ });
2005
+ }
2006
+ getFilter() {
2007
+ const filter = {
2008
+ logic: 'and',
2009
+ filters: this.searchTerm
2010
+ ? [
2011
+ { field: nameField, operator: 'contains', value: this.searchTerm },
2012
+ ...this.filters,
2013
+ ]
2014
+ : this.filters,
2015
+ };
2016
+ return filter;
2017
+ }
2018
+ onFilterChange() {
2019
+ var _a;
2020
+ const filter = (_a = this.gridState.filter) === null || _a === void 0 ? void 0 : _a.filters.find((x) => x.field === nameField);
2021
+ this.searchTerm = filter === null || filter === void 0 ? void 0 : filter.value;
2022
+ this.filterChange.emit(this.gridState.filter);
2023
+ }
2024
+ restoreGridState(params) {
2025
+ return __awaiter(this, void 0, void 0, function* () {
2026
+ const defaultGridState = {
2027
+ sort: this.defaultSort || [{ field: nameField, dir: 'asc' }],
2028
+ skip: 0,
2029
+ take: 10,
2030
+ };
2031
+ const state = urlDeserialize(params);
2032
+ this.gridState = state.hasOwnProperty('take') ? state : defaultGridState;
2033
+ this.onFilterChange();
2034
+ this.getData();
2035
+ });
2036
+ }
2037
+ }
2038
+ EntityListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityListComponent, deps: [{ token: i1.TranslateService }, { token: i1$4.ActivatedRoute }, { token: i1$4.Router }], target: i0.ɵɵFactoryTarget.Component });
2039
+ EntityListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: EntityListComponent, selector: "entity-list", inputs: { service: "service", filters: "filters", fields: "fields", commands: "commands", rowClass: "rowClass", defaultSort: "defaultSort" }, outputs: { filterChange: "filterChange" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["confirmDialog"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\" translate=\"Search\"></label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel [fetchData]=\"getAllData\"></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate>\n <button\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <i class=\"k-icon glyphicon glyphicon-trash\"></i>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <i *ngIf=\"command.iconClass\" class=\"{{ command.iconClass }}\"></i>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ 'Messages.NoRecords' | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"10\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", styles: [""], components: [{ type: i3$3.GridComponent, selector: "kendo-grid", inputs: ["data", "scrollable", "selectable", "trackBy", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "navigable", "autoSize", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "skip", "sort", "group", "navigatable", "rowClass", "rowSticky", "rowSelected", "cellSelected", "isDetailExpanded", "isGroupExpanded", "pageSize", "height", "rowHeight", "detailRowHeight", "filter"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { type: ExcelExportButtonComponent, selector: "excel-export-button" }, { type: i3$3.ExcelComponent, selector: "kendo-grid-excel", inputs: ["fileName", "filterable", "creator", "date", "forceProxy", "proxyURL", "fetchData", "paddingCellOptions", "headerPaddingCellOptions", "collapsible"] }, { type: i3$3.CommandColumnComponent, selector: "kendo-grid-command-column" }, { type: i3$3.ColumnComponent, selector: "kendo-grid-column", inputs: ["sortable", "groupable", "editor", "filter", "filterable", "editable", "field", "format"] }, { type: i3$3.GridSpacerComponent, selector: "kendo-grid-spacer, kendo-pager-spacer", inputs: ["width"] }, { type: i3$3.PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons" }, { type: i3$3.PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: ["buttonCount"] }, { type: i3$3.PagerNextButtonsComponent, selector: "kendo-pager-next-buttons" }, { type: i3$3.PagerInfoComponent, selector: "kendo-pager-info" }, { type: ConfirmDialogComponent, selector: "confirm-dialog" }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i6.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: DebounceDirective, selector: "[appDebounce]", inputs: ["debounceTime"], outputs: ["debounceKeyup"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3$3.SelectionDirective, selector: "[kendoGridSelectBy]" }, { type: i3$3.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { type: i3$3.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { type: i3$3.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { type: i3$3.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { type: RequirePermissionDirective, selector: "[requirePermission]", inputs: ["permissionType", "permissionCategory"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$3.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { type: i3$3.PagerTemplateDirective, selector: "[kendoPagerTemplate]" }, { type: i1$4.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "translate": i1.TranslatePipe } });
2040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityListComponent, decorators: [{
2041
+ type: Component,
2042
+ args: [{ selector: 'entity-list', template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\" translate=\"Search\"></label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel [fetchData]=\"getAllData\"></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate>\n <button\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <i class=\"k-icon glyphicon glyphicon-trash\"></i>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <i *ngIf=\"command.iconClass\" class=\"{{ command.iconClass }}\"></i>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ 'Messages.NoRecords' | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"10\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", styles: [""] }]
2043
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i1$4.ActivatedRoute }, { type: i1$4.Router }]; }, propDecorators: { service: [{
2044
+ type: Input
2045
+ }], filters: [{
2046
+ type: Input
2047
+ }], fields: [{
2048
+ type: Input
2049
+ }], commands: [{
2050
+ type: Input
2051
+ }], rowClass: [{
2052
+ type: Input
2053
+ }], defaultSort: [{
2054
+ type: Input
2055
+ }], filterChange: [{
2056
+ type: Output
2057
+ }], dialog: [{
2058
+ type: ViewChild,
2059
+ args: ['confirmDialog', { static: true }]
2060
+ }] } });
2061
+
2062
+ class UserListAdminComponent extends EntityListComponent {
2063
+ constructor(translate, route, router, partnerService) {
2064
+ super(translate, route, router);
2065
+ this.partnerService = partnerService;
2066
+ }
2067
+ onActivate(child) {
2068
+ if (child.saved) {
2069
+ child.saved.subscribe((data) => this.partnerService
2070
+ .get(data.partnerId)
2071
+ .subscribe((partner) => {
2072
+ data.partnerName = partner.name;
2073
+ this.updateGrid(data);
2074
+ }));
2075
+ }
2076
+ }
2077
+ }
2078
+ UserListAdminComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: UserListAdminComponent, deps: [{ token: i1.TranslateService }, { token: i1$4.ActivatedRoute }, { token: i1$4.Router }, { token: PartnerService }], target: i0.ɵɵFactoryTarget.Component });
2079
+ UserListAdminComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: UserListAdminComponent, selector: "lib-user-list-admin", providers: [PartnerService], usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\" translate=\"Search\"></label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel [fetchData]=\"getAllData\"></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate>\n <button\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <i class=\"k-icon glyphicon glyphicon-trash\"></i>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <i *ngIf=\"command.iconClass\" class=\"{{ command.iconClass }}\"></i>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ 'Messages.NoRecords' | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"10\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", components: [{ type: i3$3.GridComponent, selector: "kendo-grid", inputs: ["data", "scrollable", "selectable", "trackBy", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "navigable", "autoSize", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "skip", "sort", "group", "navigatable", "rowClass", "rowSticky", "rowSelected", "cellSelected", "isDetailExpanded", "isGroupExpanded", "pageSize", "height", "rowHeight", "detailRowHeight", "filter"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { type: ExcelExportButtonComponent, selector: "excel-export-button" }, { type: i3$3.ExcelComponent, selector: "kendo-grid-excel", inputs: ["fileName", "filterable", "creator", "date", "forceProxy", "proxyURL", "fetchData", "paddingCellOptions", "headerPaddingCellOptions", "collapsible"] }, { type: i3$3.CommandColumnComponent, selector: "kendo-grid-command-column" }, { type: i3$3.ColumnComponent, selector: "kendo-grid-column", inputs: ["sortable", "groupable", "editor", "filter", "filterable", "editable", "field", "format"] }, { type: i3$3.GridSpacerComponent, selector: "kendo-grid-spacer, kendo-pager-spacer", inputs: ["width"] }, { type: i3$3.PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons" }, { type: i3$3.PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: ["buttonCount"] }, { type: i3$3.PagerNextButtonsComponent, selector: "kendo-pager-next-buttons" }, { type: i3$3.PagerInfoComponent, selector: "kendo-pager-info" }, { type: ConfirmDialogComponent, selector: "confirm-dialog" }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i6.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: DebounceDirective, selector: "[appDebounce]", inputs: ["debounceTime"], outputs: ["debounceKeyup"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3$3.SelectionDirective, selector: "[kendoGridSelectBy]" }, { type: i3$3.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { type: i3$3.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { type: i3$3.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { type: i3$3.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { type: RequirePermissionDirective, selector: "[requirePermission]", inputs: ["permissionType", "permissionCategory"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$3.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { type: i3$3.PagerTemplateDirective, selector: "[kendoPagerTemplate]" }, { type: i1$4.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "translate": i1.TranslatePipe } });
2080
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: UserListAdminComponent, decorators: [{
2081
+ type: Component,
2082
+ args: [{ selector: 'lib-user-list-admin', providers: [PartnerService], template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\" translate=\"Search\"></label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel [fetchData]=\"getAllData\"></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate>\n <button\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <i class=\"k-icon glyphicon glyphicon-trash\"></i>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <i *ngIf=\"command.iconClass\" class=\"{{ command.iconClass }}\"></i>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ 'Messages.NoRecords' | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"10\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n" }]
2083
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i1$4.ActivatedRoute }, { type: i1$4.Router }, { type: PartnerService }]; } });
2084
+
2085
+ const AuthorizationHeader = 'Authorization';
2086
+ class AuthHeadersInterceptor {
2087
+ constructor(settingsService) {
2088
+ this.settingsService = settingsService;
2089
+ }
2090
+ intercept(request, next) {
2091
+ if (!request.headers.keys().find((x) => x === AuthorizationHeader)) {
2092
+ const token = this.settingsService.getToken();
2093
+ if (token) {
2094
+ const modified = request.clone({
2095
+ setHeaders: {
2096
+ Authorization: `Bearer ${token}`,
2097
+ },
2098
+ });
2099
+ return next.handle(modified);
2100
+ }
2101
+ else {
2102
+ return next.handle(request);
2103
+ }
2104
+ }
2105
+ return next.handle(request);
2106
+ }
2107
+ }
2108
+ AuthHeadersInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AuthHeadersInterceptor, deps: [{ token: SettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
2109
+ AuthHeadersInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AuthHeadersInterceptor });
2110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: AuthHeadersInterceptor, decorators: [{
2111
+ type: Injectable
2112
+ }], ctorParameters: function () { return [{ type: SettingsService }]; } });
2113
+
2114
+ var FieldTypes;
2115
+ (function (FieldTypes) {
2116
+ FieldTypes[FieldTypes["Text"] = 0] = "Text";
2117
+ FieldTypes[FieldTypes["Checkbox"] = 1] = "Checkbox";
2118
+ FieldTypes[FieldTypes["Dropdown"] = 2] = "Dropdown";
2119
+ FieldTypes[FieldTypes["Multiselect"] = 3] = "Multiselect";
2120
+ })(FieldTypes || (FieldTypes = {}));
2121
+
2122
+ const moment = momentModule;
2123
+ class CurrentTimezoneComponent {
2124
+ constructor() { }
2125
+ ngOnInit() {
2126
+ const timeZone = moment.tz.guess();
2127
+ this.timeZoneAndOffset = timeZone + ' ' + moment().format('Z');
2128
+ }
2129
+ }
2130
+ CurrentTimezoneComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CurrentTimezoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2131
+ CurrentTimezoneComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: CurrentTimezoneComponent, selector: "current-timezone", ngImport: i0, template: "<div class=\"divide-line\"></div>\n<div class=\"time-zone\">\n {{ 'CurrentTimeZone' | translate }}: {{ timeZoneAndOffset }}\n</div>\n", styles: [""], pipes: { "translate": i1.TranslatePipe } });
2132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: CurrentTimezoneComponent, decorators: [{
2133
+ type: Component,
2134
+ args: [{ selector: 'current-timezone', template: "<div class=\"divide-line\"></div>\n<div class=\"time-zone\">\n {{ 'CurrentTimeZone' | translate }}: {{ timeZoneAndOffset }}\n</div>\n", styles: [""] }]
2135
+ }], ctorParameters: function () { return []; } });
2136
+
2137
+ const allKey = 'All';
2138
+ const defaultValueField = 'id';
2139
+ class ActivityFilterComponent {
2140
+ constructor(translate) {
2141
+ this.translate = translate;
2142
+ this.showArchiveSwitcher = true;
2143
+ this.showSearhText = true;
2144
+ this.FieldTypes = FieldTypes;
2145
+ this.defaultNamedModel = {
2146
+ name: this.translate.instant(allKey),
2147
+ id: null,
2148
+ };
2149
+ }
2150
+ ngOnInit() {
2151
+ var _a;
2152
+ (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => (element.valueField = element.valueField
2153
+ ? element.valueField
2154
+ : defaultValueField));
2155
+ this.filterService.filter$.subscribe((filter) => {
2156
+ this.filter = filter;
2157
+ this.changeFilter();
2158
+ });
2159
+ }
2160
+ ngOnChanges() {
2161
+ this.changeFilter();
2162
+ }
2163
+ setTodayFilter() {
2164
+ this.filterService.setToday();
2165
+ }
2166
+ clearFilter() {
2167
+ var _a;
2168
+ (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
2169
+ element.filter.value = null;
2170
+ if (element.filter.values) {
2171
+ element.filter.values = [];
2172
+ }
2173
+ });
2174
+ this.filterService.reset();
2175
+ this.emitChangeEvents();
2176
+ }
2177
+ applyFilter() {
2178
+ this.setCustomFilters();
2179
+ this.filterService.applyFilter(this.filter);
2180
+ }
2181
+ fieldChange(value, element) {
2182
+ if (element.change) {
2183
+ element.change(value);
2184
+ }
2185
+ }
2186
+ fillFilter() {
2187
+ var _a, _b;
2188
+ if (!this.filter) {
2189
+ return;
2190
+ }
2191
+ (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
2192
+ element.filter = Object.assign(Object.assign({}, element.filter), { value: null, values: null });
2193
+ });
2194
+ (_b = this.filter.customFilters) === null || _b === void 0 ? void 0 : _b.forEach((filter) => {
2195
+ var _a;
2196
+ const element = (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.find((x) => x.filter.field === filter.field &&
2197
+ x.filter.filterTarget === filter.filterTarget);
2198
+ if (element) {
2199
+ element.filter = Object.assign({}, filter);
2200
+ }
2201
+ });
2202
+ }
2203
+ setCustomFilters() {
2204
+ var _a, _b;
2205
+ (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
2206
+ var _a;
2207
+ const index = (_a = this.filter.customFilters) === null || _a === void 0 ? void 0 : _a.findIndex((x) => x.field === element.filter.field);
2208
+ if (index !== -1) {
2209
+ this.filter.customFilters.splice(index, 1);
2210
+ }
2211
+ });
2212
+ (_b = this.customFilterElements) === null || _b === void 0 ? void 0 : _b.forEach((element) => this.filter.customFilters.push(element.filter));
2213
+ }
2214
+ fixMultiselectFilters() {
2215
+ var _a;
2216
+ const multiSelectFilters = (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.map((element) => {
2217
+ if (element.fieldType === FieldTypes.Multiselect) {
2218
+ return element.filter;
2219
+ }
2220
+ });
2221
+ if (multiSelectFilters) {
2222
+ multiSelectFilters.forEach((filter) => {
2223
+ if (filter === null || filter === void 0 ? void 0 : filter.value) {
2224
+ filter.values = [filter.value];
2225
+ filter.value = null;
2283
2226
  }
2284
- this.loadings--;
2285
2227
  });
2286
- this.getData();
2228
+ }
2229
+ }
2230
+ changeFilter() {
2231
+ this.fillFilter();
2232
+ this.fixMultiselectFilters();
2233
+ this.emitChangeEvents();
2234
+ }
2235
+ emitChangeEvents() {
2236
+ var _a;
2237
+ (_a = this.customFilterElements) === null || _a === void 0 ? void 0 : _a.forEach((element) => {
2238
+ var _a;
2239
+ if (element.filter.value || element.filter.values) {
2240
+ this.fieldChange((_a = element.filter.value) !== null && _a !== void 0 ? _a : element.filter.values, element);
2241
+ }
2287
2242
  });
2288
2243
  }
2289
- getData() {
2290
- this.loadings++;
2291
- this.service.getPage(this.gridState).subscribe((page) => {
2292
- this.page = page;
2293
- this.loadings--;
2244
+ }
2245
+ ActivityFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ActivityFilterComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
2246
+ ActivityFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: ActivityFilterComponent, selector: "activity-filter", inputs: { showArchiveSwitcher: "showArchiveSwitcher", showSearhText: "showSearhText", customFilterElements: "customFilterElements", filterService: "filterService" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"header-selection-field activity-filter\">\n <div class=\"filter-row\">\n <div>\n <label for=\"datefrom\" class=\"title-field\">\n <span>{{ 'ActivitiesFilter.DateFrom' | translate }}:</span>\n <div>\n <kendo-datetimepicker\n format=\"dd/MM/yyyy HH:mm\"\n [(value)]=\"filter.dateFrom\"\n ></kendo-datetimepicker>\n </div>\n </label>\n </div>\n <div>\n <label for=\"dateto\" class=\"title-field\">\n <span>{{ 'ActivitiesFilter.DateTo' | translate }}:</span>\n <div>\n <kendo-datetimepicker\n format=\"dd/MM/yyyy HH:mm\"\n [(value)]=\"filter.dateTo\"\n ></kendo-datetimepicker>\n </div>\n </label>\n </div>\n <div>\n <label class=\"title-field\">\n <span class=\"link-button\" (click)=\"setTodayFilter()\">\n {{ 'ActivitiesFilter.FilterToday' | translate }}\n </span>\n </label>\n </div>\n <div class=\"filter-row\">\n <div class=\"flag\" *ngIf=\"showArchiveSwitcher\">\n <div class=\"checkbox\">\n <label>\n <input [(ngModel)]=\"filter.switchToArchive\" type=\"checkbox\" />\n {{ 'ActivitiesFilter.SwitchToArchiveLabel' | translate }}\n </label>\n </div>\n </div>\n <div *ngIf=\"showSearhText\">\n <label class=\"title-field\">\n <span>{{ 'ActivitiesFilter.SearchLabel' | translate }}:</span>\n </label>\n <input\n type=\"text\"\n k-input\n class=\"input k-input searchtext-input\"\n [(ngModel)]=\"filter.searchText\"\n (keyup.enter)=\"applyFilter()\"\n [disabled]=\"filter.switchToArchive\"\n />\n </div>\n </div>\n </div>\n <div class=\"filter-row\">\n <ng-container *ngFor=\"let field of customFilterElements\">\n <ng-container [ngSwitch]=\"field.fieldType\">\n <ng-template [ngSwitchCase]=\"FieldTypes.Text\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <input\n type=\"text\"\n class=\"input k-input\"\n [(ngModel)]=\"field.filter.value\"\n [placeholder]=\"field.placeholder | translate\"\n />\n </div>\n </label>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Dropdown\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <kendo-dropdownlist\n [data]=\"field.data\"\n textField=\"name\"\n [valueField]=\"field.valueField\"\n [defaultItem]=\"defaultNamedModel\"\n [(ngModel)]=\"field.filter.value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"fieldChange($event, field)\"\n ></kendo-dropdownlist>\n </div>\n </label>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Checkbox\">\n <div class=\"flag\">\n <div class=\"checkbox\">\n <label>\n <input [(ngModel)]=\"field.filter.value\" type=\"checkbox\" />\n {{ field.title | translate }}\n </label>\n </div>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Multiselect\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <kendo-multiselect\n kendoMultiSelectSummaryTag\n [autoClose]=\"false\"\n [data]=\"field.data\"\n [(ngModel)]=\"field.filter.values\"\n textField=\"name\"\n [valueField]=\"field.valueField\"\n [valuePrimitive]=\"true\"\n [placeholder]=\"field.placeholder | translate\"\n (valueChange)=\"fieldChange($event, field)\"\n ></kendo-multiselect>\n </div>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <button class=\"btn btn-inverse\" (click)=\"applyFilter()\">\n {{ 'Buttons.Apply' | translate }}\n </button>\n <button class=\"btn btn-inverse\" (click)=\"clearFilter()\">\n {{ 'Buttons.Clear' | translate }}\n </button>\n </div>\n </div>\n</div>\n<current-timezone></current-timezone>\n", styles: ["::ng-deep .filter-row{display:flex;flex-flow:row wrap;margin-bottom:20px}::ng-deep .filter-row>div{margin:0 10px 30px 5px;min-width:100px}::ng-deep .filter-row .title-field{margin:0;width:100%}::ng-deep .filter-row .flag{margin-top:10px!important}\n"], components: [{ type: i2$4.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["twoDigitYearMax", "focusableId", "title", "disabled", "readonly", "readOnlyInput", "cancelButton", "steps", "calendarType", "animateCalendarNavigation", "weekNumber", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "value", "format", "tabindex", "disabledDates", "popupSettings", "min", "max", "defaultTab", "size", "rounded", "fillMode", "formatPlaceholder", "placeholder", "focusedDate"], outputs: ["valueChange", "open", "close", "focus", "blur"], exportAs: ["kendo-datetimepicker"] }, { type: i3$4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["listHeight", "disabled", "readonly", "filterable", "ignoreCase", "delay", "tabindex", "id", "data", "value", "popupSettings", "itemDisabled", "virtual", "valuePrimitive", "tabIndex", "size", "rounded", "fillMode", "iconClass", "loading", "textField", "valueField", "defaultItem"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { type: i3$4.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "tabindex", "disabled", "readonly", "filterable", "listHeight", "clearButton", "tagMapper", "allowCustom", "valueNormalizer", "data", "value", "tabIndex", "size", "rounded", "fillMode", "placeholder", "itemDisabled", "checkboxes", "virtual", "popupSettings", "valuePrimitive", "loading", "valueField", "textField"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }, { type: CurrentTimezoneComponent, selector: "current-timezone" }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3$4.SummaryTagDirective, selector: "[kendoMultiSelectSummaryTag]", inputs: ["kendoMultiSelectSummaryTag"] }], pipes: { "translate": i1.TranslatePipe } });
2247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: ActivityFilterComponent, decorators: [{
2248
+ type: Component,
2249
+ args: [{ selector: 'activity-filter', template: "<div class=\"header-selection-field activity-filter\">\n <div class=\"filter-row\">\n <div>\n <label for=\"datefrom\" class=\"title-field\">\n <span>{{ 'ActivitiesFilter.DateFrom' | translate }}:</span>\n <div>\n <kendo-datetimepicker\n format=\"dd/MM/yyyy HH:mm\"\n [(value)]=\"filter.dateFrom\"\n ></kendo-datetimepicker>\n </div>\n </label>\n </div>\n <div>\n <label for=\"dateto\" class=\"title-field\">\n <span>{{ 'ActivitiesFilter.DateTo' | translate }}:</span>\n <div>\n <kendo-datetimepicker\n format=\"dd/MM/yyyy HH:mm\"\n [(value)]=\"filter.dateTo\"\n ></kendo-datetimepicker>\n </div>\n </label>\n </div>\n <div>\n <label class=\"title-field\">\n <span class=\"link-button\" (click)=\"setTodayFilter()\">\n {{ 'ActivitiesFilter.FilterToday' | translate }}\n </span>\n </label>\n </div>\n <div class=\"filter-row\">\n <div class=\"flag\" *ngIf=\"showArchiveSwitcher\">\n <div class=\"checkbox\">\n <label>\n <input [(ngModel)]=\"filter.switchToArchive\" type=\"checkbox\" />\n {{ 'ActivitiesFilter.SwitchToArchiveLabel' | translate }}\n </label>\n </div>\n </div>\n <div *ngIf=\"showSearhText\">\n <label class=\"title-field\">\n <span>{{ 'ActivitiesFilter.SearchLabel' | translate }}:</span>\n </label>\n <input\n type=\"text\"\n k-input\n class=\"input k-input searchtext-input\"\n [(ngModel)]=\"filter.searchText\"\n (keyup.enter)=\"applyFilter()\"\n [disabled]=\"filter.switchToArchive\"\n />\n </div>\n </div>\n </div>\n <div class=\"filter-row\">\n <ng-container *ngFor=\"let field of customFilterElements\">\n <ng-container [ngSwitch]=\"field.fieldType\">\n <ng-template [ngSwitchCase]=\"FieldTypes.Text\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <input\n type=\"text\"\n class=\"input k-input\"\n [(ngModel)]=\"field.filter.value\"\n [placeholder]=\"field.placeholder | translate\"\n />\n </div>\n </label>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Dropdown\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <kendo-dropdownlist\n [data]=\"field.data\"\n textField=\"name\"\n [valueField]=\"field.valueField\"\n [defaultItem]=\"defaultNamedModel\"\n [(ngModel)]=\"field.filter.value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"fieldChange($event, field)\"\n ></kendo-dropdownlist>\n </div>\n </label>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Checkbox\">\n <div class=\"flag\">\n <div class=\"checkbox\">\n <label>\n <input [(ngModel)]=\"field.filter.value\" type=\"checkbox\" />\n {{ field.title | translate }}\n </label>\n </div>\n </div>\n </ng-template>\n <ng-template [ngSwitchCase]=\"FieldTypes.Multiselect\">\n <div>\n <label class=\"title-field\">\n <span>{{ field.title | translate }}:</span>\n <div>\n <kendo-multiselect\n kendoMultiSelectSummaryTag\n [autoClose]=\"false\"\n [data]=\"field.data\"\n [(ngModel)]=\"field.filter.values\"\n textField=\"name\"\n [valueField]=\"field.valueField\"\n [valuePrimitive]=\"true\"\n [placeholder]=\"field.placeholder | translate\"\n (valueChange)=\"fieldChange($event, field)\"\n ></kendo-multiselect>\n </div>\n </label>\n </div>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <button class=\"btn btn-inverse\" (click)=\"applyFilter()\">\n {{ 'Buttons.Apply' | translate }}\n </button>\n <button class=\"btn btn-inverse\" (click)=\"clearFilter()\">\n {{ 'Buttons.Clear' | translate }}\n </button>\n </div>\n </div>\n</div>\n<current-timezone></current-timezone>\n", styles: ["::ng-deep .filter-row{display:flex;flex-flow:row wrap;margin-bottom:20px}::ng-deep .filter-row>div{margin:0 10px 30px 5px;min-width:100px}::ng-deep .filter-row .title-field{margin:0;width:100%}::ng-deep .filter-row .flag{margin-top:10px!important}\n"] }]
2250
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }]; }, propDecorators: { showArchiveSwitcher: [{
2251
+ type: Input
2252
+ }], showSearhText: [{
2253
+ type: Input
2254
+ }], customFilterElements: [{
2255
+ type: Input
2256
+ }], filterService: [{
2257
+ type: Input
2258
+ }] } });
2259
+
2260
+ class EntityEditButtonsBarComponent {
2261
+ constructor() {
2262
+ this.save = new EventEmitter();
2263
+ }
2264
+ }
2265
+ EntityEditButtonsBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityEditButtonsBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2266
+ EntityEditButtonsBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: EntityEditButtonsBarComponent, selector: "entity-edit-buttons-bar", inputs: { valid: "valid" }, outputs: { save: "save" }, ngImport: i0, template: "<div class=\"form-group buttons-panel\">\n <div class=\"col-md-4\">\n <a\n [routerLink]=\"['../new']\"\n preserveFragment\n class=\"btn btn-succes\"\n translate=\"CreateNew\"\n requirePermission\n permissionType=\"Create\"\n >\n </a>\n </div>\n <div class=\"col-md-8 text-right\">\n <a\n [routerLink]=\"['../']\"\n preserveFragment\n class=\"btn btn-inverse\"\n translate=\"Cancel\"\n ></a>\n <button\n type=\"submit\"\n class=\"btn btn-success\"\n (click)=\"save.emit()\"\n translate=\"Save\"\n [disabled]=\"!valid\"\n requirePermission\n [permissionType]=\"['Edit', 'Create']\"\n ></button>\n </div>\n</div>\n", styles: [""], directives: [{ type: i1$4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: RequirePermissionDirective, selector: "[requirePermission]", inputs: ["permissionType", "permissionCategory"] }] });
2267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityEditButtonsBarComponent, decorators: [{
2268
+ type: Component,
2269
+ args: [{ selector: 'entity-edit-buttons-bar', template: "<div class=\"form-group buttons-panel\">\n <div class=\"col-md-4\">\n <a\n [routerLink]=\"['../new']\"\n preserveFragment\n class=\"btn btn-succes\"\n translate=\"CreateNew\"\n requirePermission\n permissionType=\"Create\"\n >\n </a>\n </div>\n <div class=\"col-md-8 text-right\">\n <a\n [routerLink]=\"['../']\"\n preserveFragment\n class=\"btn btn-inverse\"\n translate=\"Cancel\"\n ></a>\n <button\n type=\"submit\"\n class=\"btn btn-success\"\n (click)=\"save.emit()\"\n translate=\"Save\"\n [disabled]=\"!valid\"\n requirePermission\n [permissionType]=\"['Edit', 'Create']\"\n ></button>\n </div>\n</div>\n", styles: [""] }]
2270
+ }], propDecorators: { valid: [{
2271
+ type: Input
2272
+ }], save: [{
2273
+ type: Output
2274
+ }] } });
2275
+
2276
+ class EntityEditFormComponent {
2277
+ constructor(route) {
2278
+ this.route = route;
2279
+ this.saveInProgress = false;
2280
+ }
2281
+ ngOnInit() {
2282
+ this.route.params.subscribe((params) => {
2283
+ this.formGroup = null;
2284
+ const formGroup = new FormGroupWithErrors({});
2285
+ if (params.id) {
2286
+ this.adapter
2287
+ .getService()
2288
+ .get(params.id)
2289
+ .subscribe((model) => {
2290
+ formGroup.addControl('id', new FormControl(model.id));
2291
+ for (const key of Object.keys(model)) {
2292
+ formGroup.addControl(key, new FormControl(model[key]));
2293
+ }
2294
+ this.adapter.setForm(formGroup);
2295
+ this.formGroup = formGroup;
2296
+ });
2297
+ }
2298
+ else {
2299
+ this.adapter.setForm(formGroup);
2300
+ this.formGroup = formGroup;
2301
+ }
2294
2302
  });
2295
2303
  }
2296
- getFilter() {
2297
- const filter = {
2298
- logic: 'and',
2299
- filters: this.searchTerm
2300
- ? [
2301
- { field: nameField, operator: 'contains', value: this.searchTerm },
2302
- ...this.filters,
2303
- ]
2304
- : this.filters,
2305
- };
2306
- return filter;
2304
+ save() {
2305
+ this.saveInProgress = true;
2306
+ this.adapter
2307
+ .getService()
2308
+ .save(this.adapter.getValue())
2309
+ .pipe(finalize(() => (this.saveInProgress = false)))
2310
+ .subscribe((result) => {
2311
+ this.adapter.onSaved(result);
2312
+ }, (error) => {
2313
+ this.formGroup.applyServerErrors(error.error, this.formGroup);
2314
+ this.generalErrors.setErrors(this.formGroup.generalErrors);
2315
+ });
2307
2316
  }
2308
- onFilterChange() {
2309
- var _a;
2310
- const filter = (_a = this.gridState.filter) === null || _a === void 0 ? void 0 : _a.filters.find((x) => x.field === nameField);
2311
- this.searchTerm = filter === null || filter === void 0 ? void 0 : filter.value;
2312
- this.filterChange.emit(this.gridState.filter);
2317
+ }
2318
+ EntityEditFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityEditFormComponent, deps: [{ token: i1$4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
2319
+ EntityEditFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: EntityEditFormComponent, selector: "entity-edit-form", inputs: { title: "title", adapter: "adapter" }, viewQueries: [{ propertyName: "generalErrors", first: true, predicate: ["general_errors"], descendants: true }], ngImport: i0, template: "<div class=\"col-md-8\">\n <header class=\"header-page-bg\">\n <h4>{{ title | translate }}</h4>\n </header>\n <div class=\"panel editor-area hero-unit\">\n <form\n class=\"form-horizontal\"\n [formGroup]=\"formGroup\"\n novalidate\n autocomplete=\"off\"\n *ngIf=\"formGroup\"\n >\n <div class=\"col-md-3\"></div>\n <div class=\"col-md-9\">\n <app-general-errors\n #general_errors\n [form]=\"formGroup\"\n ></app-general-errors>\n </div>\n <ng-content></ng-content>\n <entity-edit-buttons-bar\n (save)=\"save()\"\n [valid]=\"formGroup.valid && formGroup.dirty && !saveInProgress\"\n >\n </entity-edit-buttons-bar>\n </form>\n </div>\n</div>\n", styles: [""], components: [{ type: GeneralErrorsComponent, selector: "app-general-errors", inputs: ["form"] }, { type: EntityEditButtonsBarComponent, selector: "entity-edit-buttons-bar", inputs: ["valid"], outputs: ["save"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], pipes: { "translate": i1.TranslatePipe } });
2320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityEditFormComponent, decorators: [{
2321
+ type: Component,
2322
+ args: [{ selector: 'entity-edit-form', template: "<div class=\"col-md-8\">\n <header class=\"header-page-bg\">\n <h4>{{ title | translate }}</h4>\n </header>\n <div class=\"panel editor-area hero-unit\">\n <form\n class=\"form-horizontal\"\n [formGroup]=\"formGroup\"\n novalidate\n autocomplete=\"off\"\n *ngIf=\"formGroup\"\n >\n <div class=\"col-md-3\"></div>\n <div class=\"col-md-9\">\n <app-general-errors\n #general_errors\n [form]=\"formGroup\"\n ></app-general-errors>\n </div>\n <ng-content></ng-content>\n <entity-edit-buttons-bar\n (save)=\"save()\"\n [valid]=\"formGroup.valid && formGroup.dirty && !saveInProgress\"\n >\n </entity-edit-buttons-bar>\n </form>\n </div>\n</div>\n", styles: [""] }]
2323
+ }], ctorParameters: function () { return [{ type: i1$4.ActivatedRoute }]; }, propDecorators: { generalErrors: [{
2324
+ type: ViewChild,
2325
+ args: ['general_errors']
2326
+ }], title: [{
2327
+ type: Input
2328
+ }], adapter: [{
2329
+ type: Input
2330
+ }] } });
2331
+
2332
+ class FieldDropdownComponent extends FieldComponent {
2333
+ constructor(parent, eref) {
2334
+ super(parent, eref, '');
2335
+ this.parent = parent;
2336
+ this.eref = eref;
2337
+ this.data = [];
2313
2338
  }
2314
- restoreGridState(params) {
2339
+ get control() {
2340
+ return this.parent.form.get(this.fieldName);
2341
+ }
2342
+ ngOnChanges() {
2315
2343
  return __awaiter(this, void 0, void 0, function* () {
2316
- const defaultGridState = {
2317
- sort: this.defaultSort || [{ field: nameField, dir: 'asc' }],
2318
- skip: 0,
2319
- take: 10,
2320
- };
2321
- const state = urlDeserialize(params);
2322
- this.gridState = state.hasOwnProperty('take') ? state : defaultGridState;
2323
- this.onFilterChange();
2324
- this.getData();
2344
+ yield this.getData();
2345
+ this.control.setValue((this.data.find((d) => d.id === this.control.value) || this.data[0]).id);
2325
2346
  });
2326
2347
  }
2348
+ getData() {
2349
+ this.service
2350
+ .getPage(this.filter ? { filter: this.filter } : {})
2351
+ .subscribe((data) => (this.data = data.data));
2352
+ }
2327
2353
  }
2328
- EntityListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityListComponent, deps: [{ token: i1.TranslateService }, { token: i1$4.ActivatedRoute }, { token: i1$4.Router }], target: i0.ɵɵFactoryTarget.Component });
2329
- EntityListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: EntityListComponent, selector: "entity-list", inputs: { service: "service", filters: "filters", fields: "fields", commands: "commands", rowClass: "rowClass", defaultSort: "defaultSort" }, outputs: { filterChange: "filterChange" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: ["confirmDialog"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\" translate=\"Search\"></label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel [fetchData]=\"getAllData\"></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate>\n <button\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <i class=\"k-icon glyphicon glyphicon-trash\"></i>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <i *ngIf=\"command.iconClass\" class=\"{{ command.iconClass }}\"></i>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ 'Messages.NoRecords' | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"10\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", styles: [""], components: [{ type: i3$4.GridComponent, selector: "kendo-grid", inputs: ["data", "scrollable", "selectable", "trackBy", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "navigable", "autoSize", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "skip", "sort", "group", "navigatable", "rowClass", "rowSticky", "rowSelected", "cellSelected", "isDetailExpanded", "isGroupExpanded", "pageSize", "height", "rowHeight", "detailRowHeight", "filter"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "dataStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { type: ExcelExportButtonComponent, selector: "excel-export-button" }, { type: i3$4.ExcelComponent, selector: "kendo-grid-excel", inputs: ["fileName", "filterable", "creator", "date", "forceProxy", "proxyURL", "fetchData", "paddingCellOptions", "headerPaddingCellOptions", "collapsible"] }, { type: i3$4.CommandColumnComponent, selector: "kendo-grid-command-column" }, { type: i3$4.ColumnComponent, selector: "kendo-grid-column", inputs: ["sortable", "groupable", "editor", "filter", "filterable", "editable", "field", "format"] }, { type: i3$4.GridSpacerComponent, selector: "kendo-grid-spacer, kendo-pager-spacer", inputs: ["width"] }, { type: i3$4.PagerPrevButtonsComponent, selector: "kendo-pager-prev-buttons" }, { type: i3$4.PagerNumericButtonsComponent, selector: "kendo-pager-numeric-buttons", inputs: ["buttonCount"] }, { type: i3$4.PagerNextButtonsComponent, selector: "kendo-pager-next-buttons" }, { type: i3$4.PagerInfoComponent, selector: "kendo-pager-info" }, { type: ConfirmDialogComponent, selector: "confirm-dialog" }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i6.TextBoxDirective, selector: "input[kendoTextBox]", inputs: ["value"] }, { type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: DebounceDirective, selector: "[appDebounce]", inputs: ["debounceTime"], outputs: ["debounceKeyup"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3$4.SelectionDirective, selector: "[kendoGridSelectBy]" }, { type: i3$4.ToolbarTemplateDirective, selector: "[kendoGridToolbarTemplate]", inputs: ["position"] }, { type: i3$4.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { type: i3$4.FocusableDirective, selector: "[kendoGridFocusable], [kendoGridEditCommand], [kendoGridRemoveCommand], [kendoGridSaveCommand], [kendoGridCancelCommand], [kendoGridSelectionCheckbox] ", inputs: ["kendoGridFocusable"] }, { type: i3$4.RemoveCommandDirective, selector: "[kendoGridRemoveCommand]" }, { type: RequirePermissionDirective, selector: "[requirePermission]", inputs: ["permissionType", "permissionCategory"] }, { type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$4.NoRecordsTemplateDirective, selector: "[kendoGridNoRecordsTemplate]" }, { type: i3$4.PagerTemplateDirective, selector: "[kendoPagerTemplate]" }, { type: i1$4.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "translate": i1.TranslatePipe } });
2330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: EntityListComponent, decorators: [{
2354
+ FieldDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldDropdownComponent, deps: [{ token: i1$3.FormGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2355
+ FieldDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: FieldDropdownComponent, selector: "field-dropdown", inputs: { service: "service", rebind: "rebind", filter: "filter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data\"\n textField=\"name\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\n <span *ngIf=\"control.errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">{{\n control.errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", styles: [""], components: [{ type: i3$4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["listHeight", "disabled", "readonly", "filterable", "ignoreCase", "delay", "tabindex", "id", "data", "value", "popupSettings", "itemDisabled", "virtual", "valuePrimitive", "tabIndex", "size", "rounded", "fillMode", "iconClass", "loading", "textField", "valueField", "defaultItem"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": i1.TranslatePipe }, viewProviders: [
2356
+ { provide: ControlContainer, useExisting: FormGroupDirective },
2357
+ ] });
2358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldDropdownComponent, decorators: [{
2331
2359
  type: Component,
2332
- args: [{ selector: 'entity-list', template: "<div class=\"row\">\n <div class=\"col-md-4\">\n <header class=\"header-page-bg\"></header>\n <div class=\"panel search-panel hero-unit\">\n <div class=\"header-selection-field\">\n <label for=\"searchinput\" class=\"title-field\" translate=\"Search\"></label>\n <input\n kendoTextBox\n class=\"quick-filter input input-field\"\n title=\"\"\n id=\"searchinput\"\n type=\"text\"\n appDebounce\n (debounceKeyup)=\"onSearch($event.target.value)\"\n [ngModel]=\"searchTerm\"\n [debounceTime]=\"600\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"divide-line\"></div>\n\n <kendo-grid\n [data]=\"page\"\n [pageSize]=\"gridState.take\"\n [skip]=\"gridState.skip\"\n [sort]=\"gridState.sort\"\n [pageable]=\"true\"\n [sortable]=\"true\"\n [style.maxHeight.px]=\"480\"\n (remove)=\"removeHandler($event)\"\n (dataStateChange)=\"dataStateChange($event)\"\n [loading]=\"loadings > 0\"\n (cellClick)=\"selectItem($event)\"\n culture\n class=\"rows-pointable\"\n kendoGridSelectBy=\"id\"\n [selectedKeys]=\"selected\"\n [rowClass]=\"getRowClass\"\n >\n <ng-template kendoGridToolbarTemplate>\n <excel-export-button></excel-export-button>\n </ng-template>\n <kendo-grid-excel [fetchData]=\"getAllData\"></kendo-grid-excel>\n <kendo-grid-command-column width=\"65\">\n <ng-template kendoGridCellTemplate>\n <button\n kendoGridRemoveCommand\n requirePermission\n permissionType=\"Delete\"\n >\n <i class=\"k-icon glyphicon glyphicon-trash\"></i>\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <kendo-grid-column\n *ngFor=\"let field of gridFields\"\n field=\"{{ field.name }}\"\n title=\"{{ field.label | translate }}\"\n [sortable]=\"field.sortable !== false\"\n >\n </kendo-grid-column>\n <kendo-grid-command-column width=\"65\" *ngIf=\"commands.length > 0\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <button\n *ngFor=\"let command of commands\"\n (click)=\"command.handler(dataItem)\"\n title=\"{{ command.title | translate }}\"\n class=\"k-button\"\n >\n <i *ngIf=\"command.iconClass\" class=\"{{ command.iconClass }}\"></i>\n {{ command.name | translate }}\n </button>\n </ng-template>\n </kendo-grid-command-column>\n <ng-template kendoGridNoRecordsTemplate>\n {{ 'Messages.NoRecords' | translate }}\n </ng-template>\n <ng-template kendoPagerTemplate>\n <kendo-grid-spacer></kendo-grid-spacer>\n <kendo-pager-prev-buttons></kendo-pager-prev-buttons>\n <kendo-pager-numeric-buttons\n [buttonCount]=\"10\"\n ></kendo-pager-numeric-buttons>\n <kendo-pager-next-buttons></kendo-pager-next-buttons>\n <kendo-pager-info></kendo-pager-info>\n </ng-template>\n </kendo-grid>\n </div>\n </div>\n <router-outlet\n (activate)=\"onActivate($event)\"\n (deactivate)=\"onDeactivate($event)\"\n ></router-outlet>\n</div>\n<confirm-dialog #confirmDialog></confirm-dialog>\n", styles: [""] }]
2333
- }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i1$4.ActivatedRoute }, { type: i1$4.Router }]; }, propDecorators: { service: [{
2360
+ args: [{ selector: 'field-dropdown', viewProviders: [
2361
+ { provide: ControlContainer, useExisting: FormGroupDirective },
2362
+ ], template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-dropdownlist\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data\"\n textField=\"name\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n >\n </kendo-dropdownlist>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\n <span *ngIf=\"control.errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">{{\n control.errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", styles: [""] }]
2363
+ }], ctorParameters: function () { return [{ type: i1$3.FormGroupDirective }, { type: i0.ElementRef }]; }, propDecorators: { service: [{
2334
2364
  type: Input
2335
- }], filters: [{
2365
+ }], rebind: [{
2336
2366
  type: Input
2337
- }], fields: [{
2367
+ }], filter: [{
2338
2368
  type: Input
2339
- }], commands: [{
2369
+ }] } });
2370
+
2371
+ class FieldMultiSelectComponent extends FieldComponent {
2372
+ constructor(parent, eref) {
2373
+ super(parent, eref, []);
2374
+ this.parent = parent;
2375
+ this.eref = eref;
2376
+ this.data = [];
2377
+ }
2378
+ get control() {
2379
+ return this.parent.form.get(this.fieldName);
2380
+ }
2381
+ ngOnChanges() {
2382
+ this.getData().subscribe((data) => {
2383
+ this.data = data.data;
2384
+ this.control.setValue(this.control.value.filter((x) => this.data.filter((d) => d.id === x).length));
2385
+ });
2386
+ }
2387
+ getData() {
2388
+ return this.service.getPage(this.filter ? { filter: this.filter } : {});
2389
+ }
2390
+ }
2391
+ FieldMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldMultiSelectComponent, deps: [{ token: i1$3.FormGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2392
+ FieldMultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: FieldMultiSelectComponent, selector: "field-multiselect", inputs: { service: "service", rebind: "rebind", filter: "filter" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-multiselect\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data\"\n [autoClose]=\"false\"\n textField=\"name\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n >\n </kendo-multiselect>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\n <span *ngIf=\"control.errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">{{\n control.errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", styles: [""], components: [{ type: i3$4.MultiSelectComponent, selector: "kendo-multiselect", inputs: ["focusableId", "autoClose", "tabindex", "disabled", "readonly", "filterable", "listHeight", "clearButton", "tagMapper", "allowCustom", "valueNormalizer", "data", "value", "tabIndex", "size", "rounded", "fillMode", "placeholder", "itemDisabled", "checkboxes", "virtual", "popupSettings", "valuePrimitive", "loading", "valueField", "textField"], outputs: ["filterChange", "valueChange", "open", "opened", "close", "closed", "focus", "blur", "removeTag"], exportAs: ["kendoMultiSelect"] }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": i1.TranslatePipe }, viewProviders: [
2393
+ { provide: ControlContainer, useExisting: FormGroupDirective },
2394
+ ] });
2395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldMultiSelectComponent, decorators: [{
2396
+ type: Component,
2397
+ args: [{ selector: 'field-multiselect', viewProviders: [
2398
+ { provide: ControlContainer, useExisting: FormGroupDirective },
2399
+ ], template: "<div class=\"form-group\">\n <label\n for=\"{{ '_' + fieldName }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\" *ngIf=\"control\">\n <kendo-multiselect\n id=\"{{ '_' + fieldName }}\"\n [formControl]=\"control\"\n [data]=\"data\"\n [autoClose]=\"false\"\n textField=\"name\"\n valueField=\"id\"\n [valuePrimitive]=\"true\"\n >\n </kendo-multiselect>\n\n <div class=\"bg-danger\" *ngIf=\"control.invalid && control.touched\">\n <span *ngIf=\"control.errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"control.errors['serverErrorMsg']\">{{\n control.errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", styles: [""] }]
2400
+ }], ctorParameters: function () { return [{ type: i1$3.FormGroupDirective }, { type: i0.ElementRef }]; }, propDecorators: { service: [{
2340
2401
  type: Input
2341
- }], rowClass: [{
2402
+ }], rebind: [{
2342
2403
  type: Input
2343
- }], defaultSort: [{
2404
+ }], filter: [{
2344
2405
  type: Input
2345
- }], filterChange: [{
2346
- type: Output
2347
- }], dialog: [{
2348
- type: ViewChild,
2349
- args: ['confirmDialog', { static: true }]
2350
2406
  }] } });
2351
2407
 
2352
2408
  const All = 'All';
@@ -2383,7 +2439,7 @@ class FieldDropdownlistComponent {
2383
2439
  }
2384
2440
  }
2385
2441
  FieldDropdownlistComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldDropdownlistComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
2386
- FieldDropdownlistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: FieldDropdownlistComponent, selector: "field-dropdownlist", inputs: { service: "service", label: "label" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "kendoDropDown", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div class=\"header-selection-field\">\n <label\n for=\"{{ '_' + label }}\"\n class=\"title-field\"\n translate=\"{{ label }}\"\n ></label>\n <kendo-dropdownlist\n [data]=\"data\"\n textField=\"name\"\n valueField=\"id\"\n id=\"{{ '_' + label }}\"\n (valueChange)=\"onValueChange($event)\"\n [defaultItem]=\"defaultItem\"\n #inputElement\n >\n </kendo-dropdownlist>\n</div>\n", styles: [""], components: [{ type: i3$3.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["listHeight", "disabled", "readonly", "filterable", "ignoreCase", "delay", "tabindex", "id", "data", "value", "popupSettings", "itemDisabled", "virtual", "valuePrimitive", "tabIndex", "size", "rounded", "fillMode", "iconClass", "loading", "textField", "valueField", "defaultItem"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] });
2442
+ FieldDropdownlistComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: FieldDropdownlistComponent, selector: "field-dropdownlist", inputs: { service: "service", label: "label" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "kendoDropDown", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0, template: "<div class=\"header-selection-field\">\n <label\n for=\"{{ '_' + label }}\"\n class=\"title-field\"\n translate=\"{{ label }}\"\n ></label>\n <kendo-dropdownlist\n [data]=\"data\"\n textField=\"name\"\n valueField=\"id\"\n id=\"{{ '_' + label }}\"\n (valueChange)=\"onValueChange($event)\"\n [defaultItem]=\"defaultItem\"\n #inputElement\n >\n </kendo-dropdownlist>\n</div>\n", styles: [""], components: [{ type: i3$4.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["listHeight", "disabled", "readonly", "filterable", "ignoreCase", "delay", "tabindex", "id", "data", "value", "popupSettings", "itemDisabled", "virtual", "valuePrimitive", "tabIndex", "size", "rounded", "fillMode", "iconClass", "loading", "textField", "valueField", "defaultItem"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }], directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] });
2387
2443
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: FieldDropdownlistComponent, decorators: [{
2388
2444
  type: Component,
2389
2445
  args: [{ selector: 'field-dropdownlist', template: "<div class=\"header-selection-field\">\n <label\n for=\"{{ '_' + label }}\"\n class=\"title-field\"\n translate=\"{{ label }}\"\n ></label>\n <kendo-dropdownlist\n [data]=\"data\"\n textField=\"name\"\n valueField=\"id\"\n id=\"{{ '_' + label }}\"\n (valueChange)=\"onValueChange($event)\"\n [defaultItem]=\"defaultItem\"\n #inputElement\n >\n </kendo-dropdownlist>\n</div>\n", styles: [""] }]
@@ -2572,7 +2628,8 @@ KendoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
2572
2628
  CurrentTimezoneComponent,
2573
2629
  ModalWindowComponent,
2574
2630
  LiveUpdatesControlComponent,
2575
- AzureLoginCallbackComponent], imports: [CommonModule,
2631
+ AzureLoginCallbackComponent,
2632
+ UserListAdminComponent], imports: [CommonModule,
2576
2633
  RouterModule,
2577
2634
  IndiginaModule, i2$1.OAuthModule, PopupModule,
2578
2635
  GridModule,
@@ -2620,7 +2677,8 @@ KendoModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
2620
2677
  ModalWindowComponent,
2621
2678
  LiveUpdatesControlComponent,
2622
2679
  MsalModule,
2623
- AzureLoginCallbackComponent] });
2680
+ AzureLoginCallbackComponent,
2681
+ UserListAdminComponent] });
2624
2682
  KendoModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: KendoModule, providers: [
2625
2683
  { provide: OAuthStorage, useValue: localStorage },
2626
2684
  {
@@ -2689,6 +2747,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
2689
2747
  ModalWindowComponent,
2690
2748
  LiveUpdatesControlComponent,
2691
2749
  AzureLoginCallbackComponent,
2750
+ UserListAdminComponent,
2692
2751
  ],
2693
2752
  imports: [
2694
2753
  CommonModule,
@@ -2757,6 +2816,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
2757
2816
  LiveUpdatesControlComponent,
2758
2817
  MsalModule,
2759
2818
  AzureLoginCallbackComponent,
2819
+ UserListAdminComponent,
2760
2820
  ],
2761
2821
  }]
2762
2822
  }] });
@@ -3082,28 +3142,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
3082
3142
  type: Injectable
3083
3143
  }], ctorParameters: function () { return [{ type: i1$4.ActivatedRoute }, { type: i1$4.Router }]; } });
3084
3144
 
3085
- class EntityService {
3086
- constructor(httpService, endpoints) {
3087
- this.httpService = httpService;
3088
- this.endpoints = endpoints;
3089
- }
3090
- getPage(state) {
3091
- return this.httpService.get(this.endpoints.query(state));
3092
- }
3093
- get(id) {
3094
- return this.httpService.get(this.endpoints.entityPath(id));
3095
- }
3096
- delete(id) {
3097
- return this.httpService.delete(this.endpoints.entityPath(id));
3098
- }
3099
- save(model) {
3100
- if (model.id) {
3101
- return this.httpService.put(this.endpoints.entityPath(model.id), model);
3102
- }
3103
- return this.httpService.post(this.endpoints.path, model);
3104
- }
3105
- }
3106
-
3107
3145
  class EntityEditComponent {
3108
3146
  constructor(service) {
3109
3147
  this.service = service;
@@ -3132,5 +3170,5 @@ const momentTimezone = momentModule;
3132
3170
  * Generated bundle index. Do not edit.
3133
3171
  */
3134
3172
 
3135
- export { AccountMenuComponent, AccountService, ActivityFilterComponent, ActivityFilterService, AppSettings, AppToastrService, AuthProvider, AuthProviderResolver, AzureLoginCallbackComponent, BaseAccountService, ConfirmDialogComponent, CurrentTimezoneComponent, DebounceDirective, EntityEditButtonsBarComponent, EntityEditComponent, EntityEditFormComponent, EntityListComponent, EntityService, EventNames, ExcelExportButtonComponent, FieldComponent, FieldDropdownComponent, FieldDropdownlistComponent, FieldInputComponent, FieldMultiSelectComponent, FieldTypes, FilterTargets, FooterBarComponent, FormGroupWithErrors, GeneralErrorsComponent, HttpCodes, HttpMethods, HttpService, IndiginaConfiguration, IndiginaModule, KendoModule, LanguageSelectorComponent, LiveUpdatesControlComponent, LocaleSettingsService, MSALInstanceFactory, MemberTypes, ModalWindowComponent, MulticheckFilterComponent, NumberInputComponent, Operators, PermissionTypes, PermissionsService, ReEntrySubscription, RequirePermissionDirective, SettingsService, SideMenuComponent, SignalRService, TopMenuComponent, TreeViewComponent, buildActivityEndpoints, buildEntityEndpoints, endpoints, momentTimezone, urlDeserialize, urlSerialize };
3173
+ export { AccountMenuComponent, AccountService, ActivityFilterComponent, ActivityFilterService, AppSettings, AppToastrService, AuthProvider, AuthProviderResolver, AzureLoginCallbackComponent, BaseAccountService, ConfirmDialogComponent, CurrentTimezoneComponent, DebounceDirective, EntityEditButtonsBarComponent, EntityEditComponent, EntityEditFormComponent, EntityListComponent, EntityService, EventNames, ExcelExportButtonComponent, FieldComponent, FieldDropdownComponent, FieldDropdownlistComponent, FieldInputComponent, FieldMultiSelectComponent, FieldTypes, FilterTargets, FooterBarComponent, FormGroupWithErrors, GeneralErrorsComponent, HttpCodes, HttpMethods, HttpService, IndiginaConfiguration, IndiginaModule, KendoModule, LanguageSelectorComponent, LiveUpdatesControlComponent, LocaleSettingsService, MSALInstanceFactory, MemberTypes, ModalWindowComponent, MulticheckFilterComponent, NumberInputComponent, Operators, PermissionTypes, PermissionsService, ReEntrySubscription, RequirePermissionDirective, SettingsService, SideMenuComponent, SignalRService, TopMenuComponent, TreeViewComponent, UserListAdminComponent, buildActivityEndpoints, buildEntityEndpoints, endpoints, momentTimezone, urlDeserialize, urlSerialize };
3136
3174
  //# sourceMappingURL=indigina-kendo.mjs.map