tnx-shared 5.3.406 → 5.3.407

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.
@@ -29946,6 +29946,7 @@
29946
29946
  ]; };
29947
29947
 
29948
29948
  var AccessDeniedComponent = /** @class */ (function () {
29949
+ // Edit for build 1
29949
29950
  function AccessDeniedComponent(_federationService) {
29950
29951
  this._federationService = _federationService;
29951
29952
  }
@@ -35117,6 +35118,30 @@
35117
35118
  { type: ModuleConfigService }
35118
35119
  ]; };
35119
35120
 
35121
+ var UserChuKySoService = /** @class */ (function (_super) {
35122
+ __extends(UserChuKySoService, _super);
35123
+ function UserChuKySoService(http, injector, _moduleConfigService) {
35124
+ var _this = _super.call(this, http, injector, _moduleConfigService.getConfig().environment.apiDomain.userOrgEndpoint + "/" + _moduleConfigService.getConfig().environment.apiVersion + "/UserChuKySo") || this;
35125
+ _this._moduleConfigService = _moduleConfigService;
35126
+ _this.entityName = 'UserChuKySo';
35127
+ _this.serviceCode = 'userorg';
35128
+ _this.endPoint = _moduleConfigService.getConfig().environment.apiDomain.userOrgEndpoint;
35129
+ return _this;
35130
+ }
35131
+ return UserChuKySoService;
35132
+ }(BaseService));
35133
+ UserChuKySoService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function UserChuKySoService_Factory() { return new UserChuKySoService(i0__namespace.ɵɵinject(i1__namespace$1.HttpClient), i0__namespace.ɵɵinject(i0__namespace.INJECTOR), i0__namespace.ɵɵinject(ModuleConfigService)); }, token: UserChuKySoService, providedIn: "root" });
35134
+ UserChuKySoService.decorators = [
35135
+ { type: i0.Injectable, args: [{
35136
+ providedIn: 'root'
35137
+ },] }
35138
+ ];
35139
+ UserChuKySoService.ctorParameters = function () { return [
35140
+ { type: i1$1.HttpClient },
35141
+ { type: i0.Injector },
35142
+ { type: ModuleConfigService }
35143
+ ]; };
35144
+
35120
35145
  var FileExplorerItem = /** @class */ (function () {
35121
35146
  function FileExplorerItem() {
35122
35147
  }
@@ -35218,7 +35243,7 @@
35218
35243
 
35219
35244
  var FileManagerComponent = /** @class */ (function (_super) {
35220
35245
  __extends(FileManagerComponent, _super);
35221
- function FileManagerComponent(_myDriveService, _injector, _messageService, _authenService, _tnClientService, _fileVersionService, _moduleConfigService, _notifierService, _signalrService, _fileExplorerService, _fileExplorerNewService, _deviceDetectorService, _folderService, _fileObjectService, _downloadLinkService, _fileManagerService) {
35246
+ function FileManagerComponent(_myDriveService, _injector, _messageService, _authenService, _tnClientService, _fileVersionService, _moduleConfigService, _notifierService, _signalrService, _fileExplorerService, _fileExplorerNewService, _deviceDetectorService, _folderService, _fileObjectService, _downloadLinkService, _userChuKySoService, _fileManagerService) {
35222
35247
  var _this = _super.call(this, _injector) || this;
35223
35248
  _this._myDriveService = _myDriveService;
35224
35249
  _this._injector = _injector;
@@ -35235,6 +35260,7 @@
35235
35260
  _this._folderService = _folderService;
35236
35261
  _this._fileObjectService = _fileObjectService;
35237
35262
  _this._downloadLinkService = _downloadLinkService;
35263
+ _this._userChuKySoService = _userChuKySoService;
35238
35264
  _this._fileManagerService = _fileManagerService;
35239
35265
  _this.control = new FileManagerControlSchema();
35240
35266
  _this.layout = exports.EnumFileLayout.LIST;
@@ -35730,6 +35756,13 @@
35730
35756
  visible: (this._fileObjectService.isTypeFileKySo(item.name)
35731
35757
  && this.layout !== exports.EnumFileLayout.SIMPLE_FOR_LIST && !this.parentSetting.hiddenKySoSimCaNhan),
35732
35758
  },
35759
+ {
35760
+ label: 'Ký số SmartCA',
35761
+ icon: 'fas fa-signature',
35762
+ command: function () {
35763
+ _this.signFileSmartCA(item);
35764
+ },
35765
+ },
35733
35766
  {
35734
35767
  label: 'Ký số cá nhân (USB)', icon: 'fas fa-signature',
35735
35768
  command: function () {
@@ -36777,6 +36810,36 @@
36777
36810
  this.forms.kySoSim.show = true;
36778
36811
  this.model.advanceData = file;
36779
36812
  };
36813
+ FileManagerComponent.prototype.signFileSmartCA = function (rowData) {
36814
+ return __awaiter(this, void 0, void 0, function () {
36815
+ var dataKySo;
36816
+ return __generator(this, function (_b) {
36817
+ switch (_b.label) {
36818
+ case 0: return [4 /*yield*/, this._userChuKySoService.getDetailByFilter([
36819
+ this.newFilter('provider', exports.Operator.equal, 'SmartCA'),
36820
+ this.newFilter('userId', exports.Operator.equal, this._userService.getCurrentUser().userId),
36821
+ ])];
36822
+ case 1:
36823
+ dataKySo = (_b.sent()).data;
36824
+ if (!dataKySo) {
36825
+ this._notifierService.showWarning('Người dùng chưa cấu hình thông tin ký số');
36826
+ }
36827
+ this.forms.fileViewer.formData.data = {
36828
+ fileId: rowData.id,
36829
+ isFileVersion: false,
36830
+ fileName: rowData.name,
36831
+ service: rowData.serviceCode,
36832
+ entity: rowData.entity,
36833
+ entityKey: rowData.entityKey,
36834
+ fileBase64Content: dataKySo.fileBase64Content,
36835
+ showKySoButton: true,
36836
+ };
36837
+ this.forms.fileViewer.show = true;
36838
+ return [2 /*return*/];
36839
+ }
36840
+ });
36841
+ });
36842
+ };
36780
36843
  FileManagerComponent.prototype.shareFolder = function (file) {
36781
36844
  return __awaiter(this, void 0, void 0, function () {
36782
36845
  return __generator(this, function (_b) {
@@ -37050,6 +37113,7 @@
37050
37113
  { type: FolderService },
37051
37114
  { type: FileObjectService },
37052
37115
  { type: DownloadLinkService },
37116
+ { type: UserChuKySoService },
37053
37117
  { type: FileManagerService }
37054
37118
  ]; };
37055
37119
  FileManagerComponent.propDecorators = {
@@ -50058,13 +50122,13 @@
50058
50122
  };
50059
50123
  FileViewerComponent.prototype.init = function () {
50060
50124
  return __awaiter(this, void 0, void 0, function () {
50061
- return __generator(this, function (_a) {
50062
- switch (_a.label) {
50125
+ return __generator(this, function (_b) {
50126
+ switch (_b.label) {
50063
50127
  case 0:
50064
50128
  this.initForm();
50065
50129
  return [4 /*yield*/, this.getDetail()];
50066
50130
  case 1:
50067
- _a.sent();
50131
+ _b.sent();
50068
50132
  this.showFile();
50069
50133
  return [2 /*return*/];
50070
50134
  }
@@ -50074,8 +50138,8 @@
50074
50138
  FileViewerComponent.prototype.getDetail = function () {
50075
50139
  return __awaiter(this, void 0, void 0, function () {
50076
50140
  var data, fileVersion, fileObject;
50077
- return __generator(this, function (_a) {
50078
- switch (_a.label) {
50141
+ return __generator(this, function (_b) {
50142
+ switch (_b.label) {
50079
50143
  case 0:
50080
50144
  this.data = this.model.data;
50081
50145
  if (!this.data.fileId && !this.data.fileVersionId) {
@@ -50089,16 +50153,16 @@
50089
50153
  if (!this.data.fileVersionId) return [3 /*break*/, 3];
50090
50154
  return [4 /*yield*/, this._fileVersionService.getDetail(this.data.fileVersionId)];
50091
50155
  case 1:
50092
- fileVersion = (_a.sent()).data || {};
50156
+ fileVersion = (_b.sent()).data || {};
50093
50157
  return [4 /*yield*/, this._fileObjectService.getDetail(fileVersion.fileId)];
50094
50158
  case 2:
50095
- fileObject = (_a.sent()).data || {};
50159
+ fileObject = (_b.sent()).data || {};
50096
50160
  data = fileObject;
50097
50161
  return [3 /*break*/, 5];
50098
50162
  case 3: return [4 /*yield*/, this._fileObjectService.getDetail(this.data.fileId)];
50099
50163
  case 4:
50100
- data = (_a.sent()).data || {};
50101
- _a.label = 5;
50164
+ data = (_b.sent()).data || {};
50165
+ _b.label = 5;
50102
50166
  case 5:
50103
50167
  data.extension = this._fileObjectService.getFileExtension(data.name);
50104
50168
  data.fileType = this._fileObjectService.getFileType(data.extension);
@@ -50230,16 +50294,16 @@
50230
50294
  FileViewerComponent.prototype.getOrientation = function (imageUrl, callback) {
50231
50295
  return __awaiter(this, void 0, void 0, function () {
50232
50296
  var reader, res, blob;
50233
- return __generator(this, function (_a) {
50234
- switch (_a.label) {
50297
+ return __generator(this, function (_b) {
50298
+ switch (_b.label) {
50235
50299
  case 0:
50236
50300
  reader = new FileReader();
50237
50301
  return [4 /*yield*/, fetch(imageUrl)];
50238
50302
  case 1:
50239
- res = _a.sent();
50303
+ res = _b.sent();
50240
50304
  return [4 /*yield*/, res.blob()];
50241
50305
  case 2:
50242
- blob = _a.sent();
50306
+ blob = _b.sent();
50243
50307
  reader.onload = function (event) {
50244
50308
  var view = new DataView(event.target.result);
50245
50309
  if (view.getUint16(0, false) != 0xFFD8) {
@@ -50283,7 +50347,7 @@
50283
50347
  return __awaiter(this, void 0, void 0, function () {
50284
50348
  var reader;
50285
50349
  var _this = this;
50286
- return __generator(this, function (_a) {
50350
+ return __generator(this, function (_b) {
50287
50351
  reader = new FileReader();
50288
50352
  // const res = await fetch(imageUrl);
50289
50353
  // const blob = await res.blob();
@@ -50405,13 +50469,13 @@
50405
50469
  FileViewerComponent.prototype.onSavedRenameFile = function () {
50406
50470
  return __awaiter(this, void 0, void 0, function () {
50407
50471
  var file;
50408
- return __generator(this, function (_a) {
50409
- switch (_a.label) {
50472
+ return __generator(this, function (_b) {
50473
+ switch (_b.label) {
50410
50474
  case 0:
50411
50475
  this.renameFileForm.show = false;
50412
50476
  return [4 /*yield*/, this._fileObjectService.getDetail(this.data.id)];
50413
50477
  case 1:
50414
- file = (_a.sent()).data;
50478
+ file = (_b.sent()).data;
50415
50479
  if (file) {
50416
50480
  this.data.name = file.name;
50417
50481
  }
@@ -50475,12 +50539,54 @@
50475
50539
  }
50476
50540
  return styleClass;
50477
50541
  };
50542
+ FileViewerComponent.prototype.kySoHandle = function () {
50543
+ };
50544
+ FileViewerComponent.prototype.ngAfterViewInit = function () {
50545
+ var _this = this;
50546
+ // Access the PDF.js viewer instance
50547
+ setTimeout(function () {
50548
+ var _a;
50549
+ var pdfViewer = (_a = window.PDFViewerApplication) === null || _a === void 0 ? void 0 : _a.pdfViewer;
50550
+ if (pdfViewer) {
50551
+ // Add click listener to each page canvas
50552
+ var container = document.querySelector('#viewerContainer');
50553
+ container === null || container === void 0 ? void 0 : container.addEventListener('click', function (e) {
50554
+ _this.handlePageClick(e, pdfViewer);
50555
+ });
50556
+ }
50557
+ }, 1000);
50558
+ };
50559
+ FileViewerComponent.prototype.handlePageClick = function (event, pdfViewer) {
50560
+ var target = event.target;
50561
+ var marker = document.getElementById("custom-marker");
50562
+ if (marker) {
50563
+ marker.remove();
50564
+ }
50565
+ if (target.classList.contains('canvasWrapper') ||
50566
+ target.tagName === 'CANVAS') {
50567
+ // Get page number and coordinates
50568
+ var pageDiv = target.closest('.page');
50569
+ var pageNumber = parseInt((pageDiv === null || pageDiv === void 0 ? void 0 : pageDiv.getAttribute('data-page-number')) || '1');
50570
+ var rect = target.getBoundingClientRect();
50571
+ var x = event.clientX - rect.left;
50572
+ var y = event.clientY - rect.top;
50573
+ // Create marker at this position
50574
+ this.createMarker(target, x, y, pageNumber);
50575
+ }
50576
+ };
50577
+ FileViewerComponent.prototype.createMarker = function (parent, x, y, page) {
50578
+ var marker = document.createElement('div');
50579
+ marker.id = 'custom-marker';
50580
+ marker.style.cssText = "\n position: absolute;\n left: " + x + "px;\n top: " + y + "px;\n width: 100px;\n height: 100px;\n background-image: url(" + this.model.data.fileBase64Content + ");\n pointer-events: none;\n background-size: contain; /* Fits the image */\n background-repeat: no-repeat; /* No tiling */\n background-position: center top; /* Positioning */\n z-index: 999;\n ";
50581
+ var pageContainer = parent.closest('.page');
50582
+ pageContainer === null || pageContainer === void 0 ? void 0 : pageContainer.appendChild(marker);
50583
+ };
50478
50584
  return FileViewerComponent;
50479
50585
  }(ComponentBase));
50480
50586
  FileViewerComponent.decorators = [
50481
50587
  { type: i0.Component, args: [{
50482
50588
  selector: 'file-viewer',
50483
- template: "<p-sidebar #sidebar [showCloseIcon]=\"false\" [fullScreen]=\"fullScreen\" [appendTo]=\"'body'\" [modal]=\"showModal\"\n [styleClass]=\"getStyleClassByDocumentType(data.fileType)\" [(visible)]=\"show\">\n <ng-container *ngIf=\"data.fileType == fileTypes.PDF\">\n <div id=\"fileViewerHolder\" class=\"file-viewer-holder\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\" style=\"margin: 0px auto;\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <!-- UD-2450 - TuDN -->\n <!-- <a *ngIf=\"_deviceDetectorService.isDesktop() && showPrint\" pTooltip=\"In t\u00E0i li\u1EC7u\"\n tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\" (click)=\"print()\"\n class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-print\"></i></a> -->\n <a *ngIf=\"showDownload\" pTooltip=\"T\u1EA3i xu\u1ED1ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"download()\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-download\"></i></a>\n <!-- End UD-2450 - TuDN -->\n <a *ngIf=\"!_deviceDetectorService.isDesktop() && !readonly\" pTooltip=\"\u0110\u1ED5i t\u00EAn\"\n tooltipPosition=\"bottom\" (click)=\"renameFile()\"\n class=\"cursor-pointer button-link btn btn-secondary\" style=\"color: white;\"><i\n class=\"fas fa-eraser\"></i></a>\n <a *ngIf=\"showDelete && !readonly\" pTooltip=\"X\u00F3a t\u1EC7p tin\" tooltipPosition=\"bottom\"\n (click)=\"deleteFile()\" class=\"cursor-pointer button-link btn btn-secondary\"\n style=\"color: white;\"><i class=\"far fa-trash-alt\"></i></a>\n <a (click)=\"onTopbarItemClick($event)\" role=\"menuitem\" style=\"color: white;\"\n *ngIf=\"!readonly && _deviceDetectorService.isDesktop()\"\n class=\"cursor-pointer button-link btn btn-secondary submenu\"> <i class=\"fas fa-ellipsis-v\"></i>\n <ul class=\"layout-menu fadeInDown\" *ngIf=\"model.activeTopbarItem\">\n <li *ngIf=\"_deviceDetectorService.isDesktop()\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"editFile()\" class=\"file-row-action\"><i class=\"fas fa-pen-square\"></i>S\u1EEDa\n file\n tr\u1EF1c\n tuy\u1EBFn</a>\n </li>\n <li *ngIf=\"!isReadonly\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"renameFile()\" class=\"file-row-action\"><i class=\"fas fa-eraser\"></i>\u0110\u1ED5i\n t\u00EAn</a>\n </li>\n <li *ngIf=\"!isReadonly\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"deleteFile()\" class=\"file-row-action\"><i class=\"far fa-trash-alt\"></i>X\u00F3a\n t\u1EC7p\n tin</a>\n </li>\n </ul>\n </a>\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n </div>\n <ngx-extended-pdf-viewer [src]=\"model.fileUrl\" useBrowserLocale=\"true\" height=\"calc(100vh - 50px)\"\n [enablePinchOnMobile]=\"true\" [filenameForDownload]=\"data.fileName\" [language]=\"'vi-VN'\"\n [showBookmarkButton]=\"false\" [showHandToolButton]=\"false\" [showOpenFileButton]=\"false\"\n [showUnverifiedSignatures]=\"true\">\n </ngx-extended-pdf-viewer>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.fileType != fileTypes.IMAGE && data.fileType != fileTypes.VIDEO && data.fileType != fileTypes.AUDIO && data.fileType != fileTypes.PDF\">\n <div id=\"fileViewerHolder\" class=\"file-viewer-holder\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\">\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop() && showPrint\" pTooltip=\"In t\u00E0i li\u1EC7u\" tooltipPosition=\"bottom\"\n placeholder=\"Bottom\" style=\"color: white;\" (click)=\"print()\"\n class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-print\"></i></a>\n <a *ngIf=\"showDownload\" pTooltip=\"T\u1EA3i xu\u1ED1ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"download()\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-download\"></i></a>\n <a *ngIf=\"!readonly && showDelete && isDesktop()\" pTooltip=\"X\u00F3a t\u1EC7p tin\" tooltipPosition=\"bottom\"\n (click)=\"deleteFile()\" class=\"cursor-pointer button-link btn btn-secondary\"\n style=\"color: white;\"><i class=\"pi pi-trash\"></i></a>\n <a *ngIf=\"!readonly && isDesktop()\" pTooltip=\"S\u1EEDa file tr\u1EF1c tuy\u1EBFn\" (click)=\"editFile()\"\n placeholder=\"Bottom\" class=\"cursor-pointer button-link btn btn-secondary\" style=\"color: white;\">\n <i class=\"fas fa-pen-square\"></i></a>\n\n <a (click)=\"onTopbarItemClick($event)\" role=\"menuitem\" style=\"color: white;\" *ngIf=\"!isDesktop()\"\n class=\"cursor-pointer button-link btn btn-secondary submenu\">\n <i class=\"fas fa-ellipsis-v\"></i>\n <ul class=\"layout-menu fadeInDown\" *ngIf=\"model.activeTopbarItem\">\n <li *ngIf=\"!isReadonly\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"editFile()\" class=\"file-row-action\">\n <i class=\"fas fa-pen-square\"></i>S\u1EEDa file tr\u1EF1c tuy\u1EBFn</a>\n </li>\n <li *ngIf=\"!isReadonly\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"renameFile()\" class=\"file-row-action\"><i class=\"fas fa-eraser\"></i>\u0110\u1ED5i\n t\u00EAn</a>\n </li>\n <li *ngIf=\"!isReadonly && showDelete\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"deleteFile()\" class=\"file-row-action\"><i class=\"pi pi-trash\"></i>X\u00F3a\n t\u1EC7p tin</a>\n </li>\n </ul>\n </a>\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n\n <div class=\"dialog-material\" [class.view-file]=\"true\" [class.mobile]=\"!isDesktop()\"\n [class.view-file-text]=\"isFileType(fileTypes.TEXT)\"\n [class.view-file-spreadsheet]=\"isFileType(fileTypes.SPREADSHEET)\"\n [class.view-file-presentation]=\"isFileType(fileTypes.PRESENTATION)\">\n <div id=\"file-viewer\"></div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"data.fileType == fileTypes.IMAGE && model.images.length > 0\">\n <div class=\"image-container\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\">\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n\n <img *ngIf=\"model.images && model.images.length\" src=\"{{model.images[0]}}\" alt=\"Ch\u01B0a c\u00F3 \u1EA3nh\">\n </div>\n <!-- <app-image-viewer [showPDFOnlyLabel]=\"false\" [showPDFOnlyOption]=\"false\" [fullscreen]=\"false\"\n [images]=\"model.images\" [primaryColor]=\"'#3192e1'\" [idContainer]=\"'image-view-list'\"\n (mousedown)=\"closeSidebar($event)\" id=\"fileViewerHolder\" [loadOnInit]=\"true\">\n </app-image-viewer>\n <a style=\"color: white;\" (click)=\"closeSidebar(null)\" class=\"mobile-image-viewer-close\">\n <i class=\"far fa-times-circle\"></i></a> -->\n </ng-container>\n\n <ng-container *ngIf=\"data.fileType == fileTypes.VIDEO\">\n <div id=\"fileViewerHolder\" class=\"file-viewer-holder\" style=\"height: 100%;\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\">\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"showDownload\" pTooltip=\"T\u1EA3i xu\u1ED1ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"download()\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-download\"></i>\n </a>\n <a *ngIf=\"!isReadonly && !isDesktop()\" (click)=\"renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n <a *ngIf=\"!readonly && showDelete\" pTooltip=\"X\u00F3a t\u1EC7p tin\" tooltipPosition=\"bottom\"\n (click)=\"deleteFile()\" class=\"cursor-pointer button-link btn btn-secondary\"\n style=\"color: white;\"><i class=\"pi pi-trash\"></i></a>\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n\n <div class=\"dialog-material\" [class.view-file]=\"true\" [class.mobile]=\"!isDesktop()\"\n style=\"width: 80%; margin: auto; height: 100%; border-radius: 0px;\">\n <video width=\"100%\" height=\"100%\" style=\"margin-top: 50px;\" autoplay controls src=\"{{model.fileUrl}}\">\n Tr\u00ECnh duy\u1EC7t kh\u00F4ng h\u1ED7 tr\u1EE3 m\u1EDF video.\n </video>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"data.fileType == fileTypes.AUDIO\">\n <div id=\"fileViewerHolder\" class=\"file-viewer-holder\" (mousedown)=\"closeSidebar($event)\" style=\"height: 100%;\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\">\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"showDownload\" pTooltip=\"T\u1EA3i xu\u1ED1ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"download()\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-download\"></i></a>\n <a *ngIf=\"!isReadonly && showDelete\" pTooltip=\"X\u00F3a t\u1EC7p tin\" tooltipPosition=\"bottom\"\n (click)=\"deleteFile()\" class=\"cursor-pointer button-link btn btn-secondary\"\n style=\"color: white;\"><i class=\"pi pi-trash\"></i></a>\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n <audio controls autoplay src=\"{{model.fileUrl}}\"\n style=\"margin: auto;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);\">\n Tr\u00ECnh duy\u1EC7t kh\u00F4ng h\u1ED7 tr\u1EE3 ph\u00E1t audio. </audio>\n </div>\n </ng-container>\n\n</p-sidebar>\n\n<tn-dialog *ngIf=\"renameFileForm.show\" #dialog [styleClass]=\"'address-form'\"\n [header]=\"renameFileForm.header | translate\" [popupSize]=\"renameFileForm.popupSize\" (onHide)=\"onCancelRenameFile()\">\n <file-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"renameFileForm.formData\"\n (onSaved)=\"onSavedRenameFile()\" (onCancel)=\"onCancelRenameFile()\">\n </file-form>\n</tn-dialog>",
50589
+ template: "<p-sidebar #sidebar [showCloseIcon]=\"false\" [fullScreen]=\"fullScreen\" [appendTo]=\"'body'\" [modal]=\"showModal\"\n [styleClass]=\"getStyleClassByDocumentType(data.fileType)\" [(visible)]=\"show\">\n <ng-container *ngIf=\"data.fileType == fileTypes.PDF\">\n <div id=\"fileViewerHolder\" class=\"file-viewer-holder\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\" style=\"margin: 0px auto;\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <!-- UD-2450 - TuDN -->\n <!-- <a *ngIf=\"_deviceDetectorService.isDesktop() && showPrint\" pTooltip=\"In t\u00E0i li\u1EC7u\"\n tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\" (click)=\"print()\"\n class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-print\"></i></a> -->\n <a *ngIf=\"showDownload\" pTooltip=\"T\u1EA3i xu\u1ED1ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"download()\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-download\"></i></a>\n <!-- End UD-2450 - TuDN -->\n <a *ngIf=\"!_deviceDetectorService.isDesktop() && !readonly\" pTooltip=\"\u0110\u1ED5i t\u00EAn\"\n tooltipPosition=\"bottom\" (click)=\"renameFile()\"\n class=\"cursor-pointer button-link btn btn-secondary\" style=\"color: white;\"><i\n class=\"fas fa-eraser\"></i></a>\n <a *ngIf=\"showDelete && !readonly\" pTooltip=\"X\u00F3a t\u1EC7p tin\" tooltipPosition=\"bottom\"\n (click)=\"deleteFile()\" class=\"cursor-pointer button-link btn btn-secondary\"\n style=\"color: white;\"><i class=\"far fa-trash-alt\"></i></a>\n <a (click)=\"onTopbarItemClick($event)\" role=\"menuitem\" style=\"color: white;\"\n *ngIf=\"!readonly && _deviceDetectorService.isDesktop()\"\n class=\"cursor-pointer button-link btn btn-secondary submenu\"> <i class=\"fas fa-ellipsis-v\"></i>\n <ul class=\"layout-menu fadeInDown\" *ngIf=\"model.activeTopbarItem\">\n <li *ngIf=\"_deviceDetectorService.isDesktop()\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"editFile()\" class=\"file-row-action\"><i class=\"fas fa-pen-square\"></i>S\u1EEDa\n file\n tr\u1EF1c\n tuy\u1EBFn</a>\n </li>\n <li *ngIf=\"!isReadonly\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"renameFile()\" class=\"file-row-action\"><i class=\"fas fa-eraser\"></i>\u0110\u1ED5i\n t\u00EAn</a>\n </li>\n <li *ngIf=\"!isReadonly\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"deleteFile()\" class=\"file-row-action\"><i class=\"far fa-trash-alt\"></i>X\u00F3a\n t\u1EC7p\n tin</a>\n </li>\n </ul>\n </a>\n <a *ngIf=\"model.data?.showKySoButton\" pTooltip=\"K\u00FD s\u1ED1\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"kySoHandle()\"\n class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-signature\"></i></a>\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n </div>\n <ngx-extended-pdf-viewer [src]=\"model.fileUrl\" useBrowserLocale=\"true\" height=\"calc(100vh - 50px)\"\n [enablePinchOnMobile]=\"true\" [filenameForDownload]=\"data.fileName\" [language]=\"'vi-VN'\"\n [showBookmarkButton]=\"false\" [showHandToolButton]=\"false\" [showOpenFileButton]=\"false\"\n [showUnverifiedSignatures]=\"true\">\n </ngx-extended-pdf-viewer>\n </ng-container>\n\n <ng-container\n *ngIf=\"data.fileType != fileTypes.IMAGE && data.fileType != fileTypes.VIDEO && data.fileType != fileTypes.AUDIO && data.fileType != fileTypes.PDF\">\n <div id=\"fileViewerHolder\" class=\"file-viewer-holder\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\">\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop() && showPrint\" pTooltip=\"In t\u00E0i li\u1EC7u\" tooltipPosition=\"bottom\"\n placeholder=\"Bottom\" style=\"color: white;\" (click)=\"print()\"\n class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-print\"></i></a>\n <a *ngIf=\"showDownload\" pTooltip=\"T\u1EA3i xu\u1ED1ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"download()\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-download\"></i></a>\n <a *ngIf=\"!readonly && showDelete && isDesktop()\" pTooltip=\"X\u00F3a t\u1EC7p tin\" tooltipPosition=\"bottom\"\n (click)=\"deleteFile()\" class=\"cursor-pointer button-link btn btn-secondary\"\n style=\"color: white;\"><i class=\"pi pi-trash\"></i></a>\n <a *ngIf=\"!readonly && isDesktop()\" pTooltip=\"S\u1EEDa file tr\u1EF1c tuy\u1EBFn\" (click)=\"editFile()\"\n placeholder=\"Bottom\" class=\"cursor-pointer button-link btn btn-secondary\" style=\"color: white;\">\n <i class=\"fas fa-pen-square\"></i></a>\n\n <a (click)=\"onTopbarItemClick($event)\" role=\"menuitem\" style=\"color: white;\" *ngIf=\"!isDesktop()\"\n class=\"cursor-pointer button-link btn btn-secondary submenu\">\n <i class=\"fas fa-ellipsis-v\"></i>\n <ul class=\"layout-menu fadeInDown\" *ngIf=\"model.activeTopbarItem\">\n <li *ngIf=\"!isReadonly\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"editFile()\" class=\"file-row-action\">\n <i class=\"fas fa-pen-square\"></i>S\u1EEDa file tr\u1EF1c tuy\u1EBFn</a>\n </li>\n <li *ngIf=\"!isReadonly\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"renameFile()\" class=\"file-row-action\"><i class=\"fas fa-eraser\"></i>\u0110\u1ED5i\n t\u00EAn</a>\n </li>\n <li *ngIf=\"!isReadonly && showDelete\" role=\"menuitem\" class=\"cursor-pointer\">\n <a (click)=\"deleteFile()\" class=\"file-row-action\"><i class=\"pi pi-trash\"></i>X\u00F3a\n t\u1EC7p tin</a>\n </li>\n </ul>\n </a>\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n\n <div class=\"dialog-material\" [class.view-file]=\"true\" [class.mobile]=\"!isDesktop()\"\n [class.view-file-text]=\"isFileType(fileTypes.TEXT)\"\n [class.view-file-spreadsheet]=\"isFileType(fileTypes.SPREADSHEET)\"\n [class.view-file-presentation]=\"isFileType(fileTypes.PRESENTATION)\">\n <div id=\"file-viewer\"></div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"data.fileType == fileTypes.IMAGE && model.images.length > 0\">\n <div class=\"image-container\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\">\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n\n <img *ngIf=\"model.images && model.images.length\" src=\"{{model.images[0]}}\" alt=\"Ch\u01B0a c\u00F3 \u1EA3nh\">\n </div>\n <!-- <app-image-viewer [showPDFOnlyLabel]=\"false\" [showPDFOnlyOption]=\"false\" [fullscreen]=\"false\"\n [images]=\"model.images\" [primaryColor]=\"'#3192e1'\" [idContainer]=\"'image-view-list'\"\n (mousedown)=\"closeSidebar($event)\" id=\"fileViewerHolder\" [loadOnInit]=\"true\">\n </app-image-viewer>\n <a style=\"color: white;\" (click)=\"closeSidebar(null)\" class=\"mobile-image-viewer-close\">\n <i class=\"far fa-times-circle\"></i></a> -->\n </ng-container>\n\n <ng-container *ngIf=\"data.fileType == fileTypes.VIDEO\">\n <div id=\"fileViewerHolder\" class=\"file-viewer-holder\" style=\"height: 100%;\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\">\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"showDownload\" pTooltip=\"T\u1EA3i xu\u1ED1ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"download()\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-download\"></i>\n </a>\n <a *ngIf=\"!isReadonly && !isDesktop()\" (click)=\"renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n <a *ngIf=\"!readonly && showDelete\" pTooltip=\"X\u00F3a t\u1EC7p tin\" tooltipPosition=\"bottom\"\n (click)=\"deleteFile()\" class=\"cursor-pointer button-link btn btn-secondary\"\n style=\"color: white;\"><i class=\"pi pi-trash\"></i></a>\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n\n <div class=\"dialog-material\" [class.view-file]=\"true\" [class.mobile]=\"!isDesktop()\"\n style=\"width: 80%; margin: auto; height: 100%; border-radius: 0px;\">\n <video width=\"100%\" height=\"100%\" style=\"margin-top: 50px;\" autoplay controls src=\"{{model.fileUrl}}\">\n Tr\u00ECnh duy\u1EC7t kh\u00F4ng h\u1ED7 tr\u1EE3 m\u1EDF video.\n </video>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"data.fileType == fileTypes.AUDIO\">\n <div id=\"fileViewerHolder\" class=\"file-viewer-holder\" (mousedown)=\"closeSidebar($event)\" style=\"height: 100%;\">\n <div #headerdialogmaterial class=\"header-dialog-material\">\n <div class=\"flex-item\">\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"isDesktop()\" (click)=\"!isReadonly && renameFile()\" style=\"color: white;\"\n class=\"btn btn-secondary\">\n <i class=\"fas fa-file-alt\"></i><span class=\"cursor-pointer\">\n {{ data.name }}\n </span>\n </a>\n </div>\n <div class=\"flex-item\">\n <a *ngIf=\"showDownload\" pTooltip=\"T\u1EA3i xu\u1ED1ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\"\n style=\"color: white;\" (click)=\"download()\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-download\"></i></a>\n <a *ngIf=\"!isReadonly && showDelete\" pTooltip=\"X\u00F3a t\u1EC7p tin\" tooltipPosition=\"bottom\"\n (click)=\"deleteFile()\" class=\"cursor-pointer button-link btn btn-secondary\"\n style=\"color: white;\"><i class=\"pi pi-trash\"></i></a>\n <a pTooltip=\"\u0110\u00F3ng\" tooltipPosition=\"bottom\" placeholder=\"Bottom\" style=\"color: white;\"\n (click)=\"closeSidebar(null)\" class=\"cursor-pointer button-link btn btn-secondary\">\n <i class=\"fas fa-times\"></i></a>\n </div>\n </div>\n <audio controls autoplay src=\"{{model.fileUrl}}\"\n style=\"margin: auto;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);\">\n Tr\u00ECnh duy\u1EC7t kh\u00F4ng h\u1ED7 tr\u1EE3 ph\u00E1t audio. </audio>\n </div>\n </ng-container>\n\n</p-sidebar>\n\n<tn-dialog *ngIf=\"renameFileForm.show\" #dialog [styleClass]=\"'address-form'\"\n [header]=\"renameFileForm.header | translate\" [popupSize]=\"renameFileForm.popupSize\" (onHide)=\"onCancelRenameFile()\">\n <file-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"renameFileForm.formData\"\n (onSaved)=\"onSavedRenameFile()\" (onCancel)=\"onCancelRenameFile()\">\n </file-form>\n</tn-dialog>",
50484
50590
  providers: [ComponentContextService],
50485
50591
  styles: ["::ng-deep .pdf-container ngx-extended-pdf-viewer #outerContainer{top:51px}.view-file{height:92vh}.dialog-material{display:block;border-radius:4px;box-sizing:border-box;overflow:hidden;outline:0;min-height:inherit;max-height:inherit;width:50vw;width:100%}.dialog-material.view-file-text{width:85%;margin:0 auto}.dialog-material.view-file-text.mobile{width:100%;margin:0 auto}.header-dialog-material{display:flex;flex-direction:row;justify-content:space-between;padding:5px 15px;box-sizing:border-box;outline:0;height:50px;line-height:50px;background:#3192e1;position:absolute;pointer-events:auto;left:0;right:0;top:0;width:auto}.header-dialog-material .flex-item{line-height:40px}.header-dialog-material .flex-item .cursor-pointer{cursor:pointer;display:inline-block;padding:0 15px}.header-dialog-material .flex-item .cursor-pointer.submenu{position:relative}.header-dialog-material .flex-item .cursor-pointer.submenu ul{display:flex;position:absolute;top:25px;right:0;align-content:flex-end;flex-direction:column;width:230px;border-radius:2px;padding:5px 0;background:#fff;box-shadow:0 6px 12px rgba(0,0,0,.175);z-index:1}.header-dialog-material .flex-item .cursor-pointer.submenu ul li{padding:0}.header-dialog-material .flex-item .cursor-pointer.submenu ul li a{padding:0 0 0 5px;line-height:40px}.header-dialog-material .flex-item .cursor-pointer.submenu ul li a:hover{background:#f5f5f5}.header-dialog-material ul:before{top:-8px;right:8px;left:auto;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:10px solid #fff;content:\" \";position:absolute}.mat-dialog-content{display:block;margin:0;padding:0;max-height:100vh;max-width:50vw;overflow:auto;-webkit-overflow-scrolling:touch}::ng-deep .cdk-overlay-container{position:fixed;z-index:1000;background:rgba(0,0,0,.7)!important}::ng-deep .cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}::ng-deep .mat-dialog-container{display:block;padding:0!important}::ng-deep .cdk-overlay-pane{max-height:100%}.button-link:hover{transition:background-color .1s,opacity .1s;background-image:none;background-color:hsla(0,0%,100%,.25)}.file-row-action i{margin-right:5px;width:40px;text-align:center}.file-row-action{line-height:34px;width:100%;display:block;color:#212529}.layout-menu li a{border:none;text-align:left}.layout-menu li a i:first-child{color:#666;font-size:1em}.footer-page{position:absolute;left:50%;margin-right:-50%;transform:translate(-50%);border-radius:3px;bottom:12px;z-index:3;overflow:hidden}.footer-page-label{border-right:1px solid hsla(0,0%,100%,.2);display:inline-block;font-size:13px;line-height:44px;height:44px;vertical-align:middle;background:#000}.footer-page-label-page{display:inline-block;margin-left:12px;vertical-align:middle;background:rgba(0,0,0,.75);color:#fff}.footer-page-label-numberpage{display:inline-block;text-align:center;vertical-align:middle;width:48px;color:#fff}.footer-page-label-space{display:inline-block;margin-left:12px;vertical-align:middle;color:#fff}.footer-page-label-totalpage{display:inline-block;text-align:center;vertical-align:middle;width:48px;color:#fff}::ng-deep p-table .ui-table-tbody>tr>td{overflow:unset}::ng-deep .ui-sidebar-left.ui-sidebar-active{padding-top:55px;background:rgba(0,0,0,.4);border:0}::ng-deep .layout-wrapper .layout-menu-container{border-radius:unset}::ng-deep .p-sidebar{padding:0!important;background-color:#000}@media print{::ng-deep body *{visibility:visible!important}}::ng-deep .image-container{display:flex;justify-content:center;background-color:#000}::ng-deep .image-container .image-container-toolbar{display:flex;justify-content:flex-end}::ng-deep .image-container>img{height:calc(100ch - 50px)!important;max-height:100%!important;margin-top:50px}"]
50486
50592
  },] }
@@ -58410,95 +58516,96 @@
58410
58516
  exports["ɵ4"] = ɵ4;
58411
58517
  exports["ɵa"] = LoggerService;
58412
58518
  exports["ɵb"] = DropdownService;
58413
- exports["ɵba"] = AutoCompletePickerComponent;
58414
- exports["ɵbb"] = ImageUploaderComponent;
58415
- exports["ɵbc"] = CheckBoxListComponent;
58416
- exports["ɵbd"] = CoCauToChucPickerListComponent;
58417
- exports["ɵbe"] = CoCauToChucPickerListNewComponent;
58418
- exports["ɵbf"] = FormBuilderComponent;
58419
- exports["ɵbg"] = DatetimePickerComponent;
58420
- exports["ɵbh"] = DatetimePickerRangeComponent;
58421
- exports["ɵbi"] = EntityPickerBoxComponent;
58422
- exports["ɵbj"] = EntityPickerDataComponent;
58423
- exports["ɵbk"] = EntityPickerSelectedComponent;
58424
- exports["ɵbl"] = EntityPickerComponent;
58425
- exports["ɵbm"] = EntityPickerSearchFormComponent;
58426
- exports["ɵbn"] = EntityPickerDialogComponent;
58427
- exports["ɵbo"] = EntityPickerTreeDataComponent;
58428
- exports["ɵbp"] = EntityPickerTreeSelectedComponent;
58429
- exports["ɵbq"] = EntityPermissionComponent;
58430
- exports["ɵbr"] = EquationEditorComponent;
58431
- exports["ɵbs"] = MaskComponent;
58432
- exports["ɵbt"] = NumberPickerRangeComponent;
58433
- exports["ɵbu"] = PagingNextBackOnlyComponent;
58434
- exports["ɵbv"] = RadioButtonListComponent;
58435
- exports["ɵbw"] = VanBanPickerComponent;
58436
- exports["ɵbx"] = VanBanDenService;
58437
- exports["ɵby"] = VanBanDiService;
58438
- exports["ɵbz"] = VanBanPickerDialogComponent;
58519
+ exports["ɵba"] = AdvanceSearchComponent;
58520
+ exports["ɵbb"] = AutoCompletePickerComponent;
58521
+ exports["ɵbc"] = ImageUploaderComponent;
58522
+ exports["ɵbd"] = CheckBoxListComponent;
58523
+ exports["ɵbe"] = CoCauToChucPickerListComponent;
58524
+ exports["ɵbf"] = CoCauToChucPickerListNewComponent;
58525
+ exports["ɵbg"] = FormBuilderComponent;
58526
+ exports["ɵbh"] = DatetimePickerComponent;
58527
+ exports["ɵbi"] = DatetimePickerRangeComponent;
58528
+ exports["ɵbj"] = EntityPickerBoxComponent;
58529
+ exports["ɵbk"] = EntityPickerDataComponent;
58530
+ exports["ɵbl"] = EntityPickerSelectedComponent;
58531
+ exports["ɵbm"] = EntityPickerComponent;
58532
+ exports["ɵbn"] = EntityPickerSearchFormComponent;
58533
+ exports["ɵbo"] = EntityPickerDialogComponent;
58534
+ exports["ɵbp"] = EntityPickerTreeDataComponent;
58535
+ exports["ɵbq"] = EntityPickerTreeSelectedComponent;
58536
+ exports["ɵbr"] = EntityPermissionComponent;
58537
+ exports["ɵbs"] = EquationEditorComponent;
58538
+ exports["ɵbt"] = MaskComponent;
58539
+ exports["ɵbu"] = NumberPickerRangeComponent;
58540
+ exports["ɵbv"] = PagingNextBackOnlyComponent;
58541
+ exports["ɵbw"] = RadioButtonListComponent;
58542
+ exports["ɵbx"] = VanBanPickerComponent;
58543
+ exports["ɵby"] = VanBanDenService;
58544
+ exports["ɵbz"] = VanBanDiService;
58439
58545
  exports["ɵc"] = EntityPickerService;
58440
- exports["ɵca"] = VanbanDiPickerComponent;
58441
- exports["ɵcb"] = VanbanDenPickerComponent;
58442
- exports["ɵcc"] = CongViecPickerComponent;
58443
- exports["ɵcd"] = SettingsComponent;
58444
- exports["ɵce"] = SettingsRowComponent;
58445
- exports["ɵcf"] = ShareLinkByPermissionComponent;
58446
- exports["ɵcg"] = TnCheckboxComponent;
58447
- exports["ɵch"] = TnDialogComponent;
58448
- exports["ɵci"] = TnColorPickerComponent;
58449
- exports["ɵcj"] = TnTinymceComponent;
58450
- exports["ɵck"] = TnTabViewComponent;
58451
- exports["ɵcl"] = TableDetailFormComponent;
58452
- exports["ɵcm"] = FileIconPipe;
58453
- exports["ɵcn"] = FileSizePipe;
58454
- exports["ɵco"] = QuickAddFormComponent;
58455
- exports["ɵcp"] = PreventShiftTabDirective;
58456
- exports["ɵcq"] = TnTemplateDirective;
58457
- exports["ɵcr"] = UserPickerComponent;
58458
- exports["ɵcs"] = UserPickerBoxComponent;
58459
- exports["ɵct"] = CoCauToChucTestService;
58460
- exports["ɵcu"] = TnAppHelpComponent;
58461
- exports["ɵcv"] = PathNameService;
58462
- exports["ɵcw"] = HelperCurrentPageComponent;
58463
- exports["ɵcx"] = TnAppNotificationListComponent;
58464
- exports["ɵcy"] = TnAppNotificationComponent;
58465
- exports["ɵcz"] = FolderFormComponent;
58546
+ exports["ɵca"] = VanBanPickerDialogComponent;
58547
+ exports["ɵcb"] = VanbanDiPickerComponent;
58548
+ exports["ɵcc"] = VanbanDenPickerComponent;
58549
+ exports["ɵcd"] = CongViecPickerComponent;
58550
+ exports["ɵce"] = SettingsComponent;
58551
+ exports["ɵcf"] = SettingsRowComponent;
58552
+ exports["ɵcg"] = ShareLinkByPermissionComponent;
58553
+ exports["ɵch"] = TnCheckboxComponent;
58554
+ exports["ɵci"] = TnDialogComponent;
58555
+ exports["ɵcj"] = TnColorPickerComponent;
58556
+ exports["ɵck"] = TnTinymceComponent;
58557
+ exports["ɵcl"] = TnTabViewComponent;
58558
+ exports["ɵcm"] = TableDetailFormComponent;
58559
+ exports["ɵcn"] = FileIconPipe;
58560
+ exports["ɵco"] = FileSizePipe;
58561
+ exports["ɵcp"] = QuickAddFormComponent;
58562
+ exports["ɵcq"] = PreventShiftTabDirective;
58563
+ exports["ɵcr"] = TnTemplateDirective;
58564
+ exports["ɵcs"] = UserPickerComponent;
58565
+ exports["ɵct"] = UserPickerBoxComponent;
58566
+ exports["ɵcu"] = CoCauToChucTestService;
58567
+ exports["ɵcv"] = TnAppHelpComponent;
58568
+ exports["ɵcw"] = PathNameService;
58569
+ exports["ɵcx"] = HelperCurrentPageComponent;
58570
+ exports["ɵcy"] = TnAppNotificationListComponent;
58571
+ exports["ɵcz"] = TnAppNotificationComponent;
58466
58572
  exports["ɵd"] = ExceptionHandlerService;
58467
- exports["ɵda"] = FileFormComponent;
58468
- exports["ɵdb"] = FileViewerComponent;
58469
- exports["ɵdc"] = FileVersionListComponent;
58470
- exports["ɵdd"] = ViewDetailComponent;
58471
- exports["ɵde"] = ReferenceTextBoxComponent;
58472
- exports["ɵdf"] = QrCodeGeneratorComponent;
58473
- exports["ɵdg"] = ThongBaoComponent;
58474
- exports["ɵdh"] = MyDriveComponent;
58475
- exports["ɵdi"] = ChangePasswordComponent;
58476
- exports["ɵdj"] = ProfileComponent;
58477
- exports["ɵdk"] = AddNewsComponent;
58478
- exports["ɵdl"] = ArticleService;
58479
- exports["ɵdm"] = NewsCategoryService;
58480
- exports["ɵdn"] = UniversalLinkProcessorComponent;
58481
- exports["ɵdo"] = SignatureDetailComponent;
58482
- exports["ɵdp"] = KySoSimDanhSachChuKyComponent;
58483
- exports["ɵdq"] = KySoSimChuKyUserService;
58484
- exports["ɵdr"] = FileKySoSimComponent;
58485
- exports["ɵds"] = KySoSimSignPDFService;
58486
- exports["ɵdt"] = TaiLieuCuaToiComponent;
58487
- exports["ɵdu"] = KhaiThacTaiLieuDungChungComponent;
58488
- exports["ɵdv"] = DanhMucDungChungService;
58489
- exports["ɵdw"] = TnTemplateComponent;
58490
- exports["ɵdx"] = DropdownSettingFormComponent;
58491
- exports["ɵdy"] = CheckReadyComponent;
58492
- exports["ɵdz"] = TnAccordionTabComponent;
58573
+ exports["ɵda"] = FolderFormComponent;
58574
+ exports["ɵdb"] = FileFormComponent;
58575
+ exports["ɵdc"] = FileViewerComponent;
58576
+ exports["ɵdd"] = FileVersionListComponent;
58577
+ exports["ɵde"] = ViewDetailComponent;
58578
+ exports["ɵdf"] = ReferenceTextBoxComponent;
58579
+ exports["ɵdg"] = QrCodeGeneratorComponent;
58580
+ exports["ɵdh"] = ThongBaoComponent;
58581
+ exports["ɵdi"] = MyDriveComponent;
58582
+ exports["ɵdj"] = ChangePasswordComponent;
58583
+ exports["ɵdk"] = ProfileComponent;
58584
+ exports["ɵdl"] = AddNewsComponent;
58585
+ exports["ɵdm"] = ArticleService;
58586
+ exports["ɵdn"] = NewsCategoryService;
58587
+ exports["ɵdo"] = UniversalLinkProcessorComponent;
58588
+ exports["ɵdp"] = SignatureDetailComponent;
58589
+ exports["ɵdq"] = KySoSimDanhSachChuKyComponent;
58590
+ exports["ɵdr"] = KySoSimChuKyUserService;
58591
+ exports["ɵds"] = FileKySoSimComponent;
58592
+ exports["ɵdt"] = KySoSimSignPDFService;
58593
+ exports["ɵdu"] = TaiLieuCuaToiComponent;
58594
+ exports["ɵdv"] = KhaiThacTaiLieuDungChungComponent;
58595
+ exports["ɵdw"] = DanhMucDungChungService;
58596
+ exports["ɵdx"] = TnTemplateComponent;
58597
+ exports["ɵdy"] = DropdownSettingFormComponent;
58598
+ exports["ɵdz"] = CheckReadyComponent;
58493
58599
  exports["ɵe"] = ListBase;
58494
- exports["ɵea"] = SettingsWorkflowComponent;
58495
- exports["ɵeb"] = SettingAuthorizeButtonComponent;
58496
- exports["ɵec"] = BasePermissionService;
58497
- exports["ɵed"] = SettingsWorkflowNo1Component;
58498
- exports["ɵee"] = HtmlPreviewComponent;
58499
- exports["ɵef"] = AUTOCOMPLETE_VALUE_ACCESSOR;
58500
- exports["ɵeg"] = AutoComplete;
58501
- exports["ɵeh"] = AutoCompleteModule;
58600
+ exports["ɵea"] = TnAccordionTabComponent;
58601
+ exports["ɵeb"] = SettingsWorkflowComponent;
58602
+ exports["ɵec"] = SettingAuthorizeButtonComponent;
58603
+ exports["ɵed"] = BasePermissionService;
58604
+ exports["ɵee"] = SettingsWorkflowNo1Component;
58605
+ exports["ɵef"] = HtmlPreviewComponent;
58606
+ exports["ɵeg"] = AUTOCOMPLETE_VALUE_ACCESSOR;
58607
+ exports["ɵeh"] = AutoComplete;
58608
+ exports["ɵei"] = AutoCompleteModule;
58502
58609
  exports["ɵf"] = ListComponentBase;
58503
58610
  exports["ɵg"] = TreeTableComponent;
58504
58611
  exports["ɵh"] = NotFoundComponent;
@@ -58514,12 +58621,12 @@
58514
58621
  exports["ɵr"] = MessageBoardService;
58515
58622
  exports["ɵs"] = FileExplorerNewService;
58516
58623
  exports["ɵt"] = FileVersionService;
58517
- exports["ɵu"] = FileManagerService;
58518
- exports["ɵv"] = DM_ChucVuService;
58519
- exports["ɵw"] = RoleService;
58520
- exports["ɵx"] = AddressComponent;
58521
- exports["ɵy"] = AddressNewComponent;
58522
- exports["ɵz"] = AdvanceSearchComponent;
58624
+ exports["ɵu"] = UserChuKySoService;
58625
+ exports["ɵv"] = FileManagerService;
58626
+ exports["ɵw"] = DM_ChucVuService;
58627
+ exports["ɵx"] = RoleService;
58628
+ exports["ɵy"] = AddressComponent;
58629
+ exports["ɵz"] = AddressNewComponent;
58523
58630
 
58524
58631
  Object.defineProperty(exports, '__esModule', { value: true });
58525
58632