ngx-techlify-core 18.24.0 → 18.25.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/esm2022/lib/audit-log/audit-log-for-model/audit-log-for-model.component.mjs +2 -2
- package/esm2022/lib/audit-log/audit-log-list/audit-log-list.component.mjs +1 -1
- package/esm2022/lib/export-excel/export-excel-button/export-excel-button.component.mjs +55 -10
- package/esm2022/lib/export-excel/export-excel.module.mjs +8 -4
- package/esm2022/lib/pdf-button/pdf-button.component.mjs +31 -0
- package/esm2022/lib/pdf-button/pdf-button.module.mjs +31 -0
- package/esm2022/lib/techlify-feature/techlify-feature-enabled.directive.mjs +10 -51
- package/esm2022/lib/techlify-feature/techlify-feature-listing.component.mjs +21 -46
- package/esm2022/lib/techlify-feature/techlify-feature.service.mjs +30 -13
- package/esm2022/lib/techlify-icon/techlify-icon.component.mjs +43 -0
- package/esm2022/lib/techlify-icon/techlify-icon.module.mjs +20 -0
- package/esm2022/lib/timeline-filter/timeline-filter.component.mjs +2 -2
- package/esm2022/public-api.mjs +8 -1
- package/fesm2022/ngx-techlify-core.mjs +233 -127
- package/fesm2022/ngx-techlify-core.mjs.map +1 -1
- package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +10 -4
- package/lib/export-excel/export-excel.module.d.ts +2 -1
- package/lib/pdf-button/pdf-button.component.d.ts +10 -0
- package/lib/pdf-button/pdf-button.module.d.ts +10 -0
- package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +3 -10
- package/lib/techlify-feature/techlify-feature-listing.component.d.ts +1 -6
- package/lib/techlify-feature/techlify-feature.service.d.ts +9 -7
- package/lib/techlify-icon/techlify-icon.component.d.ts +10 -0
- package/lib/techlify-icon/techlify-icon.module.d.ts +8 -0
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
- package/styles/style.scss +25 -0
|
@@ -43,11 +43,11 @@ export class AuditLogForModelComponent {
|
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuditLogForModelComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AuditLogForModelComponent, selector: "app-audit-log-for-model", inputs: { isIconView: "isIconView", modelType: "modelType", modelId: "modelId", logView: "logView" }, ngImport: i0, template: "<ng-container *ngIf=\"isIconView\">\n <mat-icon matTooltip=\"Audit Logs\" class=\"icon-md\" (click)=\"$event.stopPropagation();getLogView()\">history</mat-icon>\n</ng-container>\n\n\n<ng-container *ngIf=\"!isIconView\">\n <button type=\"button\" *ngIf=\"logView==='recent'\" mat-icon-button matTooltip=\"Recent Audit Log\"\n (click)=\"$event.stopPropagation();getLogView()\">\n <mat-icon>history</mat-icon>\n </button>\n\n <button type=\"button\" *ngIf=\"logView==='all'\" mat-icon-button matTooltip=\"All Audit Logs\"\n (click)=\"$event.stopPropagation();getLogsView()\">\n <mat-icon>history</mat-icon>\n </button>\n</ng-container>", styles: [".icon-md{height:24px!important;width:24px!important;font-size:24px!important;margin:0 1px}.icon-sm{height:20px!important;width:20px!important;font-size:20px!important}.icon-xs{height:16px!important;width:16px!important;font-size:16px!important}.fl-md{width:200px!important}.fl-md .mat-mdc-form-field{width:100%!important}.fl-sm{width:150px!important}.fl-sm .mat-mdc-form-field{width:100%!important}.mat-btn-md{height:25px!important;padding:0 8px!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AuditLogForModelComponent, selector: "app-audit-log-for-model", inputs: { isIconView: "isIconView", modelType: "modelType", modelId: "modelId", logView: "logView" }, ngImport: i0, template: "<ng-container *ngIf=\"isIconView\">\n <mat-icon matTooltip=\"Audit Logs\" class=\"icon-md\" (click)=\"$event.stopPropagation();getLogView()\">history</mat-icon>\n</ng-container>\n\n\n<ng-container *ngIf=\"!isIconView\">\n <button type=\"button\" *ngIf=\"logView==='recent'\" mat-icon-button matTooltip=\"Recent Audit Log\"\n (click)=\"$event.stopPropagation();getLogView()\">\n <mat-icon>history</mat-icon>\n </button>\n\n <button type=\"button\" *ngIf=\"logView==='all'\" mat-icon-button matTooltip=\"All Audit Logs\"\n (click)=\"$event.stopPropagation();getLogsView()\">\n <mat-icon>history</mat-icon>\n </button>\n</ng-container>", styles: [".icon-md{height:24px!important;width:24px!important;font-size:24px!important;margin:0 1px}.icon-sm{height:20px!important;width:20px!important;font-size:20px!important}.icon-xs{height:16px!important;width:16px!important;font-size:16px!important}.fl-md{width:200px!important}.fl-md .mat-mdc-form-field{width:100%!important}.fl-sm{width:150px!important}.fl-sm .mat-mdc-form-field{width:100%!important}.mat-btn-md{height:25px!important;padding:0 8px!important}.fs-12{font-size:12px!important}.fs-16{font-size:16px!important}.fs-13{font-size:13px!important}.fs-18{font-size:18px!important}.clickable:hover{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
47
47
|
}
|
|
48
48
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuditLogForModelComponent, decorators: [{
|
|
49
49
|
type: Component,
|
|
50
|
-
args: [{ selector: 'app-audit-log-for-model', template: "<ng-container *ngIf=\"isIconView\">\n <mat-icon matTooltip=\"Audit Logs\" class=\"icon-md\" (click)=\"$event.stopPropagation();getLogView()\">history</mat-icon>\n</ng-container>\n\n\n<ng-container *ngIf=\"!isIconView\">\n <button type=\"button\" *ngIf=\"logView==='recent'\" mat-icon-button matTooltip=\"Recent Audit Log\"\n (click)=\"$event.stopPropagation();getLogView()\">\n <mat-icon>history</mat-icon>\n </button>\n\n <button type=\"button\" *ngIf=\"logView==='all'\" mat-icon-button matTooltip=\"All Audit Logs\"\n (click)=\"$event.stopPropagation();getLogsView()\">\n <mat-icon>history</mat-icon>\n </button>\n</ng-container>", styles: [".icon-md{height:24px!important;width:24px!important;font-size:24px!important;margin:0 1px}.icon-sm{height:20px!important;width:20px!important;font-size:20px!important}.icon-xs{height:16px!important;width:16px!important;font-size:16px!important}.fl-md{width:200px!important}.fl-md .mat-mdc-form-field{width:100%!important}.fl-sm{width:150px!important}.fl-sm .mat-mdc-form-field{width:100%!important}.mat-btn-md{height:25px!important;padding:0 8px!important}\n"] }]
|
|
50
|
+
args: [{ selector: 'app-audit-log-for-model', template: "<ng-container *ngIf=\"isIconView\">\n <mat-icon matTooltip=\"Audit Logs\" class=\"icon-md\" (click)=\"$event.stopPropagation();getLogView()\">history</mat-icon>\n</ng-container>\n\n\n<ng-container *ngIf=\"!isIconView\">\n <button type=\"button\" *ngIf=\"logView==='recent'\" mat-icon-button matTooltip=\"Recent Audit Log\"\n (click)=\"$event.stopPropagation();getLogView()\">\n <mat-icon>history</mat-icon>\n </button>\n\n <button type=\"button\" *ngIf=\"logView==='all'\" mat-icon-button matTooltip=\"All Audit Logs\"\n (click)=\"$event.stopPropagation();getLogsView()\">\n <mat-icon>history</mat-icon>\n </button>\n</ng-container>", styles: [".icon-md{height:24px!important;width:24px!important;font-size:24px!important;margin:0 1px}.icon-sm{height:20px!important;width:20px!important;font-size:20px!important}.icon-xs{height:16px!important;width:16px!important;font-size:16px!important}.fl-md{width:200px!important}.fl-md .mat-mdc-form-field{width:100%!important}.fl-sm{width:150px!important}.fl-sm .mat-mdc-form-field{width:100%!important}.mat-btn-md{height:25px!important;padding:0 8px!important}.fs-12{font-size:12px!important}.fs-16{font-size:16px!important}.fs-13{font-size:13px!important}.fs-18{font-size:18px!important}.clickable:hover{cursor:pointer}\n"] }]
|
|
51
51
|
}], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { isIconView: [{
|
|
52
52
|
type: Input
|
|
53
53
|
}], modelType: [{
|
|
@@ -180,7 +180,7 @@ let AuditLogListComponent = class AuditLogListComponent extends TechlifyListingC
|
|
|
180
180
|
});
|
|
181
181
|
}
|
|
182
182
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AuditLogListComponent, deps: [{ token: i1.Router }, { token: i2.DomSanitizer }, { token: i3.FormBuilder }, { token: i4.AuditLogService }, { token: i5.RequestHelperService }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
183
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AuditLogListComponent, selector: "app-audit-log-list", inputs: { objectId: "objectId", objectType: "objectType", showFilter: "showFilter", showExportButtons: "showExportButtons", userId: "userId", disableFilterPatchingFromUrl: "disableFilterPatchingFromUrl", scrollContainer: "scrollContainer" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"m-2\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-canter gap-2\" style=\"min-width: 200px\">\n <h3 class=\"mb-0\">\n Audit Logs\n </h3>\n <app-export-excel-button *ngIf=\"showExportButtons\" matTooltip=\"Export\" elementId=\"audit-logs-table\" class=\"mt-1\"\n name=\"AuditLogs\" [data]=\"excelData\">\n </app-export-excel-button>\n </div>\n\n <app-audit-log-list-filter class=\"w-100\" *ngIf=\"showFilter\" [filterForm]=\"filterForm\"\n (valueChange)=\"filterChange($event)\" [objectType]=\"objectType\"\n [objectId]=\"objectId\"></app-audit-log-list-filter>\n </div>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" matSort class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\" (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Log # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_type\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Model Type </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog.object_type }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_id\">\n <th mat-header-cell *matHeaderCellDef> Model # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.object_id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Action </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog?.action }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created At </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.created_at | date:'medium'}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"user.email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created By </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <p class=\"mb-0\">{{auditLog?.user?.name}}</p>\n <small class=\"text-secondary\">{{ auditLog?.user?.email }}</small>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"changes\">\n <th mat-header-cell *matHeaderCellDef> Changes</th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"px-3\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(getTransformedChanges(auditLog))\">\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 auditLog\">\n <mat-icon (click)=\"logClicked(auditLog);$event.stopPropagation();\">visibility</mat-icon>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: ["tr.row-hover:hover{background-color:#dcdcdc}.scroll-container{height:800px;overflow-y:auto}:host ::ng-deep #old-value{margin-right:5px;background-color:#f08080}:host ::ng-deep #new-value{background-color:#98fb98}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.ExportExcelButtonComponent, selector: "app-export-excel-button", inputs: ["
|
|
183
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AuditLogListComponent, selector: "app-audit-log-list", inputs: { objectId: "objectId", objectType: "objectType", showFilter: "showFilter", showExportButtons: "showExportButtons", userId: "userId", disableFilterPatchingFromUrl: "disableFilterPatchingFromUrl", scrollContainer: "scrollContainer" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"m-2\">\n <mat-card-content>\n <div class=\"d-flex justify-content-between align-items-center gap-3\">\n <div class=\"d-flex justify-content-start align-items-canter gap-2\" style=\"min-width: 200px\">\n <h3 class=\"mb-0\">\n Audit Logs\n </h3>\n <app-export-excel-button *ngIf=\"showExportButtons\" matTooltip=\"Export\" elementId=\"audit-logs-table\" class=\"mt-1\"\n name=\"AuditLogs\" [data]=\"excelData\">\n </app-export-excel-button>\n </div>\n\n <app-audit-log-list-filter class=\"w-100\" *ngIf=\"showFilter\" [filterForm]=\"filterForm\"\n (valueChange)=\"filterChange($event)\" [objectType]=\"objectType\"\n [objectId]=\"objectId\"></app-audit-log-list-filter>\n </div>\n </mat-card-content>\n</mat-card>\n\n<mat-card class=\"mt-2\">\n <mat-card-content>\n <table mat-table [dataSource]=\"models\" matSort class=\"w-100\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\" (scrolled)=\"onScroll()\"\n [fromRoot]=\"true\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let i = index\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Log # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_type\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Model Type </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog.object_type }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_id\">\n <th mat-header-cell *matHeaderCellDef> Model # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.object_id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Action </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog?.action }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created At </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.created_at | date:'medium'}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"user.email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created By </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <p class=\"mb-0\">{{auditLog?.user?.name}}</p>\n <small class=\"text-secondary\">{{ auditLog?.user?.email }}</small>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"changes\">\n <th mat-header-cell *matHeaderCellDef> Changes</th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"px-3\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(getTransformedChanges(auditLog))\">\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 auditLog\">\n <mat-icon (click)=\"logClicked(auditLog);$event.stopPropagation();\">visibility</mat-icon>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isWorking\"></mat-progress-bar>\n </mat-card-content>\n</mat-card>\n", styles: ["tr.row-hover:hover{background-color:#dcdcdc}.scroll-container{height:800px;overflow-y:auto}:host ::ng-deep #old-value{margin-right:5px;background-color:#f08080}:host ::ng-deep #new-value{background-color:#98fb98}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.ExportExcelButtonComponent, selector: "app-export-excel-button", inputs: ["isCSV", "fileName", "data", "tableId"], outputs: ["isExportingToExcel"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i9.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i10.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i10.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i10.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i10.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i10.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i10.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i10.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i10.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i10.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i10.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i11.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i14.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i15.AuditLogListFilterComponent, selector: "app-audit-log-list-filter", inputs: ["filterForm", "objectId", "objectType"], outputs: ["valueChange"] }, { kind: "pipe", type: i6.DatePipe, name: "date" }] }); }
|
|
184
184
|
};
|
|
185
185
|
AuditLogListComponent = __decorate([
|
|
186
186
|
UntilDestroy()
|
|
@@ -1,31 +1,76 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import * as XLSX from 'xlsx';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "@angular/material/tooltip";
|
|
6
|
+
import * as i3 from "../../techlify-icon/techlify-icon.component";
|
|
4
7
|
export class ExportExcelButtonComponent {
|
|
5
8
|
constructor() {
|
|
6
|
-
this.
|
|
9
|
+
this.isCSV = false;
|
|
10
|
+
this.fileName = 'Export_Data';
|
|
7
11
|
this.data = [];
|
|
12
|
+
this.isExportingToExcel = new EventEmitter();
|
|
13
|
+
this.isWorking = false;
|
|
8
14
|
}
|
|
9
15
|
ngOnInit() {
|
|
10
16
|
}
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
exportToExcel() {
|
|
18
|
+
this.isWorking = true;
|
|
19
|
+
this.isExportingToExcel.emit(true);
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
//If there is JSON data, then export it from data
|
|
22
|
+
if (this.data?.length > 0) {
|
|
23
|
+
this.convertJSONToExcel();
|
|
24
|
+
}
|
|
25
|
+
else if (this.tableId) {
|
|
26
|
+
// If there is valid table id, try exporting from HTML table
|
|
27
|
+
this.convertTableToExcel();
|
|
28
|
+
}
|
|
29
|
+
this.isExportingToExcel.emit(false);
|
|
30
|
+
this.isWorking = false;
|
|
31
|
+
}, 1000);
|
|
32
|
+
}
|
|
33
|
+
//Generate Excel with JSON data.
|
|
34
|
+
convertJSONToExcel() {
|
|
13
35
|
const ws = XLSX.utils.json_to_sheet(this.data);
|
|
14
36
|
/* generate workbook and add the worksheet */
|
|
15
37
|
const wb = XLSX.utils.book_new();
|
|
16
38
|
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
|
|
17
|
-
|
|
18
|
-
|
|
39
|
+
if (this.isCSV) {
|
|
40
|
+
XLSX.writeFile(wb, `${this.fileName}.csv`, { bookType: 'csv' });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
XLSX.writeFile(wb, `${this.fileName}.xlsx`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//Fetches the data from table ID and gererate EXCEL.
|
|
47
|
+
convertTableToExcel() {
|
|
48
|
+
let element = document.getElementById(this.tableId);
|
|
49
|
+
const ws = XLSX.utils.table_to_sheet(element, { raw: true });
|
|
50
|
+
const wb = XLSX.utils.book_new();
|
|
51
|
+
XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
|
|
52
|
+
if (this.isCSV) {
|
|
53
|
+
XLSX.writeFile(wb, `${this.fileName}.csv`, { bookType: 'csv' });
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
XLSX.writeFile(wb, `${this.fileName}.xlsx`);
|
|
57
|
+
}
|
|
19
58
|
}
|
|
20
59
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExportExcelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExportExcelButtonComponent, selector: "app-export-excel-button", inputs: {
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExportExcelButtonComponent, selector: "app-export-excel-button", inputs: { isCSV: "isCSV", fileName: "fileName", data: "data", tableId: "tableId" }, outputs: { isExportingToExcel: "isExportingToExcel" }, ngImport: i0, template: "<app-techlify-icon name=\"export\" class=\"clickable d-print-none\" *ngIf=\"!isWorking\" (click)=\"exportToExcel()\"\n matTooltip=\"Excel Export\">\n</app-techlify-icon>", styles: [".icon-md{height:24px!important;width:24px!important;font-size:24px!important;margin:0 1px}.icon-sm{height:20px!important;width:20px!important;font-size:20px!important}.icon-xs{height:16px!important;width:16px!important;font-size:16px!important}.fl-md{width:200px!important}.fl-md .mat-mdc-form-field{width:100%!important}.fl-sm{width:150px!important}.fl-sm .mat-mdc-form-field{width:100%!important}.mat-btn-md{height:25px!important;padding:0 8px!important}.fs-12{font-size:12px!important}.fs-16{font-size:16px!important}.fs-13{font-size:13px!important}.fs-18{font-size:18px!important}.clickable:hover{cursor:pointer}:host{display:flex;align-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }] }); }
|
|
22
61
|
}
|
|
23
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExportExcelButtonComponent, decorators: [{
|
|
24
63
|
type: Component,
|
|
25
|
-
args: [{ selector: 'app-export-excel-button', template: "<
|
|
26
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
64
|
+
args: [{ selector: 'app-export-excel-button', template: "<app-techlify-icon name=\"export\" class=\"clickable d-print-none\" *ngIf=\"!isWorking\" (click)=\"exportToExcel()\"\n matTooltip=\"Excel Export\">\n</app-techlify-icon>", styles: [".icon-md{height:24px!important;width:24px!important;font-size:24px!important;margin:0 1px}.icon-sm{height:20px!important;width:20px!important;font-size:20px!important}.icon-xs{height:16px!important;width:16px!important;font-size:16px!important}.fl-md{width:200px!important}.fl-md .mat-mdc-form-field{width:100%!important}.fl-sm{width:150px!important}.fl-sm .mat-mdc-form-field{width:100%!important}.mat-btn-md{height:25px!important;padding:0 8px!important}.fs-12{font-size:12px!important}.fs-16{font-size:16px!important}.fs-13{font-size:13px!important}.fs-18{font-size:18px!important}.clickable:hover{cursor:pointer}:host{display:flex;align-content:center}\n"] }]
|
|
65
|
+
}], ctorParameters: () => [], propDecorators: { isCSV: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}], fileName: [{
|
|
27
68
|
type: Input
|
|
28
69
|
}], data: [{
|
|
29
70
|
type: Input
|
|
71
|
+
}], tableId: [{
|
|
72
|
+
type: Input
|
|
73
|
+
}], isExportingToExcel: [{
|
|
74
|
+
type: Output
|
|
30
75
|
}] } });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWV4Y2VsLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2V4cG9ydC1leGNlbC9leHBvcnQtZXhjZWwtYnV0dG9uL2V4cG9ydC1leGNlbC1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9leHBvcnQtZXhjZWwvZXhwb3J0LWV4Y2VsLWJ1dHRvbi9leHBvcnQtZXhjZWwtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7Ozs7O0FBTzdCLE1BQU0sT0FBTywwQkFBMEI7SUFVckM7UUFUUyxVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQVEsR0FBVyxhQUFhLENBQUM7UUFDakMsU0FBSSxHQUFVLEVBQUUsQ0FBQztRQUdoQix1QkFBa0IsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUVsRixjQUFTLEdBQVksS0FBSyxDQUFDO0lBRVgsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxpREFBaUQ7WUFDakQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDeEIsNERBQTREO2dCQUM1RCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixDQUFDO1lBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFHWCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLGtCQUFrQjtRQUNoQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsNkNBQTZDO1FBQzdDLE1BQU0sRUFBRSxHQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELG1CQUFtQjtRQUNqQixJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxNQUFNLEVBQUUsR0FBbUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0UsTUFBTSxFQUFFLEdBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsT0FBTyxDQUFDLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7K0dBekRVLDBCQUEwQjttR0FBMUIsMEJBQTBCLDBNQ1J2Qyw4S0FFb0I7OzRGRE1QLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx5QkFBeUI7d0RBSzFCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWV4cG9ydC1leGNlbC1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZXhwb3J0LWV4Y2VsLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2V4cG9ydC1leGNlbC1idXR0b24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnRFeGNlbEJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGlzQ1NWOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbGVOYW1lOiBzdHJpbmcgPSAnRXhwb3J0X0RhdGEnO1xuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSB0YWJsZUlkOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIGlzRXhwb3J0aW5nVG9FeGNlbDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGlzV29ya2luZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBleHBvcnRUb0V4Y2VsKCkge1xuICAgIHRoaXMuaXNXb3JraW5nID0gdHJ1ZTtcbiAgICB0aGlzLmlzRXhwb3J0aW5nVG9FeGNlbC5lbWl0KHRydWUpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy9JZiB0aGVyZSBpcyBKU09OIGRhdGEsIHRoZW4gZXhwb3J0IGl0IGZyb20gZGF0YVxuICAgICAgaWYgKHRoaXMuZGF0YT8ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNvbnZlcnRKU09OVG9FeGNlbCgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlSWQpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgdmFsaWQgdGFibGUgaWQsIHRyeSBleHBvcnRpbmcgZnJvbSBIVE1MIHRhYmxlXG4gICAgICAgIHRoaXMuY29udmVydFRhYmxlVG9FeGNlbCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5pc0V4cG9ydGluZ1RvRXhjZWwuZW1pdChmYWxzZSk7XG4gICAgICB0aGlzLmlzV29ya2luZyA9IGZhbHNlO1xuICAgIH0sIDEwMDApO1xuXG5cbiAgfVxuXG4gIC8vR2VuZXJhdGUgRXhjZWwgd2l0aCBKU09OIGRhdGEuXG4gIGNvbnZlcnRKU09OVG9FeGNlbCgpIHtcbiAgICBjb25zdCB3cyA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldCh0aGlzLmRhdGEpO1xuICAgIC8qIGdlbmVyYXRlIHdvcmtib29rIGFuZCBhZGQgdGhlIHdvcmtzaGVldCAqL1xuICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC51dGlscy5ib29rX25ldygpO1xuICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod2IsIHdzLCAnU2hlZXQxJyk7XG4gICAgaWYgKHRoaXMuaXNDU1YpIHtcbiAgICAgIFhMU1gud3JpdGVGaWxlKHdiLCBgJHt0aGlzLmZpbGVOYW1lfS5jc3ZgLCB7IGJvb2tUeXBlOiAnY3N2JyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgWExTWC53cml0ZUZpbGUod2IsIGAke3RoaXMuZmlsZU5hbWV9Lnhsc3hgKTtcbiAgICB9XG4gIH1cblxuICAvL0ZldGNoZXMgdGhlIGRhdGEgZnJvbSB0YWJsZSBJRCBhbmQgZ2VyZXJhdGUgRVhDRUwuXG4gIGNvbnZlcnRUYWJsZVRvRXhjZWwoKSB7XG4gICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnRhYmxlSWQpO1xuICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IFhMU1gudXRpbHMudGFibGVfdG9fc2hlZXQoZWxlbWVudCwgeyByYXc6IHRydWUgfSk7XG4gICAgY29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldCh3Yiwgd3MsICdTaGVldDEnKTtcbiAgICBpZiAodGhpcy5pc0NTVikge1xuICAgICAgWExTWC53cml0ZUZpbGUod2IsIGAke3RoaXMuZmlsZU5hbWV9LmNzdmAsIHsgYm9va1R5cGU6ICdjc3YnIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBYTFNYLndyaXRlRmlsZSh3YiwgYCR7dGhpcy5maWxlTmFtZX0ueGxzeGApO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8YXBwLXRlY2hsaWZ5LWljb24gbmFtZT1cImV4cG9ydFwiIGNsYXNzPVwiY2xpY2thYmxlIGQtcHJpbnQtbm9uZVwiICpuZ0lmPVwiIWlzV29ya2luZ1wiIChjbGljayk9XCJleHBvcnRUb0V4Y2VsKClcIlxuICAgIG1hdFRvb2x0aXA9XCJFeGNlbCBFeHBvcnRcIj5cbjwvYXBwLXRlY2hsaWZ5LWljb24+Il19
|
|
@@ -2,13 +2,16 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { ExportExcelButtonComponent } from './export-excel-button/export-excel-button.component';
|
|
4
4
|
import { MaterialModule } from '../material.module';
|
|
5
|
+
import { TechlifyIconModule } from '../techlify-icon/techlify-icon.module';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export class ExportExcelModule {
|
|
7
8
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExportExcelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
9
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ExportExcelModule, declarations: [ExportExcelButtonComponent], imports: [CommonModule,
|
|
9
|
-
MaterialModule
|
|
10
|
+
MaterialModule,
|
|
11
|
+
TechlifyIconModule], exports: [ExportExcelButtonComponent] }); }
|
|
10
12
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExportExcelModule, imports: [CommonModule,
|
|
11
|
-
MaterialModule
|
|
13
|
+
MaterialModule,
|
|
14
|
+
TechlifyIconModule] }); }
|
|
12
15
|
}
|
|
13
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExportExcelModule, decorators: [{
|
|
14
17
|
type: NgModule,
|
|
@@ -16,9 +19,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
16
19
|
declarations: [ExportExcelButtonComponent],
|
|
17
20
|
imports: [
|
|
18
21
|
CommonModule,
|
|
19
|
-
MaterialModule
|
|
22
|
+
MaterialModule,
|
|
23
|
+
TechlifyIconModule
|
|
20
24
|
],
|
|
21
25
|
exports: [ExportExcelButtonComponent]
|
|
22
26
|
}]
|
|
23
27
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWV4Y2VsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZXhwb3J0LWV4Y2VsL2V4cG9ydC1leGNlbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDakcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQWEzRSxNQUFNLE9BQU8saUJBQWlCOytHQUFqQixpQkFBaUI7Z0hBQWpCLGlCQUFpQixpQkFSYiwwQkFBMEIsYUFFdkMsWUFBWTtZQUNaLGNBQWM7WUFDZCxrQkFBa0IsYUFFViwwQkFBMEI7Z0hBRXpCLGlCQUFpQixZQU4xQixZQUFZO1lBQ1osY0FBYztZQUNkLGtCQUFrQjs7NEZBSVQsaUJBQWlCO2tCQVQ3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUMxQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBFeHBvcnRFeGNlbEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZXhwb3J0LWV4Y2VsLWJ1dHRvbi9leHBvcnQtZXhjZWwtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBUZWNobGlmeUljb25Nb2R1bGUgfSBmcm9tICcuLi90ZWNobGlmeS1pY29uL3RlY2hsaWZ5LWljb24ubW9kdWxlJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0V4cG9ydEV4Y2VsQnV0dG9uQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRlcmlhbE1vZHVsZSxcbiAgICBUZWNobGlmeUljb25Nb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0V4cG9ydEV4Y2VsQnV0dG9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBFeHBvcnRFeGNlbE1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../techlify-icon/techlify-icon.component";
|
|
4
|
+
import * as i2 from "@angular/material/tooltip";
|
|
5
|
+
export class PdfButtonComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.isLoading = new EventEmitter();
|
|
8
|
+
}
|
|
9
|
+
ngOnInit() { }
|
|
10
|
+
print() {
|
|
11
|
+
// Let's notify the parent component that we're about to print
|
|
12
|
+
this.isLoading.emit(true);
|
|
13
|
+
// Wait for half a second so the any actions have time to complete
|
|
14
|
+
setTimeout(() => {
|
|
15
|
+
window.print();
|
|
16
|
+
}, 500);
|
|
17
|
+
// Let's notify the parent component that we're done printing
|
|
18
|
+
window.onafterprint = () => {
|
|
19
|
+
this.isLoading.emit(false);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PdfButtonComponent, selector: "pdf-button", outputs: { isLoading: "isLoading" }, ngImport: i0, template: "<app-techlify-icon name=\"pdf\" class=\"clickable d-print-none\" (click)=\"print()\" matTooltip=\"PDF Export\">\n</app-techlify-icon>", styles: [":host{display:flex;align-content:center}\n"], dependencies: [{ kind: "component", type: i1.TechlifyIconComponent, selector: "app-techlify-icon", inputs: ["name", "size"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfButtonComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: 'pdf-button', template: "<app-techlify-icon name=\"pdf\" class=\"clickable d-print-none\" (click)=\"print()\" matTooltip=\"PDF Export\">\n</app-techlify-icon>", styles: [":host{display:flex;align-content:center}\n"] }]
|
|
28
|
+
}], ctorParameters: () => [], propDecorators: { isLoading: [{
|
|
29
|
+
type: Output
|
|
30
|
+
}] } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3BkZi1idXR0b24vcGRmLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3BkZi1idXR0b24vcGRmLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFPeEUsTUFBTSxPQUFPLGtCQUFrQjtJQUk3QjtRQUZVLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO0lBRXhCLENBQUM7SUFFakIsUUFBUSxLQUFLLENBQUM7SUFFZCxLQUFLO1FBQ0gsOERBQThEO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFCLGtFQUFrRTtRQUNsRSxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVSLDZEQUE2RDtRQUM3RCxNQUFNLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRTtZQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7SUFDSixDQUFDOytHQXJCVSxrQkFBa0I7bUdBQWxCLGtCQUFrQix1RkNQL0IsdUlBQ29COzs0RkRNUCxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsWUFBWTt3REFNWixTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEV2ZW50RW1pdHRlciwgT3V0cHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncGRmLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAncGRmLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAncGRmLWJ1dHRvbi5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgUGRmQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAT3V0cHV0KCkgaXNMb2FkaW5nID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpIHsgfVxuXG4gIHByaW50KCkge1xuICAgIC8vIExldCdzIG5vdGlmeSB0aGUgcGFyZW50IGNvbXBvbmVudCB0aGF0IHdlJ3JlIGFib3V0IHRvIHByaW50XG4gICAgdGhpcy5pc0xvYWRpbmcuZW1pdCh0cnVlKTtcblxuICAgIC8vIFdhaXQgZm9yIGhhbGYgYSBzZWNvbmQgc28gdGhlIGFueSBhY3Rpb25zIGhhdmUgdGltZSB0byBjb21wbGV0ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgd2luZG93LnByaW50KCk7XG4gICAgfSwgNTAwKTtcblxuICAgIC8vIExldCdzIG5vdGlmeSB0aGUgcGFyZW50IGNvbXBvbmVudCB0aGF0IHdlJ3JlIGRvbmUgcHJpbnRpbmdcbiAgICB3aW5kb3cub25hZnRlcnByaW50ID0gKCkgPT4ge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgfTtcbiAgfVxufVxuIiwiPGFwcC10ZWNobGlmeS1pY29uIG5hbWU9XCJwZGZcIiBjbGFzcz1cImNsaWNrYWJsZSBkLXByaW50LW5vbmVcIiAoY2xpY2spPVwicHJpbnQoKVwiIG1hdFRvb2x0aXA9XCJQREYgRXhwb3J0XCI+XG48L2FwcC10ZWNobGlmeS1pY29uPiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { PdfButtonComponent } from './pdf-button.component';
|
|
4
|
+
import { TechlifyIconModule } from '../techlify-icon/techlify-icon.module';
|
|
5
|
+
import { MaterialModule } from "../material.module";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class PdfButtonModule {
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: PdfButtonModule, declarations: [PdfButtonComponent], imports: [CommonModule,
|
|
10
|
+
TechlifyIconModule,
|
|
11
|
+
MaterialModule], exports: [PdfButtonComponent] }); }
|
|
12
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfButtonModule, imports: [CommonModule,
|
|
13
|
+
TechlifyIconModule,
|
|
14
|
+
MaterialModule] }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PdfButtonModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
imports: [
|
|
20
|
+
CommonModule,
|
|
21
|
+
TechlifyIconModule,
|
|
22
|
+
MaterialModule
|
|
23
|
+
],
|
|
24
|
+
declarations: [
|
|
25
|
+
PdfButtonComponent
|
|
26
|
+
],
|
|
27
|
+
providers: [],
|
|
28
|
+
exports: [PdfButtonComponent]
|
|
29
|
+
}]
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWJ1dHRvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3BkZi1idXR0b24vcGRmLWJ1dHRvbi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQWNwRCxNQUFNLE9BQU8sZUFBZTsrR0FBZixlQUFlO2dIQUFmLGVBQWUsaUJBTHBCLGtCQUFrQixhQUxsQixZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLGNBQWMsYUFNUixrQkFBa0I7Z0hBRW5CLGVBQWUsWUFWcEIsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjOzs0RkFRVCxlQUFlO2tCQVozQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYztxQkFDakI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNWLGtCQUFrQjtxQkFDckI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBkZkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vcGRmLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVjaGxpZnlJY29uTW9kdWxlIH0gZnJvbSAnLi4vdGVjaGxpZnktaWNvbi90ZWNobGlmeS1pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gXCIuLi9tYXRlcmlhbC5tb2R1bGVcIjtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVGVjaGxpZnlJY29uTW9kdWxlLFxuICAgICAgICBNYXRlcmlhbE1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIFBkZkJ1dHRvbkNvbXBvbmVudFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXSxcbiAgICBleHBvcnRzOiBbUGRmQnV0dG9uQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBQZGZCdXR0b25Nb2R1bGUgeyB9XG4iXX0=
|
|
@@ -1,73 +1,32 @@
|
|
|
1
1
|
import { Directive, Input } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "./techlify-feature.service";
|
|
4
|
-
import * as i2 from "../core/error-handler.service";
|
|
5
|
-
import * as i3 from "../core/storage.service";
|
|
6
4
|
export class TechlifyFeatureEnabledDirective {
|
|
7
|
-
constructor(el, featureService
|
|
5
|
+
constructor(el, featureService) {
|
|
8
6
|
this.el = el;
|
|
9
7
|
this.featureService = featureService;
|
|
10
|
-
this.errorHandler = errorHandler;
|
|
11
|
-
this.storage = storage;
|
|
12
|
-
this.localFeatures = [];
|
|
13
8
|
}
|
|
14
9
|
ngOnInit() {
|
|
15
|
-
|
|
16
|
-
this.getFeatures();
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
this.checkForFeatureEnabled();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
async getFeatures() {
|
|
23
|
-
try {
|
|
24
|
-
let features = await this.featureService.getFeatures();
|
|
25
|
-
for (let feature of features.data) {
|
|
26
|
-
if (!feature.client_feature) {
|
|
27
|
-
if (feature.is_enabled_default) {
|
|
28
|
-
this.localFeatures.push(feature.code);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
if (feature.client_feature.is_enabled) {
|
|
33
|
-
this.localFeatures.push(feature.code);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
this.storage.setItem("features", this.localFeatures);
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
this.errorHandler.handleError(error);
|
|
41
|
-
}
|
|
42
|
-
finally {
|
|
43
|
-
this.checkForFeatureEnabled();
|
|
44
|
-
}
|
|
10
|
+
this.checkForFeatureEnabled();
|
|
45
11
|
}
|
|
46
12
|
checkForFeatureEnabled() {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
let features_split = features.split(',');
|
|
50
|
-
if (features_split.includes(this.enabledFeature)) {
|
|
51
|
-
this.el.nativeElement.style.display = "show";
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
this.el.nativeElement.remove();
|
|
55
|
-
}
|
|
13
|
+
if (this.featureService.isFeatureExists(this.feature)) {
|
|
14
|
+
this.el.nativeElement.style.display = "show";
|
|
56
15
|
}
|
|
57
|
-
|
|
58
|
-
this.
|
|
16
|
+
else {
|
|
17
|
+
this.el.nativeElement.style.display = "none";
|
|
59
18
|
}
|
|
60
19
|
}
|
|
61
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TechlifyFeatureEnabledDirective, deps: [{ token: i0.ElementRef }, { token: i1.TechlifyFeatureService }
|
|
62
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TechlifyFeatureEnabledDirective, selector: "[techlifyFeatureEnabled]", inputs: {
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TechlifyFeatureEnabledDirective, deps: [{ token: i0.ElementRef }, { token: i1.TechlifyFeatureService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
21
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: TechlifyFeatureEnabledDirective, selector: "[techlifyFeatureEnabled]", inputs: { feature: ["techlifyFeatureEnabled", "feature"] }, ngImport: i0 }); }
|
|
63
22
|
}
|
|
64
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TechlifyFeatureEnabledDirective, decorators: [{
|
|
65
24
|
type: Directive,
|
|
66
25
|
args: [{
|
|
67
26
|
selector: '[techlifyFeatureEnabled]'
|
|
68
27
|
}]
|
|
69
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TechlifyFeatureService }
|
|
28
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TechlifyFeatureService }], propDecorators: { feature: [{
|
|
70
29
|
type: Input,
|
|
71
30
|
args: ['techlifyFeatureEnabled']
|
|
72
31
|
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktZmVhdHVyZS1lbmFibGVkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdGVjaGxpZnktZmVhdHVyZS90ZWNobGlmeS1mZWF0dXJlLWVuYWJsZWQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNN0QsTUFBTSxPQUFPLCtCQUErQjtJQUkxQyxZQUNVLEVBQWMsRUFDZCxjQUFzQztRQUR0QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQXdCO0lBRWhELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7K0dBcEJVLCtCQUErQjttR0FBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUgzQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7aUJBQ3JDO29IQUdrQyxPQUFPO3NCQUF2QyxLQUFLO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlY2hsaWZ5RmVhdHVyZVNlcnZpY2UgfSBmcm9tICcuL3RlY2hsaWZ5LWZlYXR1cmUuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t0ZWNobGlmeUZlYXR1cmVFbmFibGVkXSdcbn0pXG5leHBvcnQgY2xhc3MgVGVjaGxpZnlGZWF0dXJlRW5hYmxlZERpcmVjdGl2ZSB7XG5cbiAgQElucHV0KCd0ZWNobGlmeUZlYXR1cmVFbmFibGVkJykgZmVhdHVyZTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBmZWF0dXJlU2VydmljZTogVGVjaGxpZnlGZWF0dXJlU2VydmljZVxuICApIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tGb3JGZWF0dXJlRW5hYmxlZCgpO1xuICB9XG5cbiAgY2hlY2tGb3JGZWF0dXJlRW5hYmxlZCgpIHtcbiAgICBpZiAodGhpcy5mZWF0dXJlU2VydmljZS5pc0ZlYXR1cmVFeGlzdHModGhpcy5mZWF0dXJlKSkge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcInNob3dcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICB9XG4gIH1cblxufVxuIl19
|