ngx-techlify-core 11.4.8-beta.2 → 11.5.0

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.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/material/dialog'), require('@angular/material/table'), require('@angular/material/sort'), require('@ngneat/until-destroy'), require('@angular/common'), require('@angular/forms'), require('@angular/common/http'), require('rxjs'), require('rxjs/operators'), require('@angular/material/snack-bar'), require('@angular/cdk/a11y'), require('@angular/cdk/coercion'), require('@angular/material/form-field'), require('@angular/material/select'), require('moment'), require('@angular/material/icon'), require('@angular/router'), require('@angular/material/tooltip'), require('@angular/material/core'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/input'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/card'), require('@angular/material/divider'), require('@angular/material/chips'), require('@angular/material/datepicker'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/flex-layout'), require('ngx-infinite-scroll'), require('ngx-doc-viewer'), require('@angular/cdk/keycodes'), require('@angular/material/autocomplete'), require('ngx-editor'), require('xlsx'), require('@angular/platform-browser'), require('jsondiffpatch'), require('@angular/material/slide-toggle')) :
3
- typeof define === 'function' && define.amd ? define('ngx-techlify-core', ['exports', '@angular/core', '@angular/material/dialog', '@angular/material/table', '@angular/material/sort', '@ngneat/until-destroy', '@angular/common', '@angular/forms', '@angular/common/http', 'rxjs', 'rxjs/operators', '@angular/material/snack-bar', '@angular/cdk/a11y', '@angular/cdk/coercion', '@angular/material/form-field', '@angular/material/select', 'moment', '@angular/material/icon', '@angular/router', '@angular/material/tooltip', '@angular/material/core', '@angular/material/button', '@angular/material/checkbox', '@angular/material/input', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/card', '@angular/material/divider', '@angular/material/chips', '@angular/material/datepicker', '@angular/material/list', '@angular/material/button-toggle', '@angular/flex-layout', 'ngx-infinite-scroll', 'ngx-doc-viewer', '@angular/cdk/keycodes', '@angular/material/autocomplete', 'ngx-editor', 'xlsx', '@angular/platform-browser', 'jsondiffpatch', '@angular/material/slide-toggle'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['ngx-techlify-core'] = {}, global.ng.core, global.ng.material.dialog, global.ng.material.table, global.ng.material.sort, global['@ngneat/until-destroy'], global.ng.common, global.ng.forms, global.ng.common.http, global.rxjs, global.rxjs.operators, global.ng.material.snackBar, global.ng.cdk.a11y, global.ng.cdk.coercion, global.ng.material.formField, global.ng.material.select, global.moment, global.ng.material.icon, global.ng.router, global.ng.material.tooltip, global.ng.material.core, global.ng.material.button, global.ng.material.checkbox, global.ng.material.input, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.card, global.ng.material.divider, global.ng.material.chips, global.ng.material.datepicker, global.ng.material.list, global.ng.material.buttonToggle, global.ng.flexLayout, global['ngx-infinite-scroll'], global['ngx-doc-viewer'], global.ng.cdk.keycodes, global.ng.material.autocomplete, global['ngx-editor'], global.xlsx, global.ng.platformBrowser, global.jsondiffpatch, global.ng.material.slideToggle));
5
- }(this, (function (exports, i0, dialog, table, sort, untilDestroy, common, forms, i1$1, rxjs, operators, i1, a11y, coercion, formField, select, moment_, icon, i1$2, tooltip, core, button, checkbox, input, menu, progressSpinner, card, divider, chips, datepicker, list, buttonToggle, flexLayout, ngxInfiniteScroll, ngxDocViewer, keycodes, autocomplete, ngxEditor, XLSX, platformBrowser, jsondiffpatch, slideToggle) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/material/dialog'), require('@angular/material/table'), require('@angular/material/sort'), require('@ngneat/until-destroy'), require('@angular/common'), require('@angular/forms'), require('@angular/common/http'), require('rxjs'), require('rxjs/operators'), require('@angular/material/snack-bar'), require('@angular/cdk/a11y'), require('@angular/cdk/coercion'), require('@angular/material/form-field'), require('@angular/material/select'), require('moment'), require('@angular/material/icon'), require('@angular/router'), require('@angular/material/tooltip'), require('@angular/material/core'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/input'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/card'), require('@angular/material/divider'), require('@angular/material/chips'), require('@angular/material/datepicker'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/sidenav'), require('@angular/flex-layout'), require('ngx-infinite-scroll'), require('ngx-doc-viewer'), require('@angular/cdk/keycodes'), require('@angular/material/autocomplete'), require('ngx-editor'), require('xlsx'), require('@angular/platform-browser'), require('jsondiffpatch'), require('@angular/material/slide-toggle')) :
3
+ typeof define === 'function' && define.amd ? define('ngx-techlify-core', ['exports', '@angular/core', '@angular/material/dialog', '@angular/material/table', '@angular/material/sort', '@ngneat/until-destroy', '@angular/common', '@angular/forms', '@angular/common/http', 'rxjs', 'rxjs/operators', '@angular/material/snack-bar', '@angular/cdk/a11y', '@angular/cdk/coercion', '@angular/material/form-field', '@angular/material/select', 'moment', '@angular/material/icon', '@angular/router', '@angular/material/tooltip', '@angular/material/core', '@angular/material/button', '@angular/material/checkbox', '@angular/material/input', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/card', '@angular/material/divider', '@angular/material/chips', '@angular/material/datepicker', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/sidenav', '@angular/flex-layout', 'ngx-infinite-scroll', 'ngx-doc-viewer', '@angular/cdk/keycodes', '@angular/material/autocomplete', 'ngx-editor', 'xlsx', '@angular/platform-browser', 'jsondiffpatch', '@angular/material/slide-toggle'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['ngx-techlify-core'] = {}, global.ng.core, global.ng.material.dialog, global.ng.material.table, global.ng.material.sort, global['@ngneat/until-destroy'], global.ng.common, global.ng.forms, global.ng.common.http, global.rxjs, global.rxjs.operators, global.ng.material.snackBar, global.ng.cdk.a11y, global.ng.cdk.coercion, global.ng.material.formField, global.ng.material.select, global.moment, global.ng.material.icon, global.ng.router, global.ng.material.tooltip, global.ng.material.core, global.ng.material.button, global.ng.material.checkbox, global.ng.material.input, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.card, global.ng.material.divider, global.ng.material.chips, global.ng.material.datepicker, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.sidenav, global.ng.flexLayout, global['ngx-infinite-scroll'], global['ngx-doc-viewer'], global.ng.cdk.keycodes, global.ng.material.autocomplete, global['ngx-editor'], global.xlsx, global.ng.platformBrowser, global.jsondiffpatch, global.ng.material.slideToggle));
5
+ }(this, (function (exports, i0, dialog, table, sort, untilDestroy, common, forms, i1$1, rxjs, operators, i1, a11y, coercion, formField, select, moment_, icon, i1$2, tooltip, core, button, checkbox, input, menu, progressSpinner, card, divider, chips, datepicker, list, buttonToggle, sidenav, flexLayout, ngxInfiniteScroll, ngxDocViewer, keycodes, autocomplete, ngxEditor, XLSX, platformBrowser, jsondiffpatch, slideToggle) { 'use strict';
6
6
 
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
@@ -1570,6 +1570,9 @@
1570
1570
  .skipHeader()
1571
1571
  .post("api/entity-files-upload", formData).toPromise();
1572
1572
  };
1573
+ EntityFileService.prototype.bulkUpdate = function (model) {
1574
+ return this.http.post("api/entity-files/bulk-update", model).toPromise();
1575
+ };
1573
1576
  return EntityFileService;
1574
1577
  }());
1575
1578
  EntityFileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function EntityFileService_Factory() { return new EntityFileService(i0.ɵɵinject(HttpService)); }, token: EntityFileService, providedIn: "root" });
@@ -1760,7 +1763,7 @@
1760
1763
  EntityFileFormComponent.decorators = [
1761
1764
  { type: i0.Component, args: [{
1762
1765
  selector: 'entity-file-form',
1763
- template: "<form [formGroup]=\"entityFileGroup\" (ngSubmit)=\"submit()\">\n <div fxLayout=\"column\" class=\"mat-typography\">\n <div mat-dialog-title class=\"text-center\">\n <div>Entity File</div>\n </div>\n <div mat-dialog-content fxLayout=\"column\" fxLayoutAlign.=\"start\">\n <ng-container *ngIf=\"!hideTitleAndDetails\">\n <mat-form-field>\n <input type=\"text\" matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\">\n </mat-form-field>\n <mat-form-field>\n <textarea matInput formControlName=\"details\" placeholder=\"Details\" autocomplete=\"off\"></textarea>\n </mat-form-field>\n </ng-container>\n <ng-container *ngIf=\"useTechlifyTags\">\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <app-techlify-tagger-tag-form-field modelType=\"entity-file\" formControlName=\"tag_ids\"\n [modelId]=\"entityFileGroup.get('id').value\"></app-techlify-tagger-tag-form-field>\n </mat-form-field>\n </ng-container>\n <ng-template #fileUpload>\n <section fxFlex=\"100%\">\n <div>Entity File*</div>\n <app-file-dropper [config]=\"fileConfig\" (fileChanged)=\"fileChanged($event)\" [fileArray]=\"fileList\">\n </app-file-dropper>\n <div class=\"text-danger\" *ngIf=\"isFieldValid('url')\">\n {{getErrorMessage(\"url\")}}\n </div>\n </section>\n </ng-template>\n <div fxFlex=\"100%\" class=\"mt-2\" *ngIf=\"entityFileGroup.get('url').value;else fileUpload;\">\n <app-document-viewer [file]=\"entityFileGroup.get('file').value\" [fileUrl]=\"entityFileGroup.get('url').value\"\n [config]=\"this.viewerConfig\" (remove)=\"removeFile()\" [disableEdit]=\"updateMode\">\n </app-document-viewer>\n </div>\n <div class=\"mt-4 mb-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"dialogRef.close()\">\n Cancel\n </button>\n <button mat-raised-button type=\"submit\" color=\"primary\">Save</button>\n </div>\n </div>\n </div>\n</form>\n",
1766
+ template: "<form [formGroup]=\"entityFileGroup\" (ngSubmit)=\"submit()\">\n <div fxLayout=\"column\" class=\"mat-typography\">\n <div mat-dialog-title class=\"text-center\">\n <div>Entity File</div>\n </div>\n <div mat-dialog-content fxLayout=\"column\" fxLayoutAlign.=\"start\">\n <ng-container *ngIf=\"!hideTitleAndDetails\">\n <mat-form-field>\n <input type=\"text\" matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\">\n </mat-form-field>\n <mat-form-field>\n <textarea matInput formControlName=\"details\" placeholder=\"Details\" autocomplete=\"off\"></textarea>\n </mat-form-field>\n </ng-container>\n <ng-container *ngIf=\"useTechlifyTags\">\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <app-techlify-tagger-tag-form-field modelType=\"entity-file\" formControlName=\"tag_ids\"\n [modelId]=\"entityFileGroup.get('id').value\" placeholder=\"Enter new tag\"></app-techlify-tagger-tag-form-field>\n </mat-form-field>\n </ng-container>\n <ng-template #fileUpload>\n <section fxFlex=\"100%\">\n <div>Entity File*</div>\n <app-file-dropper [config]=\"fileConfig\" (fileChanged)=\"fileChanged($event)\" [fileArray]=\"fileList\">\n </app-file-dropper>\n <div class=\"text-danger\" *ngIf=\"isFieldValid('url')\">\n {{getErrorMessage(\"url\")}}\n </div>\n </section>\n </ng-template>\n <div fxFlex=\"100%\" class=\"mt-2\" *ngIf=\"entityFileGroup.get('url').value;else fileUpload;\">\n <app-document-viewer [file]=\"entityFileGroup.get('file').value\" [fileUrl]=\"entityFileGroup.get('url').value\"\n [config]=\"this.viewerConfig\" (remove)=\"removeFile()\" [disableEdit]=\"updateMode\">\n </app-document-viewer>\n </div>\n <div class=\"mt-4 mb-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"dialogRef.close()\">\n Cancel\n </button>\n <button mat-raised-button type=\"submit\" color=\"primary\">Save</button>\n </div>\n </div>\n </div>\n</form>\n",
1764
1767
  styles: [""]
1765
1768
  },] }
1766
1769
  ];
@@ -1774,14 +1777,18 @@
1774
1777
  ]; };
1775
1778
 
1776
1779
  exports.ɵo = /** @class */ (function () {
1777
- function EntityFilesViewAllComponent(entityFileService, location, alertService, dialog, fb) {
1780
+ function EntityFilesViewAllComponent(entityFileService, location, alertService, dialog, fb, errorHandler) {
1778
1781
  this.entityFileService = entityFileService;
1779
1782
  this.location = location;
1780
1783
  this.alertService = alertService;
1781
1784
  this.dialog = dialog;
1782
1785
  this.fb = fb;
1786
+ this.errorHandler = errorHandler;
1783
1787
  this.viewOnly = false;
1784
1788
  this.allowMultipleFiles = false;
1789
+ this.allowBulkUpdate = false;
1790
+ this.documentIds = [];
1791
+ this.isAllSelected = false;
1785
1792
  /**
1786
1793
  * Should we allow tagging entity-files?
1787
1794
  */
@@ -1801,10 +1808,17 @@
1801
1808
  this.perPage = 25;
1802
1809
  this.lastPage = 0;
1803
1810
  this.fileList = [];
1811
+ this.dataSource = new table.MatTableDataSource();
1812
+ this.isReload = false;
1804
1813
  this.filterFormGroup = this.fb.group({
1805
1814
  title: [""],
1806
1815
  tag_ids: [""]
1807
1816
  });
1817
+ this.updateRowForm = this.fb.group({
1818
+ title: [''],
1819
+ details: [''],
1820
+ tag_ids: [''],
1821
+ });
1808
1822
  }
1809
1823
  EntityFilesViewAllComponent.prototype.ngOnInit = function () {
1810
1824
  //File dropper config
@@ -1846,6 +1860,9 @@
1846
1860
  if (!this.viewOnly) {
1847
1861
  this.displayedColumns.push('actions');
1848
1862
  }
1863
+ if (this.allowBulkUpdate) {
1864
+ this.displayedColumns.push('select');
1865
+ }
1849
1866
  };
1850
1867
  EntityFilesViewAllComponent.prototype.listenRoutes = function () {
1851
1868
  var _this = this;
@@ -1871,6 +1888,7 @@
1871
1888
  result = _a.sent();
1872
1889
  this.lastPage = result.last_page || this.page;
1873
1890
  this.entityFiles = this.entityFiles.concat(result.data);
1891
+ this.dataSource = new table.MatTableDataSource(this.entityFiles);
1874
1892
  this.isWorking = false;
1875
1893
  return [2 /*return*/];
1876
1894
  }
@@ -1879,6 +1897,7 @@
1879
1897
  };
1880
1898
  EntityFilesViewAllComponent.prototype.addEntityFile = function () {
1881
1899
  var _this = this;
1900
+ this.isWorking = true;
1882
1901
  var dialogRef = this.dialog.open(EntityFileFormComponent, {
1883
1902
  width: "700px",
1884
1903
  data: {
@@ -1892,10 +1911,12 @@
1892
1911
  dialogRef.afterClosed().subscribe(function (result) { return __awaiter(_this, void 0, void 0, function () {
1893
1912
  var files;
1894
1913
  return __generator(this, function (_a) {
1914
+ this.isWorking = false;
1895
1915
  if (result) {
1896
1916
  files = __spread(this.entityFiles);
1897
1917
  files.push(result);
1898
1918
  this.entityFiles = files;
1919
+ this.dataSource = new table.MatTableDataSource(this.entityFiles);
1899
1920
  }
1900
1921
  return [2 /*return*/];
1901
1922
  });
@@ -1903,6 +1924,7 @@
1903
1924
  };
1904
1925
  EntityFilesViewAllComponent.prototype.editEntityFile = function (file) {
1905
1926
  var _this = this;
1927
+ this.isWorking = true;
1906
1928
  var dialogRef = this.dialog.open(EntityFileFormComponent, {
1907
1929
  width: "700px",
1908
1930
  autoFocus: false,
@@ -1913,6 +1935,7 @@
1913
1935
  } // Any data passed here will be injected into the model
1914
1936
  });
1915
1937
  dialogRef.afterClosed().subscribe(function (result) {
1938
+ _this.isWorking = false;
1916
1939
  if (result) {
1917
1940
  _this.reload();
1918
1941
  }
@@ -1953,6 +1976,8 @@
1953
1976
  };
1954
1977
  EntityFilesViewAllComponent.prototype.reload = function () {
1955
1978
  this.entityFiles = [];
1979
+ this.documentIds = [];
1980
+ this.isReload = false;
1956
1981
  this.page = 1;
1957
1982
  if (!this.isWorking) {
1958
1983
  this.fetchEntityFilesDetails();
@@ -2003,12 +2028,74 @@
2003
2028
  });
2004
2029
  });
2005
2030
  };
2031
+ EntityFilesViewAllComponent.prototype.selectAll = function () {
2032
+ var _this = this;
2033
+ this.documentIds = [];
2034
+ this.entityFiles.map(function (employee) {
2035
+ employee.is_selected = _this.isAllSelected;
2036
+ if (_this.isAllSelected) {
2037
+ _this.documentIds.push(employee.id);
2038
+ }
2039
+ });
2040
+ this.dataSource = new table.MatTableDataSource(this.entityFiles);
2041
+ };
2042
+ EntityFilesViewAllComponent.prototype.employeeListModified = function (event, employee) {
2043
+ this.isAllSelected = false;
2044
+ if (event.checked) {
2045
+ this.documentIds.push(employee.id);
2046
+ }
2047
+ else {
2048
+ this.documentIds = this.documentIds.filter(function (employeeData) { return employeeData != employee.id; });
2049
+ }
2050
+ };
2051
+ EntityFilesViewAllComponent.prototype.unCheckAll = function () {
2052
+ this.isAllSelected = false;
2053
+ this.documentIds = [];
2054
+ this.entityFiles.map(function (employee) {
2055
+ employee.is_selected = false;
2056
+ });
2057
+ this.dataSource = new table.MatTableDataSource(this.entityFiles);
2058
+ };
2059
+ EntityFilesViewAllComponent.prototype.resetFieldValueOfRow = function (field, event) {
2060
+ event.stopPropagation();
2061
+ this.updateRowForm.get(field).setValue("");
2062
+ };
2063
+ EntityFilesViewAllComponent.prototype.bulkUpdate = function (fieldName) {
2064
+ return __awaiter(this, void 0, void 0, function () {
2065
+ var data, error_1;
2066
+ var _this = this;
2067
+ return __generator(this, function (_a) {
2068
+ switch (_a.label) {
2069
+ case 0:
2070
+ data = this.updateRowForm.value;
2071
+ this.isReload = this.isWorking = true;
2072
+ data.field_name = fieldName;
2073
+ data.document_ids = this.documentIds;
2074
+ _a.label = 1;
2075
+ case 1:
2076
+ _a.trys.push([1, 3, , 4]);
2077
+ return [4 /*yield*/, this.entityFileService.bulkUpdate(data).then(function (res) {
2078
+ _this.alertService.addAlert("Successfully updated", "success");
2079
+ _this.isWorking = false;
2080
+ })];
2081
+ case 2:
2082
+ _a.sent();
2083
+ return [3 /*break*/, 4];
2084
+ case 3:
2085
+ error_1 = _a.sent();
2086
+ this.errorHandler.handleError(error_1);
2087
+ return [3 /*break*/, 4];
2088
+ case 4: return [2 /*return*/];
2089
+ }
2090
+ });
2091
+ });
2092
+ };
2006
2093
  return EntityFilesViewAllComponent;
2007
2094
  }());
2008
2095
  exports.ɵo.decorators = [
2009
2096
  { type: i0.Component, args: [{
2010
2097
  selector: 'app-entity-files-view-all',
2011
- template: "<div class=\"mat-typography\" *ngIf=\"!displayMode\">\n <div fxLayout=\"row\" fxLayoutGap=\"1rem\">\n <mat-card fxFlex=\"70%\">\n <mat-card-title fxLayout fxLayoutGap=\"1rem\">\n <h3 class=\"font-weight-bold primary-color\" fxLayout=\"center center\">\n <mat-icon>\n <span class=\"material-icons\">\n description\n </span>\n </mat-icon>\n {{title}}s\n </h3>\n <div>\n <button type=\"button\" class=\"mx-1\" mat-raised-button color=\"primary\" (click)=\"addEntityFile()\"\n *ngIf=\"!viewOnly\">\n <mat-icon>\n <span class=\"material-icons\">\n add_circle_outline\n </span>\n </mat-icon>\n {{title}}\n </button>\n </div>\n <form [formGroup]=\"filterFormGroup\" style=\"font-size: 10px;\" fxLayout fxLayoutGap=\"1rem\">\n <mat-form-field *ngIf=\"!removeSearch\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input type=\"text\" matInput formControlName=\"title\" placeholder=\"Search\" name=\"title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filters.title\" matSuffix mat-icon-button\n (click)=\"resetFieldValue($event, 'title')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" *ngIf=\"useTechlifyTags\">\n <mat-label>Tag</mat-label>\n <app-searchable-selector formControlName=\"tag_ids\" apiUrl=\"api/techlify-tagger-tags\" [multiple]=\"true\"\n placeHolder=\"Tag\">\n </app-searchable-selector>\n <button mat-icon-button matSuffix *ngIf=\"filterFormGroup.get('tag_ids').value.length\"\n (click)=\"resetFieldValue($event, 'tag_ids')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n </mat-card-title>\n <mat-card-content class=\"entity-file-card\">\n <table mat-table [dataSource]=\"entityFiles\" class=\"w-100\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1.5\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">\n <div>\n <span>\n {{element.title}}\n </span>\n <span>\n <a href=\"{{element.url}}\" target=\"_blank\" class=\"text-decoration-none text-muted\">\n <button mat-icon-button type=\"button\">\n <mat-icon>download</mat-icon>\n </button>\n </a>\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Details Column -->\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.details}} </td>\n </ng-container>\n\n <!-- File size Column -->\n <ng-container matColumnDef=\"file_size\">\n <th mat-header-cell *matHeaderCellDef> File Size </th>\n <td mat-cell *matCellDef=\"let element\"> {{ sizeOf(element.file_size)}} </td>\n </ng-container>\n\n <!-- Tags Column -->\n <ng-container matColumnDef=\"tag\">\n <th mat-header-cell *matHeaderCellDef> Tag </th>\n <td mat-cell *matCellDef=\"let element\" class=\"text-muted\">\n <ng-container *ngFor=\"let taggerModel of element.tags\">\n {{taggerModel?.tag?.title}},\n </ng-container>\n </td>\n </ng-container>\n\n <!-- Uploaded On Column -->\n <ng-container matColumnDef=\"uploaded_on\">\n <th mat-header-cell *matHeaderCellDef> Uploaded On </th>\n <td mat-cell *matCellDef=\"let element\">\n <div>\n {{element.created_at | date: 'mediumDate'}}\n </div>\n <div class=\"text-muted\">\n By {{element.creator?.name}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" style=\"min-width:110px\" class=\"text-muted\">\n <button type=\"button\" mat-icon-button (click)=\"editEntityFile(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"deleteEntityFile(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n <section fxFlex=\"30%\">\n <app-file-dropper [config]=\"fileConfig\" (fileChanged)=\"fileChanged($event)\" [fileArray]=\"fileList\">\n </app-file-dropper>\n </section>\n </div>\n</div>\n\n<div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"displayMode\">\n <div *ngFor=\"let efile of entityFiles\">\n <app-document-viewer [file]=\"efile.file\" [fileUrl]=\"efile.url\" [config]=\"this.viewerConfig\" [disableEdit]=\"true\">\n </app-document-viewer>\n <a href=\"{{efile.url}}\" target=\"_blank\">\n <button mat-button type=\"button\">View</button>\n </a>\n </div>\n</div>\n",
2098
+ template: "<mat-drawer-container>\n <mat-drawer style=\"z-index: 1;\" fxLayout=\"column\" [fxHide]=\"!this.documentIds.length\" fxHide.xs fxHide.sm fxHide.lt-md\n mode=\"side\" position=\"end\" opened>\n <mat-card class=\"update_card\" *ngIf=\"this.documentIds.length\">\n <mat-card-header>\n <mat-card-title>\n <div mat-dialog-title class=\"mt-2 ml-2 text-center\">\n <div>Update Selected Rows</div>\n </div>\n </mat-card-title>\n </mat-card-header>\n <mat-card-content fxLayout=\"column\">\n <form [formGroup]=\"updateRowForm\">\n <div fxLayout=\"column\">\n\n <mat-form-field fxFlex=\"100%\" class=\"px-1\">\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"updateRowForm.get('title').value || updateRowForm.get('title').value===0\"\n matSuffix mat-icon-button style=\"color:red\" (click)=\"resetFieldValueOfRow('title', $event)\">\n <mat-icon>close</mat-icon>\n </button>\n <button mat-button matSuffix mat-icon-button type=\"button\" style=\"color:green\" *ngIf=\"(updateRowForm.get('title').value || updateRowForm.get('title').value===0)\n && updateRowForm.get('title').valid\" (click)=\"bulkUpdate('title')\">\n <mat-icon>done</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"px-1\">\n <textarea matInput formControlName=\"details\" placeholder=\"Details\" autocomplete=\"off\"></textarea>\n <button mat-button *ngIf=\"updateRowForm.get('details').value || updateRowForm.get('details').value===0\"\n matSuffix mat-icon-button style=\"color:red\" (click)=\"resetFieldValueOfRow('details', $event)\">\n <mat-icon>close</mat-icon>\n </button>\n <button mat-button matSuffix mat-icon-button type=\"button\" style=\"color:green\" *ngIf=\"(updateRowForm.get('details').value || updateRowForm.get('details').value===0)\n && updateRowForm.get('details').valid\" (click)=\"bulkUpdate('details')\">\n <mat-icon>done</mat-icon>\n </button>\n </mat-form-field>\n\n <ng-container *ngIf=\"useTechlifyTags\">\n <mat-form-field>\n <mat-label>Tag</mat-label>\n <app-techlify-tagger-tag-form-field modelType=\"entity-file\" formControlName=\"tag_ids\"\n placeholder=\"Enter new tag\">\n </app-techlify-tagger-tag-form-field>\n <button mat-button *ngIf=\"updateRowForm.get('tag_ids').value || updateRowForm.get('tag_ids').value===0\"\n matSuffix mat-icon-button style=\"color:red\" (click)=\"resetFieldValueOfRow('tag_ids', $event)\">\n <mat-icon>close</mat-icon>\n </button>\n <button mat-button matSuffix mat-icon-button type=\"button\" style=\"color:green\" *ngIf=\"(updateRowForm.get('tag_ids').value || updateRowForm.get('tag_ids').value===0)\n && updateRowForm.get('tag_ids').valid\" (click)=\"bulkUpdate('tag_ids')\">\n <mat-icon>done</mat-icon>\n </button>\n </mat-form-field>\n </ng-container>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n\n </mat-drawer>\n\n <mat-drawer-content>\n <div class=\"mat-typography\" *ngIf=\"!displayMode\">\n <div fxLayout=\"row\" fxLayoutGap=\"1rem\">\n <mat-card [fxFlex]=\"this.documentIds.length ? '100%' : '70%'\">\n <mat-card-title>\n <div fxLayout fxLayoutGap=\"1rem\">\n <h3 class=\"font-weight-bold primary-color\" fxLayout=\"center center\">\n <mat-icon>\n <span class=\"material-icons\">\n description\n </span>\n </mat-icon>\n {{title}}s\n </h3>\n <div>\n <button type=\"button\" class=\"mx-1\" mat-raised-button color=\"primary\" (click)=\"addEntityFile()\"\n *ngIf=\"!viewOnly\">\n <mat-icon>\n <span class=\"material-icons\">\n add_circle_outline\n </span>\n </mat-icon>\n {{title}}\n </button>\n </div>\n </div>\n </mat-card-title>\n <mat-card-subtitle>\n <form [formGroup]=\"filterFormGroup\" style=\"font-size: 10px;\" fxLayout fxLayoutGap=\"1rem\">\n <mat-form-field *ngIf=\"!removeSearch\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input type=\"text\" matInput formControlName=\"title\" placeholder=\"Search\" name=\"title\"\n autocomplete=\"off\" />\n <button mat-button *ngIf=\"filters.title\" matSuffix mat-icon-button\n (click)=\"resetFieldValue($event, 'title')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" *ngIf=\"useTechlifyTags && !isWorking\">\n <mat-label>Tag</mat-label>\n <app-searchable-selector formControlName=\"tag_ids\" apiUrl=\"api/techlify-tagger-tags\" [multiple]=\"true\"\n placeHolder=\"Tag\">\n </app-searchable-selector>\n <button mat-icon-button matSuffix *ngIf=\"filterFormGroup.get('tag_ids').value.length\"\n (click)=\"resetFieldValue($event, 'tag_ids')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <button mat-icon-button (click)=\"reload()\" *ngIf=\"isReload\" type=\"button\" matTooltip=\"Refresh\">\n <mat-icon>\n <span class=\"material-icons\">\n refresh\n </span>\n </mat-icon>\n </button>\n </form>\n </mat-card-subtitle>\n <mat-card-content class=\"entity-file-card\">\n <table mat-table [dataSource]=\"dataSource\" class=\"w-100\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1.5\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\">\n\n <!-- Select Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef style=\"width:30px\">\n <mat-checkbox name=\"employee\" [(ngModel)]=\"isAllSelected\" (change)=\"selectAll()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let element\" style=\"width:30px\">\n <mat-checkbox name=\"employee[{{element?.id}}]\" (click)=\"$event.stopPropagation()\"\n [(ngModel)]=\"element.is_selected\" (change)=\"employeeListModified($event, element)\"\n [disabled]=\"!entityFiles.length\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\">\n <div>\n <span>\n {{element.title}}\n </span>\n <span>\n <a href=\"{{element.url}}\" target=\"_blank\" class=\"text-decoration-none text-muted\">\n <button mat-icon-button type=\"button\">\n <mat-icon>download</mat-icon>\n </button>\n </a>\n </span>\n </div>\n </td>\n </ng-container>\n\n <!-- Details Column -->\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element.details\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- File size Column -->\n <ng-container matColumnDef=\"file_size\">\n <th mat-header-cell *matHeaderCellDef> File Size </th>\n <td mat-cell *matCellDef=\"let element\"> {{ sizeOf(element.file_size)}} </td>\n </ng-container>\n\n <!-- Tags Column -->\n <ng-container matColumnDef=\"tag\">\n <th mat-header-cell *matHeaderCellDef> Tag </th>\n <td mat-cell *matCellDef=\"let element\" class=\"p-1\">\n <mat-chip-list aria-label=\"Tags\">\n <mat-chip *ngFor=\"let taggerModel of element.tags\">\n {{taggerModel?.tag?.title}}\n </mat-chip>\n </mat-chip-list>\n </td>\n </ng-container>\n\n <!-- Uploaded On Column -->\n <ng-container matColumnDef=\"uploaded_on\">\n <th mat-header-cell *matHeaderCellDef> Uploaded On </th>\n <td mat-cell *matCellDef=\"let element\">\n <div>\n {{element.created_at | date: 'mediumDate'}}\n </div>\n <div class=\"text-muted\">\n By {{element.creator?.name}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" style=\"min-width:110px\" class=\"text-muted\">\n <button type=\"button\" mat-icon-button (click)=\"editEntityFile(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"deleteEntityFile(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n <section fxFlex=\"30%\" *ngIf=\"!this.documentIds.length\">\n <app-file-dropper [config]=\"fileConfig\" (fileChanged)=\"fileChanged($event)\" [fileArray]=\"fileList\">\n </app-file-dropper>\n </section>\n </div>\n </div>\n </mat-drawer-content>\n\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"displayMode\">\n <div *ngFor=\"let efile of entityFiles\">\n <app-document-viewer [file]=\"efile.file\" [fileUrl]=\"efile.url\" [config]=\"this.viewerConfig\" [disableEdit]=\"true\">\n </app-document-viewer>\n <a href=\"{{efile.url}}\" target=\"_blank\">\n <button mat-button type=\"button\">View</button>\n </a>\n </div>\n </div>\n",
2012
2099
  styles: [""]
2013
2100
  },] }
2014
2101
  ];
@@ -2017,7 +2104,8 @@
2017
2104
  { type: common.Location },
2018
2105
  { type: AlertService },
2019
2106
  { type: dialog.MatDialog },
2020
- { type: forms.FormBuilder }
2107
+ { type: forms.FormBuilder },
2108
+ { type: ErrorHandlerService }
2021
2109
  ]; };
2022
2110
  exports.ɵo.propDecorators = {
2023
2111
  entityId: [{ type: i0.Input }],
@@ -2027,6 +2115,7 @@
2027
2115
  hideTitleAndDetails: [{ type: i0.Input }],
2028
2116
  displayMode: [{ type: i0.Input }],
2029
2117
  allowMultipleFiles: [{ type: i0.Input }],
2118
+ allowBulkUpdate: [{ type: i0.Input }],
2030
2119
  useTechlifyTags: [{ type: i0.Input }],
2031
2120
  title: [{ type: i0.Input }]
2032
2121
  };
@@ -2550,7 +2639,7 @@
2550
2639
  };
2551
2640
 
2552
2641
  var SearchableSelectorComponent_1;
2553
- exports.ɵq = SearchableSelectorComponent_1 = /** @class */ (function () {
2642
+ exports.ɵs = SearchableSelectorComponent_1 = /** @class */ (function () {
2554
2643
  function SearchableSelectorComponent(formBuilder, _focusMonitor, http, _elementRef, dialog, ngControl) {
2555
2644
  var _this = this;
2556
2645
  this._focusMonitor = _focusMonitor;
@@ -2828,8 +2917,8 @@
2828
2917
  };
2829
2918
  return SearchableSelectorComponent;
2830
2919
  }());
2831
- exports.ɵq.nextId = 0;
2832
- exports.ɵq.decorators = [
2920
+ exports.ɵs.nextId = 0;
2921
+ exports.ɵs.decorators = [
2833
2922
  { type: i0.Component, args: [{
2834
2923
  selector: 'app-searchable-selector',
2835
2924
  template: "<div [formGroup]=\"selectorForm\" class=\"searchable-selctor-container\">\n <mat-select formControlName=\"select_value\" focused=\"false\" [multiple]=\"multiple\" [required]=\"required\"\n autocomplete=\"off\" (selectionChange)=\"_handleInput()\" msInfiniteScroll (infiniteScroll)=\"onScroll()\"\n (openedChange)=\"openedChange($event)\">\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n </mat-form-field>\n <div>\n <!-- TODO:Implement scroll only for options and have search fixed -->\n <mat-option *ngFor=\" let item of dataItems\" [value]=\"getPropertyValue(item,valueField)\">\n {{getPropertyValue(item,titleField)}}\n </mat-option>\n </div>\n <div fxlayout=\"column\" class=\"w-100\" fxLayoutAlign=\"center center\">\n <mat-spinner class=\"my-4\" color=\"primary\" diameter=\"30\" *ngIf=\"isLoading\"></mat-spinner>\n </div>\n </mat-select>\n <mat-icon *ngIf=\"add\" class=\"relative-icon\" matSuffix (click)=\"addItem($event)\">add_circle_outline</mat-icon>\n <mat-icon *ngIf=\"edit && selectedValue\" class=\"relative-icon\" matSuffix (click)=\"editItem($event)\">edit</mat-icon>\n</div>",
@@ -2842,7 +2931,7 @@
2842
2931
  styles: [".searchable-selctor-container{display:flex}.relative-icon{position:relative;top:-4px}"]
2843
2932
  },] }
2844
2933
  ];
2845
- exports.ɵq.ctorParameters = function () { return [
2934
+ exports.ɵs.ctorParameters = function () { return [
2846
2935
  { type: forms.FormBuilder },
2847
2936
  { type: a11y.FocusMonitor },
2848
2937
  { type: HttpService },
@@ -2850,7 +2939,7 @@
2850
2939
  { type: dialog.MatDialog },
2851
2940
  { type: forms.NgControl, decorators: [{ type: i0.Optional }, { type: i0.Self }] }
2852
2941
  ]; };
2853
- exports.ɵq.propDecorators = {
2942
+ exports.ɵs.propDecorators = {
2854
2943
  valueField: [{ type: i0.Input }],
2855
2944
  titleField: [{ type: i0.Input }],
2856
2945
  apiUrl: [{ type: i0.Input }],
@@ -2877,9 +2966,9 @@
2877
2966
  disabled: [{ type: i0.Input }],
2878
2967
  value: [{ type: i0.Input }]
2879
2968
  };
2880
- exports.ɵq = SearchableSelectorComponent_1 = __decorate([
2969
+ exports.ɵs = SearchableSelectorComponent_1 = __decorate([
2881
2970
  untilDestroy.UntilDestroy()
2882
- ], exports.ɵq);
2971
+ ], exports.ɵs);
2883
2972
 
2884
2973
  var MatSelectInfiniteScrollDirective = /** @class */ (function () {
2885
2974
  function MatSelectInfiniteScrollDirective(matSelect, ngZone) {
@@ -3201,7 +3290,7 @@
3201
3290
  }
3202
3291
 
3203
3292
  var TimelineFilterComponent_1;
3204
- exports.ɵbb = TimelineFilterComponent_1 = /** @class */ (function () {
3293
+ exports.ɵbc = TimelineFilterComponent_1 = /** @class */ (function () {
3205
3294
  function TimelineFilterComponent(formBuilder, ngControl, datePipe) {
3206
3295
  this.ngControl = ngControl;
3207
3296
  this.datePipe = datePipe;
@@ -3377,8 +3466,8 @@
3377
3466
  };
3378
3467
  return TimelineFilterComponent;
3379
3468
  }());
3380
- exports.ɵbb.nextId = 0;
3381
- exports.ɵbb.decorators = [
3469
+ exports.ɵbc.nextId = 0;
3470
+ exports.ɵbc.decorators = [
3382
3471
  { type: i0.Component, args: [{
3383
3472
  selector: 'app-timeline-filter',
3384
3473
  template: "<ng-container *ngIf=\"form\" [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>{{labelText}}</mat-label>\n <mat-select [formControl]=\"timelineValue\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline.value\">\n {{timeline.viewValue}}\n </mat-option>\n </mat-select>\n <button mat-button *ngIf=\"showClearbutton && timelineValue.value\" matSuffix mat-icon-button\n (click)=\"timelineValue.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <ng-container *ngIf=\"showCustomDateFields\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>From Date</mat-label>\n <input matInput formControlName=\"{{dateFrom}}\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateFrom)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateFrom)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>To Date</mat-label>\n <input matInput formControlName=\"{{dateTo}}\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateTo)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateTo)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n </ng-container>\n</ng-container>\n<div *ngIf=\"!form\" [formGroup]=\"selectorForm\">\n <mat-select formControlName=\"select_value\" focused=\"false\" [required]=\"required\"\n autocomplete=\"off\" (selectionChange)=\"_handleInput()\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline?.value\">\n {{ timeline?.viewValue }} {{ selectedRange?.show_custom_field && timeline?.value == 1 ? getDateRangeString() : '' }}\n </mat-option>\n </mat-select>\n <mat-date-range-input hidden (dateChange)=\"onCustomDateChange($event)\" [rangePicker]=\"picker\">\n <input matStartDate #customStartDate>\n <input matEndDate (dateChange)=\"dateRangeChange(customStartDate, customEndDate)\" #customEndDate>\n </mat-date-range-input>\n <mat-date-range-picker #picker [touchUi]=\"touchUi\"></mat-date-range-picker>\n</div>\n",
@@ -3391,12 +3480,12 @@
3391
3480
  styles: [""]
3392
3481
  },] }
3393
3482
  ];
3394
- exports.ɵbb.ctorParameters = function () { return [
3483
+ exports.ɵbc.ctorParameters = function () { return [
3395
3484
  { type: forms.FormBuilder },
3396
3485
  { type: forms.NgControl, decorators: [{ type: i0.Optional }, { type: i0.Self }] },
3397
3486
  { type: common.DatePipe }
3398
3487
  ]; };
3399
- exports.ɵbb.propDecorators = {
3488
+ exports.ɵbc.propDecorators = {
3400
3489
  picker: [{ type: i0.ViewChild, args: ['picker',] }],
3401
3490
  timelineValue: [{ type: i0.Input }],
3402
3491
  timelines: [{ type: i0.Input }],
@@ -3415,9 +3504,9 @@
3415
3504
  disabled: [{ type: i0.Input }],
3416
3505
  value: [{ type: i0.Input }]
3417
3506
  };
3418
- exports.ɵbb = TimelineFilterComponent_1 = __decorate([
3507
+ exports.ɵbc = TimelineFilterComponent_1 = __decorate([
3419
3508
  untilDestroy.UntilDestroy()
3420
- ], exports.ɵbb);
3509
+ ], exports.ɵbc);
3421
3510
 
3422
3511
  var LoaderComponent = /** @class */ (function () {
3423
3512
  function LoaderComponent() {
@@ -3779,7 +3868,8 @@
3779
3868
  datepicker.MatDatepickerModule,
3780
3869
  list.MatListModule,
3781
3870
  tooltip.MatTooltipModule,
3782
- buttonToggle.MatButtonToggleModule
3871
+ buttonToggle.MatButtonToggleModule,
3872
+ sidenav.MatSidenavModule
3783
3873
  ]
3784
3874
  },] }
3785
3875
  ];
@@ -3912,7 +4002,7 @@
3912
4002
  this.selectable = true;
3913
4003
  this.removable = true;
3914
4004
  this.separatorKeysCodes = [keycodes.ENTER, keycodes.COMMA];
3915
- this.placeholder = 'New Tag..';
4005
+ this.placeholder = 'Enter new Tag..';
3916
4006
  this.apiUrl = 'api/techlify-tagger-tags';
3917
4007
  this.createApiUrl = 'api/techlify-tagger-tags';
3918
4008
  this.isCreateable = true;
@@ -4270,44 +4360,16 @@
4270
4360
  MaterialModule
4271
4361
  ],
4272
4362
  declarations: [
4273
- exports.ɵq,
4363
+ exports.ɵs,
4274
4364
  MatSelectInfiniteScrollDirective
4275
4365
  ],
4276
4366
  exports: [
4277
- exports.ɵq,
4367
+ exports.ɵs,
4278
4368
  MatSelectInfiniteScrollDirective
4279
4369
  ]
4280
4370
  },] }
4281
4371
  ];
4282
4372
 
4283
- var EntityFilesViewAllModule = /** @class */ (function () {
4284
- function EntityFilesViewAllModule() {
4285
- }
4286
- return EntityFilesViewAllModule;
4287
- }());
4288
- EntityFilesViewAllModule.decorators = [
4289
- { type: i0.NgModule, args: [{
4290
- declarations: [EntityFileFormComponent, exports.ɵo],
4291
- imports: [
4292
- common.CommonModule,
4293
- forms.FormsModule,
4294
- forms.ReactiveFormsModule,
4295
- flexLayout.FlexLayoutModule,
4296
- FileDropperModule,
4297
- DocumentViewerModule,
4298
- ngxInfiniteScroll.InfiniteScrollModule,
4299
- ActionPopupModule,
4300
- MaterialModule,
4301
- TechlifyTaggerTagFormFieldModule,
4302
- SearchableSelectorModule
4303
- ],
4304
- exports: [
4305
- exports.ɵo
4306
- ],
4307
- entryComponents: [EntityFileFormComponent]
4308
- },] }
4309
- ];
4310
-
4311
4373
  var ReadMoreComponent = /** @class */ (function () {
4312
4374
  function ReadMoreComponent() {
4313
4375
  this.maxLength = 100;
@@ -4370,6 +4432,35 @@
4370
4432
  },] }
4371
4433
  ];
4372
4434
 
4435
+ var EntityFilesViewAllModule = /** @class */ (function () {
4436
+ function EntityFilesViewAllModule() {
4437
+ }
4438
+ return EntityFilesViewAllModule;
4439
+ }());
4440
+ EntityFilesViewAllModule.decorators = [
4441
+ { type: i0.NgModule, args: [{
4442
+ declarations: [EntityFileFormComponent, exports.ɵo],
4443
+ imports: [
4444
+ common.CommonModule,
4445
+ forms.FormsModule,
4446
+ forms.ReactiveFormsModule,
4447
+ flexLayout.FlexLayoutModule,
4448
+ FileDropperModule,
4449
+ DocumentViewerModule,
4450
+ ngxInfiniteScroll.InfiniteScrollModule,
4451
+ ActionPopupModule,
4452
+ MaterialModule,
4453
+ TechlifyTaggerTagFormFieldModule,
4454
+ SearchableSelectorModule,
4455
+ ReadMoreModule
4456
+ ],
4457
+ exports: [
4458
+ exports.ɵo
4459
+ ],
4460
+ entryComponents: [EntityFileFormComponent]
4461
+ },] }
4462
+ ];
4463
+
4373
4464
  var NoteModule = /** @class */ (function () {
4374
4465
  function NoteModule() {
4375
4466
  }
@@ -4436,7 +4527,7 @@
4436
4527
  }());
4437
4528
  TimelineFilterModule.decorators = [
4438
4529
  { type: i0.NgModule, args: [{
4439
- declarations: [exports.ɵbb],
4530
+ declarations: [exports.ɵbc],
4440
4531
  imports: [
4441
4532
  common.CommonModule,
4442
4533
  TimelineFilterRoutingModule,
@@ -4444,7 +4535,7 @@
4444
4535
  MaterialModule,
4445
4536
  forms.ReactiveFormsModule
4446
4537
  ],
4447
- exports: [exports.ɵbb]
4538
+ exports: [exports.ɵbc]
4448
4539
  },] }
4449
4540
  ];
4450
4541
 
@@ -4546,7 +4637,7 @@
4546
4637
  required: "Email Type is required"
4547
4638
  },
4548
4639
  };
4549
- exports.ɵbe = /** @class */ (function () {
4640
+ exports.ɵbf = /** @class */ (function () {
4550
4641
  function EmailSubscriptionUserFormComponent(fb, formValidatorService, alertService, dialogRef, data, http) {
4551
4642
  this.fb = fb;
4552
4643
  this.formValidatorService = formValidatorService;
@@ -4608,14 +4699,14 @@
4608
4699
  };
4609
4700
  return EmailSubscriptionUserFormComponent;
4610
4701
  }());
4611
- exports.ɵbe.decorators = [
4702
+ exports.ɵbf.decorators = [
4612
4703
  { type: i0.Component, args: [{
4613
4704
  selector: 'app-email-subscription-user-form',
4614
4705
  template: "<form [formGroup]=\"esUserFormGroup\" (ngSubmit)=\"submit()\" class=\"mat-typography\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Email Subscription User</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field fxFlex=\"48%\" class=\"mt-1\">\n <mat-label>User</mat-label>\n <app-searchable-selector formControlName=\"user_id\" apiUrl=\"api/users\" titleField=\"name\" required\n [selectedValue]=\"selectedUser\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('user_id')\">{{getErrorMessage('user_id')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"48%\" class=\"mt-1\">\n <mat-label>Email Type</mat-label>\n <app-searchable-selector formControlName=\"email_type_id\" apiUrl=\"api/email-subscription-types\"\n required [selectedValue]=\"selectedType\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('email_type_id')\">{{getErrorMessage('email_type_id')}}</mat-error>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button type=\"submit\" color=\"primary\" [disabled]=\"isSubmitLoading\">\n <app-loader class=\"inline-loader\" [isLoading]=\"isSubmitLoading\"></app-loader>\n Save\n </button>\n </div>\n </div>\n </div>\n\n\n </div>\n</form>",
4615
4706
  styles: [""]
4616
4707
  },] }
4617
4708
  ];
4618
- exports.ɵbe.ctorParameters = function () { return [
4709
+ exports.ɵbf.ctorParameters = function () { return [
4619
4710
  { type: forms.FormBuilder },
4620
4711
  { type: FormValidatorService },
4621
4712
  { type: AlertService },
@@ -4623,9 +4714,9 @@
4623
4714
  { type: undefined, decorators: [{ type: i0.Inject, args: [dialog.MAT_DIALOG_DATA,] }] },
4624
4715
  { type: HttpService }
4625
4716
  ]; };
4626
- exports.ɵbe = __decorate([
4717
+ exports.ɵbf = __decorate([
4627
4718
  untilDestroy.UntilDestroy()
4628
- ], exports.ɵbe);
4719
+ ], exports.ɵbf);
4629
4720
 
4630
4721
  var EmailSubscriptionUserFormModule = /** @class */ (function () {
4631
4722
  function EmailSubscriptionUserFormModule() {
@@ -4634,7 +4725,7 @@
4634
4725
  }());
4635
4726
  EmailSubscriptionUserFormModule.decorators = [
4636
4727
  { type: i0.NgModule, args: [{
4637
- declarations: [exports.ɵbe],
4728
+ declarations: [exports.ɵbf],
4638
4729
  imports: [
4639
4730
  common.CommonModule,
4640
4731
  MaterialModule,
@@ -4644,12 +4735,12 @@
4644
4735
  EmailSubscriptionUserFormRoutingModule,
4645
4736
  LoaderModule
4646
4737
  ],
4647
- entryComponents: [exports.ɵbe]
4738
+ entryComponents: [exports.ɵbf]
4648
4739
  },] }
4649
4740
  ];
4650
4741
 
4651
4742
  var log$4 = new Logger('EmailSubscriptionUser list');
4652
- exports.ɵbf = /** @class */ (function () {
4743
+ exports.ɵbg = /** @class */ (function () {
4653
4744
  function EmailSubscriptionUserListComponent(dialog, http, router) {
4654
4745
  this.dialog = dialog;
4655
4746
  this.http = http;
@@ -4710,7 +4801,7 @@
4710
4801
  };
4711
4802
  EmailSubscriptionUserListComponent.prototype.addEmailSubscriptionUser = function () {
4712
4803
  var _this = this;
4713
- var dialogRef = this.dialog.open(exports.ɵbe, {
4804
+ var dialogRef = this.dialog.open(exports.ɵbf, {
4714
4805
  width: '800px',
4715
4806
  autoFocus: false,
4716
4807
  data: {} // Any data passed here will be injected into the model
@@ -4725,7 +4816,7 @@
4725
4816
  EmailSubscriptionUserListComponent.prototype.editEmailSubscriptionUser = function (event, esUser) {
4726
4817
  var _this = this;
4727
4818
  event.stopPropagation();
4728
- var dialogRef = this.dialog.open(exports.ɵbe, {
4819
+ var dialogRef = this.dialog.open(exports.ɵbf, {
4729
4820
  width: '800px',
4730
4821
  autoFocus: false,
4731
4822
  data: {
@@ -4783,24 +4874,24 @@
4783
4874
  };
4784
4875
  return EmailSubscriptionUserListComponent;
4785
4876
  }());
4786
- exports.ɵbf.decorators = [
4877
+ exports.ɵbg.decorators = [
4787
4878
  { type: i0.Component, args: [{
4788
4879
  selector: 'app-email-subscription-user-list',
4789
4880
  template: "<div class=\"mat-typography m-4\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <app-email-subscription-user-list-filter (valueChange)=\"filterChange($event)\">\n </app-email-subscription-user-list-filter>\n <div class=\"ml-2\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addEmailSubscriptionUser()\">+\n User Subscription</button>\n </div>\n <span fxFlex></span>\n <mat-form-field appearance=\"outline\" class=\"no-padding\">\n <mat-label>Columns</mat-label>\n <mat-select [formControl]=\"displayColumns\" multiple (selectionChange)=\"columnsChange()\">\n <mat-option *ngFor=\"let column of availableDisplayColumns\" [value]=\"column.value\">{{column.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"esUserList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"email-subscription-user-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let esUser; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n <ng-container matColumnDef=\"user.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> User </th>\n <td mat-cell *matCellDef=\"let esUser;\"> {{ esUser?.user?.name }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"email_type.title\">\n <th mat-header-cell *matHeaderCellDef> Email Type </th>\n <td mat-cell *matCellDef=\"let esUser;\"> {{ esUser?.email_type?.title }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"creator.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Creator</th>\n <td mat-cell *matCellDef=\"let esUser;\">\n {{esUser?.creator?.name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created On</th>\n <td mat-cell *matCellDef=\"let esUser;\">\n {{esUser?.created_at | date:'medium' }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let esUser\">\n <button type=\"button\" mat-icon-button (click)=\"deleteEmailSubscriptionUser($event,esUser)\">\n <mat-icon>delete</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"editEmailSubscriptionUser($event,esUser)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n </section>\n</div>",
4790
4881
  styles: [".scroll-container{max-height:800px;overflow-y:auto}"]
4791
4882
  },] }
4792
4883
  ];
4793
- exports.ɵbf.ctorParameters = function () { return [
4884
+ exports.ɵbg.ctorParameters = function () { return [
4794
4885
  { type: dialog.MatDialog },
4795
4886
  { type: HttpService },
4796
4887
  { type: i1$2.Router }
4797
4888
  ]; };
4798
- exports.ɵbf.propDecorators = {
4889
+ exports.ɵbg.propDecorators = {
4799
4890
  sort: [{ type: i0.ViewChild, args: [sort.MatSort, { static: true },] }]
4800
4891
  };
4801
- exports.ɵbf = __decorate([
4892
+ exports.ɵbg = __decorate([
4802
4893
  untilDestroy.UntilDestroy()
4803
- ], exports.ɵbf);
4894
+ ], exports.ɵbg);
4804
4895
 
4805
4896
  var esulr = {
4806
4897
  title: 'Email Subscription Users',
@@ -4812,7 +4903,7 @@
4812
4903
  var routes$4 = [
4813
4904
  {
4814
4905
  path: '',
4815
- component: exports.ɵbf,
4906
+ component: exports.ɵbg,
4816
4907
  canActivate: [AuthenticationGuard],
4817
4908
  data: esulr
4818
4909
  },
@@ -4842,7 +4933,7 @@
4842
4933
  },] }
4843
4934
  ];
4844
4935
 
4845
- exports.ɵbh = /** @class */ (function () {
4936
+ exports.ɵbi = /** @class */ (function () {
4846
4937
  function EmailSubscriptionUserListFilterComponent(fb) {
4847
4938
  this.fb = fb;
4848
4939
  this.valueChange = new i0.EventEmitter();
@@ -4871,22 +4962,22 @@
4871
4962
  };
4872
4963
  return EmailSubscriptionUserListFilterComponent;
4873
4964
  }());
4874
- exports.ɵbh.decorators = [
4965
+ exports.ɵbi.decorators = [
4875
4966
  { type: i0.Component, args: [{
4876
4967
  selector: 'app-email-subscription-user-list-filter',
4877
4968
  template: "<form [formGroup]=\"esUserFilterForm\" fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" fxLayoutAlign=\"start center\">\n <mat-form-field class=\"ml-3\">\n <mat-label>User</mat-label>\n <app-searchable-selector formControlName=\"user_id\" apiUrl=\"api/users\" titleField=\"name\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('user_id')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('user_id')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class=\"ml-3\">\n <mat-label>Email Type</mat-label>\n <app-searchable-selector formControlName=\"email_type_id\" apiUrl=\"api/email-subscription-types\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('email_type_id')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('email_type_id')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</form>",
4878
4969
  styles: [""]
4879
4970
  },] }
4880
4971
  ];
4881
- exports.ɵbh.ctorParameters = function () { return [
4972
+ exports.ɵbi.ctorParameters = function () { return [
4882
4973
  { type: forms.FormBuilder }
4883
4974
  ]; };
4884
- exports.ɵbh.propDecorators = {
4975
+ exports.ɵbi.propDecorators = {
4885
4976
  valueChange: [{ type: i0.Output }]
4886
4977
  };
4887
- exports.ɵbh = __decorate([
4978
+ exports.ɵbi = __decorate([
4888
4979
  untilDestroy.UntilDestroy()
4889
- ], exports.ɵbh);
4980
+ ], exports.ɵbi);
4890
4981
 
4891
4982
  var EmailSubscriptionUserListFilterModule = /** @class */ (function () {
4892
4983
  function EmailSubscriptionUserListFilterModule() {
@@ -4895,7 +4986,7 @@
4895
4986
  }());
4896
4987
  EmailSubscriptionUserListFilterModule.decorators = [
4897
4988
  { type: i0.NgModule, args: [{
4898
- declarations: [exports.ɵbh],
4989
+ declarations: [exports.ɵbi],
4899
4990
  imports: [
4900
4991
  common.CommonModule,
4901
4992
  MaterialModule,
@@ -4904,7 +4995,7 @@
4904
4995
  SearchableSelectorModule,
4905
4996
  EmailSubscriptionUserListFilterRoutingModule
4906
4997
  ],
4907
- exports: [exports.ɵbh]
4998
+ exports: [exports.ɵbi]
4908
4999
  },] }
4909
5000
  ];
4910
5001
 
@@ -4915,7 +5006,7 @@
4915
5006
  }());
4916
5007
  EmailSubscriptionUserListModule.decorators = [
4917
5008
  { type: i0.NgModule, args: [{
4918
- declarations: [exports.ɵbf],
5009
+ declarations: [exports.ɵbg],
4919
5010
  imports: [
4920
5011
  common.CommonModule,
4921
5012
  ngxInfiniteScroll.InfiniteScrollModule,
@@ -4926,7 +5017,7 @@
4926
5017
  EmailSubscriptionUserFormModule,
4927
5018
  EmailSubscriptionUserListFilterModule
4928
5019
  ],
4929
- exports: [exports.ɵbf]
5020
+ exports: [exports.ɵbg]
4930
5021
  },] }
4931
5022
  ];
4932
5023
 
@@ -4982,7 +5073,7 @@
4982
5073
  required: "Frequency is required"
4983
5074
  },
4984
5075
  };
4985
- exports.ɵbi = /** @class */ (function () {
5076
+ exports.ɵbj = /** @class */ (function () {
4986
5077
  function EmailSubscriptionTypeFormComponent(fb, formValidatorService, alertService, dialogRef, data, http) {
4987
5078
  this.fb = fb;
4988
5079
  this.formValidatorService = formValidatorService;
@@ -5046,14 +5137,14 @@
5046
5137
  };
5047
5138
  return EmailSubscriptionTypeFormComponent;
5048
5139
  }());
5049
- exports.ɵbi.decorators = [
5140
+ exports.ɵbj.decorators = [
5050
5141
  { type: i0.Component, args: [{
5051
5142
  selector: 'app-email-subscription-type-form',
5052
5143
  template: "<form [formGroup]=\"emailSubscriptionTypeFormGroup\" (ngSubmit)=\"submit()\" class=\"mat-typography\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Email Subscription Type</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('title')\">{{getErrorMessage('title')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <input matInput formControlName=\"code\" placeholder=\"Code\" autocomplete=\"off\" required />\n <mat-hint align=\"end\">Unique Value</mat-hint>\n <mat-error *ngIf=\"isFieldValid('code')\">{{getErrorMessage('code')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <mat-label>Frequency</mat-label>\n <app-searchable-selector formControlName=\"frequency_id\" apiUrl=\"api/email-subscription-frequencies\"\n [(selectedValue)]=\"selectedFrequency\" [enableSearch]=\"false\" required>\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('frequency_id')\">{{getErrorMessage('frequency_id')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <textarea matInput formControlName=\"description\" placeholder=\"Description\"\n autocomplete=\"off\"></textarea>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button type=\"submit\" color=\"primary\" [disabled]=\"isSubmitLoading\">\n <app-loader class=\"inline-loader\" [isLoading]=\"isSubmitLoading\"></app-loader>\n Save\n </button>\n </div>\n </div>\n </div>\n\n\n </div>\n</form>",
5053
5144
  styles: [""]
5054
5145
  },] }
5055
5146
  ];
5056
- exports.ɵbi.ctorParameters = function () { return [
5147
+ exports.ɵbj.ctorParameters = function () { return [
5057
5148
  { type: forms.FormBuilder },
5058
5149
  { type: FormValidatorService },
5059
5150
  { type: AlertService },
@@ -5061,9 +5152,9 @@
5061
5152
  { type: undefined, decorators: [{ type: i0.Inject, args: [dialog.MAT_DIALOG_DATA,] }] },
5062
5153
  { type: HttpService }
5063
5154
  ]; };
5064
- exports.ɵbi = __decorate([
5155
+ exports.ɵbj = __decorate([
5065
5156
  untilDestroy.UntilDestroy()
5066
- ], exports.ɵbi);
5157
+ ], exports.ɵbj);
5067
5158
 
5068
5159
  var EmailSubscriptionTypeFormModule = /** @class */ (function () {
5069
5160
  function EmailSubscriptionTypeFormModule() {
@@ -5072,7 +5163,7 @@
5072
5163
  }());
5073
5164
  EmailSubscriptionTypeFormModule.decorators = [
5074
5165
  { type: i0.NgModule, args: [{
5075
- declarations: [exports.ɵbi],
5166
+ declarations: [exports.ɵbj],
5076
5167
  imports: [
5077
5168
  common.CommonModule,
5078
5169
  MaterialModule,
@@ -5082,12 +5173,12 @@
5082
5173
  EmailSubscriptionTypeFormRoutingModule,
5083
5174
  LoaderModule
5084
5175
  ],
5085
- exports: [exports.ɵbi],
5086
- entryComponents: [exports.ɵbi]
5176
+ exports: [exports.ɵbj],
5177
+ entryComponents: [exports.ɵbj]
5087
5178
  },] }
5088
5179
  ];
5089
5180
 
5090
- exports.ɵbj = /** @class */ (function () {
5181
+ exports.ɵbk = /** @class */ (function () {
5091
5182
  function EmailSubscriptionTypeListComponent(dialog, http) {
5092
5183
  this.dialog = dialog;
5093
5184
  this.http = http;
@@ -5151,7 +5242,7 @@
5151
5242
  };
5152
5243
  EmailSubscriptionTypeListComponent.prototype.addEmailSubscriptionType = function () {
5153
5244
  var _this = this;
5154
- var dialogRef = this.dialog.open(exports.ɵbi, {
5245
+ var dialogRef = this.dialog.open(exports.ɵbj, {
5155
5246
  width: '400px',
5156
5247
  autoFocus: false,
5157
5248
  data: {} // Any data passed here will be injected into the model
@@ -5165,7 +5256,7 @@
5165
5256
  EmailSubscriptionTypeListComponent.prototype.editEmailSubscriptionType = function (event, emailSubscriptionType) {
5166
5257
  var _this = this;
5167
5258
  event.stopPropagation();
5168
- var dialogRef = this.dialog.open(exports.ɵbi, {
5259
+ var dialogRef = this.dialog.open(exports.ɵbj, {
5169
5260
  width: '400px',
5170
5261
  autoFocus: false,
5171
5262
  data: {
@@ -5222,23 +5313,23 @@
5222
5313
  };
5223
5314
  return EmailSubscriptionTypeListComponent;
5224
5315
  }());
5225
- exports.ɵbj.decorators = [
5316
+ exports.ɵbk.decorators = [
5226
5317
  { type: i0.Component, args: [{
5227
5318
  selector: 'app-email-subscription-type-list',
5228
5319
  template: "<div class=\"mat-typography m-4\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\n <mat-form-field>\n <input matInput [formControl]=\"search\" placeholder=\"Email Type\" autocomplete=\"off\" />\n <button mat-button matSuffix mat-icon-button>\n <mat-icon>search</mat-icon>\n </button>\n <button mat-button *ngIf=\"search.value\" matSuffix mat-icon-button (click)=\"search.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <div class=\"ml-2\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addEmailSubscriptionType()\">+ Email\n Type</button>\n </div>\n <span fxFlex></span>\n <mat-form-field appearance=\"outline\" class=\"no-padding\">\n <mat-label>Columns</mat-label>\n <mat-select [formControl]=\"displayColumns\" multiple (selectionChange)=\"columnsChange()\">\n <mat-option *ngFor=\"let column of availableDisplayColumns\" [value]=\"column.value\">{{column.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"emailSubscriptionTypeList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"email-subscription-type-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Title </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.title }} </td>\n </ng-container>\n <ng-container matColumnDef=\"code\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Code </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.code }}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"frequency.title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Frequency </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.frequency?.title }}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.description }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType\">\n <button type=\"button\" mat-icon-button\n (click)=\"deleteEmailSubscriptionType($event,emailSubscriptionType)\">\n <mat-icon>delete</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button\n (click)=\"editEmailSubscriptionType($event,emailSubscriptionType)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n </section>\n</div>",
5229
5320
  styles: [".scroll-container{max-height:800px;overflow-y:auto}"]
5230
5321
  },] }
5231
5322
  ];
5232
- exports.ɵbj.ctorParameters = function () { return [
5323
+ exports.ɵbk.ctorParameters = function () { return [
5233
5324
  { type: dialog.MatDialog },
5234
5325
  { type: HttpService }
5235
5326
  ]; };
5236
- exports.ɵbj.propDecorators = {
5327
+ exports.ɵbk.propDecorators = {
5237
5328
  sort: [{ type: i0.ViewChild, args: [sort.MatSort, { static: true },] }]
5238
5329
  };
5239
- exports.ɵbj = __decorate([
5330
+ exports.ɵbk = __decorate([
5240
5331
  untilDestroy.UntilDestroy()
5241
- ], exports.ɵbj);
5332
+ ], exports.ɵbk);
5242
5333
 
5243
5334
  var estlr = {
5244
5335
  title: 'Email Subscription Type',
@@ -5250,7 +5341,7 @@
5250
5341
  var routes$8 = [
5251
5342
  {
5252
5343
  path: '',
5253
- component: exports.ɵbj,
5344
+ component: exports.ɵbk,
5254
5345
  canActivate: [AuthenticationGuard],
5255
5346
  data: estlr
5256
5347
  },
@@ -5274,7 +5365,7 @@
5274
5365
  }());
5275
5366
  EmailSubscriptionTypeListModule.decorators = [
5276
5367
  { type: i0.NgModule, args: [{
5277
- declarations: [exports.ɵbj],
5368
+ declarations: [exports.ɵbk],
5278
5369
  imports: [
5279
5370
  common.CommonModule,
5280
5371
  MaterialModule,
@@ -5284,11 +5375,11 @@
5284
5375
  EmailSubscriptionTypeFormModule,
5285
5376
  EmailSubscriptionTypeListRoutingModule
5286
5377
  ],
5287
- exports: [exports.ɵbj]
5378
+ exports: [exports.ɵbk]
5288
5379
  },] }
5289
5380
  ];
5290
5381
 
5291
- exports.ɵbk = /** @class */ (function () {
5382
+ exports.ɵbl = /** @class */ (function () {
5292
5383
  function EmailSubscriptionForUserComponent(http) {
5293
5384
  this.http = http;
5294
5385
  this.subscriptions = [];
@@ -5343,19 +5434,19 @@
5343
5434
  };
5344
5435
  return EmailSubscriptionForUserComponent;
5345
5436
  }());
5346
- exports.ɵbk.decorators = [
5437
+ exports.ɵbl.decorators = [
5347
5438
  { type: i0.Component, args: [{
5348
5439
  selector: 'app-email-subscription-for-user',
5349
5440
  template: "<div fxLayout=\"column\" class=\"container my-4\">\n\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <mat-list>\n <div mat-subheader>Available Subscriptions</div>\n <mat-list-item *ngFor=\"let sub of subscriptions\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{sub?.title}} </div>\n <div mat-line class=\"text-secondary\">{{sub?.frequency?.title}}</div>\n <div mat-line> {{sub?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button type=\"button\" *ngIf=\"!sub?.current_user_subscription\" mat-raised-button color=\"primary\"\n (click)=\"subscribe(sub)\">Subscribe</button>\n <button type=\"button\" *ngIf=\"sub?.current_user_subscription\" mat-stroked-button color=\"primary\"\n (click)=\"unsubscribe(sub)\">Unsubscribe</button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>",
5350
5441
  styles: [".scroll-container{max-height:800px;overflow-y:auto}"]
5351
5442
  },] }
5352
5443
  ];
5353
- exports.ɵbk.ctorParameters = function () { return [
5444
+ exports.ɵbl.ctorParameters = function () { return [
5354
5445
  { type: HttpService }
5355
5446
  ]; };
5356
- exports.ɵbk = __decorate([
5447
+ exports.ɵbl = __decorate([
5357
5448
  untilDestroy.UntilDestroy()
5358
- ], exports.ɵbk);
5449
+ ], exports.ɵbl);
5359
5450
 
5360
5451
  var esfur = {
5361
5452
  permissions: {
@@ -5365,7 +5456,7 @@
5365
5456
  var routes$9 = [
5366
5457
  {
5367
5458
  path: '',
5368
- component: exports.ɵbk,
5459
+ component: exports.ɵbl,
5369
5460
  canActivate: [AuthenticationGuard],
5370
5461
  data: esfur
5371
5462
  },
@@ -5389,7 +5480,7 @@
5389
5480
  }());
5390
5481
  EmailSubscriptionForUserModule.decorators = [
5391
5482
  { type: i0.NgModule, args: [{
5392
- declarations: [exports.ɵbk],
5483
+ declarations: [exports.ɵbl],
5393
5484
  imports: [
5394
5485
  common.CommonModule,
5395
5486
  ngxInfiniteScroll.InfiniteScrollModule,
@@ -5397,7 +5488,7 @@
5397
5488
  flexLayout.FlexLayoutModule,
5398
5489
  EmailSubscriptionForUserRoutingModule
5399
5490
  ],
5400
- exports: [exports.ɵbk]
5491
+ exports: [exports.ɵbl]
5401
5492
  },] }
5402
5493
  ];
5403
5494
 
@@ -5589,7 +5680,7 @@
5589
5680
  },] }
5590
5681
  ];
5591
5682
 
5592
- exports.ɵbl = /** @class */ (function () {
5683
+ exports.ɵbm = /** @class */ (function () {
5593
5684
  function TechlifyUpdatesListComponent(dialog, alertService, techlifyUpdateService, fb) {
5594
5685
  this.dialog = dialog;
5595
5686
  this.alertService = alertService;
@@ -5749,26 +5840,26 @@
5749
5840
  };
5750
5841
  return TechlifyUpdatesListComponent;
5751
5842
  }());
5752
- exports.ɵbl.decorators = [
5843
+ exports.ɵbm.decorators = [
5753
5844
  { type: i0.Component, args: [{
5754
5845
  selector: 'app-techlify-updates-list',
5755
5846
  template: "<section class=\"p-4\" fxLayout=\"column\">\n <h3 class=\"primary-color text-center\">\n App Updates\n <button mat-raised-button (click)=\"modifyTechlifyUpdate()\" class=\"primary-bg text-white\">\n <mat-icon>\n add\n </mat-icon>\n Create\n </button>\n </h3>\n <form [formGroup]=\"filterFormGroup\" fxLayout=\"row wrap\" fxLayoutGap=\"0.5rem\" fxFlex=\"100%\" style=\"font-size: 12px;\">\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('version').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <table mat-table [dataSource]=\"techlifyUpdates\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element;let i=dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Course Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.title}} </td>\n </ng-container>\n\n <!-- Version Column -->\n <ng-container matColumnDef=\"version\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Version </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.version}} </td>\n </ng-container>\n\n <!-- Released On Column -->\n <ng-container matColumnDef=\"released_on\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Released On </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.released_on | date:'mediumDate'}} </td>\n </ng-container>\n\n <!-- Learn More Link Column -->\n <ng-container matColumnDef=\"learn_more_link\">\n <th mat-header-cell *matHeaderCellDef> Learn more link </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [href]=\"element?.learn_more_link\" target=\"_blank\">\n {{element?.learn_more_link}}\n </a>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element?.description\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef> Creator </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.creator?.name}}\n <div fxLayout class=\"small\">\n {{element?.created_at | date : 'mediumDate'}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" class=\"secondary-color\">\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"modifyTechlifyUpdate(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"deleteTechlifyUpdate(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n",
5756
5847
  styles: [""]
5757
5848
  },] }
5758
5849
  ];
5759
- exports.ɵbl.ctorParameters = function () { return [
5850
+ exports.ɵbm.ctorParameters = function () { return [
5760
5851
  { type: dialog.MatDialog },
5761
5852
  { type: AlertService },
5762
5853
  { type: TechlifyUpdateService },
5763
5854
  { type: forms.FormBuilder }
5764
5855
  ]; };
5765
- exports.ɵbl = __decorate([
5856
+ exports.ɵbm = __decorate([
5766
5857
  untilDestroy.UntilDestroy()
5767
- ], exports.ɵbl);
5858
+ ], exports.ɵbm);
5768
5859
 
5769
5860
  var routes$a = [
5770
5861
  { path: '', redirectTo: 'all', pathMatch: 'full' },
5771
- { path: 'all', component: exports.ɵbl },
5862
+ { path: 'all', component: exports.ɵbm },
5772
5863
  //fallback
5773
5864
  {
5774
5865
  path: '**',
@@ -5795,7 +5886,7 @@
5795
5886
  }());
5796
5887
  TechlifyUpdateModule.decorators = [
5797
5888
  { type: i0.NgModule, args: [{
5798
- declarations: [exports.ɵbl],
5889
+ declarations: [exports.ɵbm],
5799
5890
  imports: [
5800
5891
  common.CommonModule,
5801
5892
  forms.ReactiveFormsModule,
@@ -5842,7 +5933,7 @@
5842
5933
  { type: i1$2.Router }
5843
5934
  ]; };
5844
5935
 
5845
- exports.ɵbr = /** @class */ (function () {
5936
+ exports.ɵbs = /** @class */ (function () {
5846
5937
  function TechlifyUpdateHistoryComponent(dialog, techlifyUpdateService, fb, alertService) {
5847
5938
  this.dialog = dialog;
5848
5939
  this.techlifyUpdateService = techlifyUpdateService;
@@ -5979,26 +6070,26 @@
5979
6070
  };
5980
6071
  return TechlifyUpdateHistoryComponent;
5981
6072
  }());
5982
- exports.ɵbr.decorators = [
6073
+ exports.ɵbs.decorators = [
5983
6074
  { type: i0.Component, args: [{
5984
6075
  selector: 'app-techlify-update-history',
5985
6076
  template: "<section class=\"p-4\" fxLayout=\"column\">\n <h3 class=\"primary-color text-center\">\n App Updates\n </h3>\n <form [formGroup]=\"filterFormGroup\" fxLayout=\"row wrap\" fxLayoutGap=\"0.5rem\" fxFlex=\"100%\" style=\"font-size: 12px;\">\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('version').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <table mat-table [dataSource]=\"techlifyUpdates\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element;let i=dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <!-- Course Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.title}} </td>\n </ng-container>\n\n <!-- Version Column -->\n <ng-container matColumnDef=\"version\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Version </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.version}} </td>\n </ng-container>\n\n <!-- Released On Column -->\n <ng-container matColumnDef=\"released_on\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Released On </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.released_on | date:'mediumDate'}} </td>\n </ng-container>\n\n <!-- Learn More Link Column -->\n <ng-container matColumnDef=\"learn_more_link\">\n <th mat-header-cell *matHeaderCellDef> Learn more link </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [href]=\"element?.learn_more_link\" target=\"_blank\">\n {{element?.learn_more_link}}\n </a>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element?.description\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef> Creator </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.creator?.name}}\n <div fxLayout class=\"small\">\n {{element?.created_at | date : 'mediumDate'}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" class=\"secondary-color\">\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"openUpdateView(element)\">\n <mat-icon>remove_red_eye</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n",
5986
6077
  styles: [""]
5987
6078
  },] }
5988
6079
  ];
5989
- exports.ɵbr.ctorParameters = function () { return [
6080
+ exports.ɵbs.ctorParameters = function () { return [
5990
6081
  { type: dialog.MatDialog },
5991
6082
  { type: TechlifyUpdateService },
5992
6083
  { type: forms.FormBuilder },
5993
6084
  { type: AlertService }
5994
6085
  ]; };
5995
- exports.ɵbr = __decorate([
6086
+ exports.ɵbs = __decorate([
5996
6087
  untilDestroy.UntilDestroy()
5997
- ], exports.ɵbr);
6088
+ ], exports.ɵbs);
5998
6089
 
5999
6090
  var routes$b = [
6000
6091
  { path: '', redirectTo: 'update-history', pathMatch: 'full' },
6001
- { path: 'update-history', component: exports.ɵbr },
6092
+ { path: 'update-history', component: exports.ɵbs },
6002
6093
  //fallback
6003
6094
  {
6004
6095
  path: '**',
@@ -6035,7 +6126,7 @@
6035
6126
  ReadMoreModule,
6036
6127
  TechlifyUpdateHistoryRoutingModule
6037
6128
  ],
6038
- declarations: [exports.ɵbr]
6129
+ declarations: [exports.ɵbs]
6039
6130
  },] }
6040
6131
  ];
6041
6132
 
@@ -8221,24 +8312,24 @@
8221
8312
  exports.DateValidator = DateValidator;
8222
8313
  exports.DocumentViewerComponent = DocumentViewerComponent;
8223
8314
  exports.DocumentViewerModule = DocumentViewerModule;
8224
- exports.EmailSubscriptionForUserComponent = exports.ɵbk;
8315
+ exports.EmailSubscriptionForUserComponent = exports.ɵbl;
8225
8316
  exports.EmailSubscriptionForUserModule = EmailSubscriptionForUserModule;
8226
8317
  exports.EmailSubscriptionForUserRoutingModule = EmailSubscriptionForUserRoutingModule;
8227
8318
  exports.EmailSubscriptionModule = EmailSubscriptionModule;
8228
8319
  exports.EmailSubscriptionRoutingModule = EmailSubscriptionRoutingModule;
8229
- exports.EmailSubscriptionTypeFormComponent = exports.ɵbi;
8320
+ exports.EmailSubscriptionTypeFormComponent = exports.ɵbj;
8230
8321
  exports.EmailSubscriptionTypeFormModule = EmailSubscriptionTypeFormModule;
8231
8322
  exports.EmailSubscriptionTypeFormRoutingModule = EmailSubscriptionTypeFormRoutingModule;
8232
- exports.EmailSubscriptionTypeListComponent = exports.ɵbj;
8323
+ exports.EmailSubscriptionTypeListComponent = exports.ɵbk;
8233
8324
  exports.EmailSubscriptionTypeListModule = EmailSubscriptionTypeListModule;
8234
8325
  exports.EmailSubscriptionTypeListRoutingModule = EmailSubscriptionTypeListRoutingModule;
8235
8326
  exports.EmailSubscriptionTypeModule = EmailSubscriptionTypeModule;
8236
8327
  exports.EmailSubscriptionTypeRoutingModule = EmailSubscriptionTypeRoutingModule;
8237
- exports.EmailSubscriptionUserFormComponent = exports.ɵbe;
8328
+ exports.EmailSubscriptionUserFormComponent = exports.ɵbf;
8238
8329
  exports.EmailSubscriptionUserFormModule = EmailSubscriptionUserFormModule;
8239
8330
  exports.EmailSubscriptionUserFormRoutingModule = EmailSubscriptionUserFormRoutingModule;
8240
- exports.EmailSubscriptionUserListComponent = exports.ɵbf;
8241
- exports.EmailSubscriptionUserListFilterComponent = exports.ɵbh;
8331
+ exports.EmailSubscriptionUserListComponent = exports.ɵbg;
8332
+ exports.EmailSubscriptionUserListFilterComponent = exports.ɵbi;
8242
8333
  exports.EmailSubscriptionUserListFilterModule = EmailSubscriptionUserListFilterModule;
8243
8334
  exports.EmailSubscriptionUserListFilterRoutingModule = EmailSubscriptionUserListFilterRoutingModule;
8244
8335
  exports.EmailSubscriptionUserListModule = EmailSubscriptionUserListModule;
@@ -8277,7 +8368,7 @@
8277
8368
  exports.ReadMoreComponent = ReadMoreComponent;
8278
8369
  exports.ReadMoreModule = ReadMoreModule;
8279
8370
  exports.RouteReusableStrategy = RouteReusableStrategy;
8280
- exports.SearchableSelectorComponent = exports.ɵq;
8371
+ exports.SearchableSelectorComponent = exports.ɵs;
8281
8372
  exports.SearchableSelectorModule = SearchableSelectorModule;
8282
8373
  exports.SnackModule = SnackModule;
8283
8374
  exports.StorageService = StorageService;
@@ -8295,7 +8386,7 @@
8295
8386
  exports.TechlifyUpdateHistoryModule = TechlifyUpdateHistoryModule;
8296
8387
  exports.TechlifyUpdateModule = TechlifyUpdateModule;
8297
8388
  exports.Timeline = Timeline;
8298
- exports.TimelineFilterComponent = exports.ɵbb;
8389
+ exports.TimelineFilterComponent = exports.ɵbc;
8299
8390
  exports.TimelineFilterModule = TimelineFilterModule;
8300
8391
  exports.TokenInterceptor = TokenInterceptor;
8301
8392
  exports.UpdateNotifierComponent = UpdateNotifierComponent;
@@ -8308,20 +8399,20 @@
8308
8399
  exports.esulr = esulr;
8309
8400
  exports.ɵa = SnackModule;
8310
8401
  exports.ɵb = SuccessSnackComponent;
8311
- exports.ɵba = NumberSelector;
8312
- exports.ɵbc = TimelineFilterRoutingModule;
8313
- exports.ɵbd = LoaderComponent;
8314
- exports.ɵbg = AuthenticationGuard;
8315
- exports.ɵbm = TechlifyUpdateService;
8316
- exports.ɵbn = TechlifyUpdateRoutingModule;
8317
- exports.ɵbo = TechlifyUpdateFormModule;
8318
- exports.ɵbp = TechlifyUpdateFormComponent;
8319
- exports.ɵbq = TechlifyUpdateHistoryRoutingModule;
8320
- exports.ɵbs = UpdateNotifierSnackComponent;
8321
- exports.ɵbt = UpdateViewModule;
8322
- exports.ɵbu = UpdateViewComponent;
8323
- exports.ɵbv = DataManager;
8324
- exports.ɵbw = ErrorHandlerService;
8402
+ exports.ɵba = NumItemsSelector;
8403
+ exports.ɵbb = NumberSelector;
8404
+ exports.ɵbd = TimelineFilterRoutingModule;
8405
+ exports.ɵbe = LoaderComponent;
8406
+ exports.ɵbh = AuthenticationGuard;
8407
+ exports.ɵbn = TechlifyUpdateService;
8408
+ exports.ɵbo = TechlifyUpdateRoutingModule;
8409
+ exports.ɵbp = TechlifyUpdateFormModule;
8410
+ exports.ɵbq = TechlifyUpdateFormComponent;
8411
+ exports.ɵbr = TechlifyUpdateHistoryRoutingModule;
8412
+ exports.ɵbt = UpdateNotifierSnackComponent;
8413
+ exports.ɵbu = UpdateViewModule;
8414
+ exports.ɵbv = UpdateViewComponent;
8415
+ exports.ɵbw = DataManager;
8325
8416
  exports.ɵbx = FieldMappingComponent;
8326
8417
  exports.ɵby = FailedItemsListComponent;
8327
8418
  exports.ɵbz = ImportHistoryListComponent;
@@ -8341,16 +8432,16 @@
8341
8432
  exports.ɵl = FormValidatorService;
8342
8433
  exports.ɵm = EntityFileService;
8343
8434
  exports.ɵn = AlertService;
8344
- exports.ɵp = FileDropperComponent;
8345
- exports.ɵr = MatSelectInfiniteScrollDirective;
8346
- exports.ɵs = NoteListComponent;
8347
- exports.ɵt = NoteService;
8348
- exports.ɵu = NoteFormComponent;
8349
- exports.ɵv = CommentFormComponent;
8350
- exports.ɵw = CredentialsService;
8351
- exports.ɵx = ConfigService;
8352
- exports.ɵy = TechlifyConfig;
8353
- exports.ɵz = NumItemsSelector;
8435
+ exports.ɵp = ErrorHandlerService;
8436
+ exports.ɵq = TechlifyConfig;
8437
+ exports.ɵr = FileDropperComponent;
8438
+ exports.ɵt = MatSelectInfiniteScrollDirective;
8439
+ exports.ɵu = NoteListComponent;
8440
+ exports.ɵv = NoteService;
8441
+ exports.ɵw = NoteFormComponent;
8442
+ exports.ɵx = CommentFormComponent;
8443
+ exports.ɵy = CredentialsService;
8444
+ exports.ɵz = ConfigService;
8354
8445
 
8355
8446
  Object.defineProperty(exports, '__esModule', { value: true });
8356
8447