ngx-techlify-core 11.4.9 → 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.
- package/bundles/ngx-techlify-core.umd.js +211 -125
- package/bundles/ngx-techlify-core.umd.js.map +1 -1
- package/bundles/ngx-techlify-core.umd.min.js +1 -1
- package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
- package/esm2015/lib/entity-files/entity-file.service.js +4 -1
- package/esm2015/lib/entity-files/entity-files-view-all.component.js +74 -4
- package/esm2015/lib/material.module.js +4 -2
- package/esm2015/ngx-techlify-core.js +35 -35
- package/fesm2015/ngx-techlify-core.js +78 -5
- package/fesm2015/ngx-techlify-core.js.map +1 -1
- package/lib/entity-files/entity-file.service.d.ts +1 -0
- package/lib/entity-files/entity-files-view-all.component.d.ts +15 -1
- package/ngx-techlify-core.d.ts +34 -34
- package/ngx-techlify-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -30,6 +30,7 @@ import { MatChipsModule } from '@angular/material/chips';
|
|
|
30
30
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
31
31
|
import { MatListModule } from '@angular/material/list';
|
|
32
32
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
33
|
+
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
33
34
|
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
34
35
|
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
35
36
|
import { NgxDocViewerModule } from 'ngx-doc-viewer';
|
|
@@ -1228,6 +1229,9 @@ class EntityFileService {
|
|
|
1228
1229
|
.skipHeader()
|
|
1229
1230
|
.post("api/entity-files-upload", formData).toPromise();
|
|
1230
1231
|
}
|
|
1232
|
+
bulkUpdate(model) {
|
|
1233
|
+
return this.http.post(`api/entity-files/bulk-update`, model).toPromise();
|
|
1234
|
+
}
|
|
1231
1235
|
}
|
|
1232
1236
|
EntityFileService.ɵprov = ɵɵdefineInjectable({ factory: function EntityFileService_Factory() { return new EntityFileService(ɵɵinject(HttpService)); }, token: EntityFileService, providedIn: "root" });
|
|
1233
1237
|
EntityFileService.decorators = [
|
|
@@ -1401,14 +1405,18 @@ EntityFileFormComponent.ctorParameters = () => [
|
|
|
1401
1405
|
];
|
|
1402
1406
|
|
|
1403
1407
|
let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
|
|
1404
|
-
constructor(entityFileService, location, alertService, dialog, fb) {
|
|
1408
|
+
constructor(entityFileService, location, alertService, dialog, fb, errorHandler) {
|
|
1405
1409
|
this.entityFileService = entityFileService;
|
|
1406
1410
|
this.location = location;
|
|
1407
1411
|
this.alertService = alertService;
|
|
1408
1412
|
this.dialog = dialog;
|
|
1409
1413
|
this.fb = fb;
|
|
1414
|
+
this.errorHandler = errorHandler;
|
|
1410
1415
|
this.viewOnly = false;
|
|
1411
1416
|
this.allowMultipleFiles = false;
|
|
1417
|
+
this.allowBulkUpdate = false;
|
|
1418
|
+
this.documentIds = [];
|
|
1419
|
+
this.isAllSelected = false;
|
|
1412
1420
|
/**
|
|
1413
1421
|
* Should we allow tagging entity-files?
|
|
1414
1422
|
*/
|
|
@@ -1428,10 +1436,17 @@ let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
|
|
|
1428
1436
|
this.perPage = 25;
|
|
1429
1437
|
this.lastPage = 0;
|
|
1430
1438
|
this.fileList = [];
|
|
1439
|
+
this.dataSource = new MatTableDataSource();
|
|
1440
|
+
this.isReload = false;
|
|
1431
1441
|
this.filterFormGroup = this.fb.group({
|
|
1432
1442
|
title: [""],
|
|
1433
1443
|
tag_ids: [""]
|
|
1434
1444
|
});
|
|
1445
|
+
this.updateRowForm = this.fb.group({
|
|
1446
|
+
title: [''],
|
|
1447
|
+
details: [''],
|
|
1448
|
+
tag_ids: [''],
|
|
1449
|
+
});
|
|
1435
1450
|
}
|
|
1436
1451
|
ngOnInit() {
|
|
1437
1452
|
//File dropper config
|
|
@@ -1473,6 +1488,9 @@ let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
|
|
|
1473
1488
|
if (!this.viewOnly) {
|
|
1474
1489
|
this.displayedColumns.push('actions');
|
|
1475
1490
|
}
|
|
1491
|
+
if (this.allowBulkUpdate) {
|
|
1492
|
+
this.displayedColumns.push('select');
|
|
1493
|
+
}
|
|
1476
1494
|
}
|
|
1477
1495
|
listenRoutes() {
|
|
1478
1496
|
this.filterFormGroup.valueChanges.pipe(debounceTime(500), untilDestroyed(this))
|
|
@@ -1491,6 +1509,7 @@ let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
|
|
|
1491
1509
|
const result = yield this.entityFileService.getEntityFiles(this.filters);
|
|
1492
1510
|
this.lastPage = result.last_page || this.page;
|
|
1493
1511
|
this.entityFiles = this.entityFiles.concat(result.data);
|
|
1512
|
+
this.dataSource = new MatTableDataSource(this.entityFiles);
|
|
1494
1513
|
this.isWorking = false;
|
|
1495
1514
|
});
|
|
1496
1515
|
}
|
|
@@ -1512,6 +1531,7 @@ let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
|
|
|
1512
1531
|
const files = [...this.entityFiles];
|
|
1513
1532
|
files.push(result);
|
|
1514
1533
|
this.entityFiles = files;
|
|
1534
|
+
this.dataSource = new MatTableDataSource(this.entityFiles);
|
|
1515
1535
|
}
|
|
1516
1536
|
}));
|
|
1517
1537
|
}
|
|
@@ -1559,6 +1579,8 @@ let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
|
|
|
1559
1579
|
}
|
|
1560
1580
|
reload() {
|
|
1561
1581
|
this.entityFiles = [];
|
|
1582
|
+
this.documentIds = [];
|
|
1583
|
+
this.isReload = false;
|
|
1562
1584
|
this.page = 1;
|
|
1563
1585
|
if (!this.isWorking) {
|
|
1564
1586
|
this.fetchEntityFilesDetails();
|
|
@@ -1592,11 +1614,59 @@ let EntityFilesViewAllComponent = class EntityFilesViewAllComponent {
|
|
|
1592
1614
|
}
|
|
1593
1615
|
});
|
|
1594
1616
|
}
|
|
1617
|
+
selectAll() {
|
|
1618
|
+
this.documentIds = [];
|
|
1619
|
+
this.entityFiles.map((employee) => {
|
|
1620
|
+
employee.is_selected = this.isAllSelected;
|
|
1621
|
+
if (this.isAllSelected) {
|
|
1622
|
+
this.documentIds.push(employee.id);
|
|
1623
|
+
}
|
|
1624
|
+
});
|
|
1625
|
+
this.dataSource = new MatTableDataSource(this.entityFiles);
|
|
1626
|
+
}
|
|
1627
|
+
employeeListModified(event, employee) {
|
|
1628
|
+
this.isAllSelected = false;
|
|
1629
|
+
if (event.checked) {
|
|
1630
|
+
this.documentIds.push(employee.id);
|
|
1631
|
+
}
|
|
1632
|
+
else {
|
|
1633
|
+
this.documentIds = this.documentIds.filter((employeeData) => employeeData != employee.id);
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
unCheckAll() {
|
|
1637
|
+
this.isAllSelected = false;
|
|
1638
|
+
this.documentIds = [];
|
|
1639
|
+
this.entityFiles.map((employee) => {
|
|
1640
|
+
employee.is_selected = false;
|
|
1641
|
+
});
|
|
1642
|
+
this.dataSource = new MatTableDataSource(this.entityFiles);
|
|
1643
|
+
}
|
|
1644
|
+
resetFieldValueOfRow(field, event) {
|
|
1645
|
+
event.stopPropagation();
|
|
1646
|
+
this.updateRowForm.get(field).setValue("");
|
|
1647
|
+
}
|
|
1648
|
+
bulkUpdate(fieldName) {
|
|
1649
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
1650
|
+
var data = this.updateRowForm.value;
|
|
1651
|
+
this.isReload = this.isWorking = true;
|
|
1652
|
+
data.field_name = fieldName;
|
|
1653
|
+
data.document_ids = this.documentIds;
|
|
1654
|
+
try {
|
|
1655
|
+
yield this.entityFileService.bulkUpdate(data).then(res => {
|
|
1656
|
+
this.alertService.addAlert("Successfully updated", "success");
|
|
1657
|
+
this.isWorking = false;
|
|
1658
|
+
});
|
|
1659
|
+
}
|
|
1660
|
+
catch (error) {
|
|
1661
|
+
this.errorHandler.handleError(error);
|
|
1662
|
+
}
|
|
1663
|
+
});
|
|
1664
|
+
}
|
|
1595
1665
|
};
|
|
1596
1666
|
EntityFilesViewAllComponent.decorators = [
|
|
1597
1667
|
{ type: Component, args: [{
|
|
1598
1668
|
selector: 'app-entity-files-view-all',
|
|
1599
|
-
template: "<div class=\"mat-typography\" *ngIf=\"!displayMode\">\n <div fxLayout=\"row\" fxLayoutGap=\"1rem\">\n <mat-card fxFlex=\"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\" 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 </form>\n </mat-card-subtitle>\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\">\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%\">\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",
|
|
1669
|
+
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",
|
|
1600
1670
|
styles: [""]
|
|
1601
1671
|
},] }
|
|
1602
1672
|
];
|
|
@@ -1605,7 +1675,8 @@ EntityFilesViewAllComponent.ctorParameters = () => [
|
|
|
1605
1675
|
{ type: Location },
|
|
1606
1676
|
{ type: AlertService },
|
|
1607
1677
|
{ type: MatDialog },
|
|
1608
|
-
{ type: FormBuilder }
|
|
1678
|
+
{ type: FormBuilder },
|
|
1679
|
+
{ type: ErrorHandlerService }
|
|
1609
1680
|
];
|
|
1610
1681
|
EntityFilesViewAllComponent.propDecorators = {
|
|
1611
1682
|
entityId: [{ type: Input }],
|
|
@@ -1615,6 +1686,7 @@ EntityFilesViewAllComponent.propDecorators = {
|
|
|
1615
1686
|
hideTitleAndDetails: [{ type: Input }],
|
|
1616
1687
|
displayMode: [{ type: Input }],
|
|
1617
1688
|
allowMultipleFiles: [{ type: Input }],
|
|
1689
|
+
allowBulkUpdate: [{ type: Input }],
|
|
1618
1690
|
useTechlifyTags: [{ type: Input }],
|
|
1619
1691
|
title: [{ type: Input }]
|
|
1620
1692
|
};
|
|
@@ -3198,7 +3270,8 @@ MaterialModule.decorators = [
|
|
|
3198
3270
|
MatDatepickerModule,
|
|
3199
3271
|
MatListModule,
|
|
3200
3272
|
MatTooltipModule,
|
|
3201
|
-
MatButtonToggleModule
|
|
3273
|
+
MatButtonToggleModule,
|
|
3274
|
+
MatSidenavModule
|
|
3202
3275
|
]
|
|
3203
3276
|
},] }
|
|
3204
3277
|
];
|
|
@@ -7073,5 +7146,5 @@ TechlifyFeatureModule.decorators = [
|
|
|
7073
7146
|
* Generated bundle index. Do not edit.
|
|
7074
7147
|
*/
|
|
7075
7148
|
|
|
7076
|
-
export { ActionPopup, ActionPopupComponent, ActionPopupModule, AlertService, ApiPrefixInterceptor, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, CommentFormComponent, ConfigService, CoreModule, CredentialsService, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFilesViewAllComponent, EntityFilesViewAllModule, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImportCsvComponent, ImportCsvModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, MatSelectInfiniteScrollDirective, MaterialModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberSelector, PageEvent, ReadMoreComponent, ReadMoreModule, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SnackModule, StorageService, SuccessSnackComponent, TechlifyConfig, TechlifyFeatureEnabledDirective, TechlifyFeatureListingComponent, TechlifyFeatureModule, TechlifyFeatureRoutes, TechlifyFormComponentInterface, TechlifyListingControllerInterface, TechlifyServiceBaseClass, TechlifyTaggerTagFormConfigModel, TechlifyTaggerTagFormFieldComponent, TechlifyTaggerTagFormFieldModule, TechlifyTaggerTagSelectorComponent, TechlifyTaggerTagSelectorModule, TechlifyUpdateHistoryModule, TechlifyUpdateModule, Timeline, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, UtilityModule, ViewerConfig, calculateTimeline, esfur, estlr, esulr, SnackModule as ɵa, SuccessSnackComponent as ɵb,
|
|
7149
|
+
export { ActionPopup, ActionPopupComponent, ActionPopupModule, AlertService, ApiPrefixInterceptor, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, CommentFormComponent, ConfigService, CoreModule, CredentialsService, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFilesViewAllComponent, EntityFilesViewAllModule, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImportCsvComponent, ImportCsvModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, MatSelectInfiniteScrollDirective, MaterialModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberSelector, PageEvent, ReadMoreComponent, ReadMoreModule, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SnackModule, StorageService, SuccessSnackComponent, TechlifyConfig, TechlifyFeatureEnabledDirective, TechlifyFeatureListingComponent, TechlifyFeatureModule, TechlifyFeatureRoutes, TechlifyFormComponentInterface, TechlifyListingControllerInterface, TechlifyServiceBaseClass, TechlifyTaggerTagFormConfigModel, TechlifyTaggerTagFormFieldComponent, TechlifyTaggerTagFormFieldModule, TechlifyTaggerTagSelectorComponent, TechlifyTaggerTagSelectorModule, TechlifyUpdateHistoryModule, TechlifyUpdateModule, Timeline, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, UtilityModule, ViewerConfig, calculateTimeline, esfur, estlr, esulr, SnackModule as ɵa, SuccessSnackComponent as ɵb, NumItemsSelector as ɵba, NumberSelector as ɵbb, TimelineFilterComponent as ɵbc, TimelineFilterRoutingModule as ɵbd, LoaderComponent as ɵbe, EmailSubscriptionUserFormComponent as ɵbf, EmailSubscriptionUserListComponent as ɵbg, AuthenticationGuard as ɵbh, EmailSubscriptionUserListFilterComponent as ɵbi, EmailSubscriptionTypeFormComponent as ɵbj, EmailSubscriptionTypeListComponent as ɵbk, EmailSubscriptionForUserComponent as ɵbl, TechlifyUpdatesListComponent as ɵbm, TechlifyUpdateService as ɵbn, TechlifyUpdateRoutingModule as ɵbo, TechlifyUpdateFormModule as ɵbp, TechlifyUpdateFormComponent as ɵbq, TechlifyUpdateHistoryRoutingModule as ɵbr, TechlifyUpdateHistoryComponent as ɵbs, UpdateNotifierSnackComponent as ɵbt, UpdateViewModule as ɵbu, UpdateViewComponent as ɵbv, DataManager as ɵbw, FieldMappingComponent as ɵbx, FailedItemsListComponent as ɵby, ImportHistoryListComponent as ɵbz, ErrorSnackComponent as ɵc, ImportSuccessComponent as ɵca, DataImportComponent as ɵcb, StorageService as ɵcc, TechlifyFeatureService as ɵcd, OnOffSwitchComponent as ɵce, HTTP_DYNAMIC_INTERCEPTORS as ɵd, HttpService as ɵe, RouteReusableStrategy as ɵf, ActionPopupComponent as ɵg, ActionPopup as ɵh, DataTableComponent as ɵi, DocumentViewerComponent as ɵj, EntityFileFormComponent as ɵk, FormValidatorService as ɵl, EntityFileService as ɵm, AlertService as ɵn, EntityFilesViewAllComponent as ɵo, ErrorHandlerService as ɵp, TechlifyConfig as ɵq, FileDropperComponent as ɵr, SearchableSelectorComponent as ɵs, MatSelectInfiniteScrollDirective as ɵt, NoteListComponent as ɵu, NoteService as ɵv, NoteFormComponent as ɵw, CommentFormComponent as ɵx, CredentialsService as ɵy, ConfigService as ɵz };
|
|
7077
7150
|
//# sourceMappingURL=ngx-techlify-core.js.map
|