tnx-shared 5.1.174 → 5.1.178

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.
Files changed (51) hide show
  1. package/bundles/tnx-shared.umd.js +1639 -160
  2. package/bundles/tnx-shared.umd.js.map +1 -1
  3. package/bundles/tnx-shared.umd.min.js +1 -1
  4. package/bundles/tnx-shared.umd.min.js.map +1 -1
  5. package/classes/base/tree-list-base.d.ts +125 -0
  6. package/classes/base/tree-list-base.d.ts.map +1 -0
  7. package/classes/public-function.d.ts +1 -1
  8. package/components/check-box-list/check-box-list.component.d.ts.map +1 -1
  9. package/components/crud/crud-form/crud-form.component.d.ts +4 -3
  10. package/components/crud/crud-form/crud-form.component.d.ts.map +1 -1
  11. package/components/crud/tree-table/tree-table.component.d.ts +71 -0
  12. package/components/crud/tree-table/tree-table.component.d.ts.map +1 -0
  13. package/components/crud/tree-table/tree-table.component.ngfactory.d.ts.map +1 -0
  14. package/components/crud/tree-table/tree-table.component.scss.shim.ngstyle.d.ts.map +1 -0
  15. package/components/tn-app-notification/tn-app-notification.component.d.ts +3 -3
  16. package/components/tn-app-notification/tn-app-notification.component.d.ts.map +1 -1
  17. package/configs/component-context.constant.d.ts +5 -0
  18. package/configs/component-context.constant.d.ts.map +1 -1
  19. package/directives/primeng/tn-table.directive.d.ts +9 -0
  20. package/directives/primeng/tn-table.directive.d.ts.map +1 -1
  21. package/esm2015/classes/base/tree-list-base.js +746 -0
  22. package/esm2015/components/chat/chat-box/chat-box.component.js +1 -1
  23. package/esm2015/components/chat/chat-send-message-box/chat-send-message-box.component.js +1 -1
  24. package/esm2015/components/check-box-list/check-box-list.component.js +60 -19
  25. package/esm2015/components/crud/crud-form/crud-form.component.js +6 -2
  26. package/esm2015/components/crud/tree-table/tree-table.component.js +377 -0
  27. package/esm2015/components/tn-app-notification/tn-app-notification.component.js +32 -22
  28. package/esm2015/configs/component-context.constant.js +6 -1
  29. package/esm2015/directives/primeng/tn-table.directive.js +44 -1
  30. package/esm2015/public-api.js +2 -1
  31. package/esm2015/services/base.service.js +11 -1
  32. package/esm2015/services/crud.service.js +1 -1
  33. package/esm2015/services/notification.service.js +5 -2
  34. package/esm2015/tnx-shared.js +119 -118
  35. package/esm2015/tnx-shared.module.js +5 -2
  36. package/fesm2015/tnx-shared.js +1243 -41
  37. package/fesm2015/tnx-shared.js.map +1 -1
  38. package/package.json +2 -2
  39. package/public-api.d.ts +1 -0
  40. package/public-api.d.ts.map +1 -1
  41. package/services/base.service.d.ts +2 -0
  42. package/services/base.service.d.ts.map +1 -1
  43. package/services/crud.service.d.ts.map +1 -1
  44. package/services/notification.service.d.ts +1 -0
  45. package/services/notification.service.d.ts.map +1 -1
  46. package/tnx-shared.d.ts +118 -117
  47. package/tnx-shared.d.ts.map +1 -1
  48. package/tnx-shared.metadata.json +1 -1
  49. package/tnx-shared.module.d.ts +3 -2
  50. package/tnx-shared.module.d.ts.map +1 -1
  51. package/tnx-shared.module.ngfactory.d.ts.map +1 -1
@@ -521,6 +521,11 @@
521
521
  REFRESH_PERMISSION: 'REFRESH_PERMISSION',
522
522
  SELECTED_OBJECT_CHANGED: 'SELECTED_OBJECT_CHANGED',
523
523
  REFRESH_USER_PERMISSION: 'REFRESH_USER_PERMISSION',
524
+ };
525
+ ComCtxConstants.NOTIFICATION = {
526
+ NOTIFICATION_RELOAD: 'NOTIFICATION_RELOAD',
527
+ NOTIFICATION_CHANGE: 'NOTIFICATION_CHANGE',
528
+ NOTIFICATION_USER_CHANGE: 'NOTIFICATION_USER_CHANGE'
524
529
  };
525
530
 
526
531
  // ctr.prototype[propertyKey] = function (...args) {
@@ -6636,6 +6641,14 @@
6636
6641
  this.convertValueFilterToOldBase(gridInfo.filters);
6637
6642
  return this.postGridInfo(apiUrl, gridInfo);
6638
6643
  };
6644
+ BaseService.prototype.baseGetTreeData = function (gridInfo, plusUrl) {
6645
+ if (plusUrl === void 0) { plusUrl = ''; }
6646
+ var apiUrl = 'GetTreeData';
6647
+ if (plusUrl != null && plusUrl != '') {
6648
+ apiUrl += '/' + plusUrl;
6649
+ }
6650
+ return this.postGridInfo(apiUrl, gridInfo);
6651
+ };
6639
6652
  BaseService.prototype.convertValueFilterToOldBase = function (filters) {
6640
6653
  var _this = this;
6641
6654
  filters.forEach(function (filter) {
@@ -7244,6 +7257,9 @@
7244
7257
  BaseService.prototype.updateDaDuyetQuyetDinh = function (id) {
7245
7258
  return this.defaultPost(this.serviceUri + "/UpdateDaDuyetQuyetDinh/" + id, {});
7246
7259
  };
7260
+ BaseService.prototype.updateMaPhanCapBase = function () {
7261
+ return this.defaultPost(this.serviceUri + "/UpdateMaPhanCapBase", {});
7262
+ };
7247
7263
  return BaseService;
7248
7264
  }());
7249
7265
 
@@ -15504,6 +15520,13 @@
15504
15520
  });
15505
15521
  });
15506
15522
  };
15523
+ CrudFormComponent.prototype.handleDataSourceLoadComplete = function (control, parentPath, dataSource) {
15524
+ return __awaiter(this, void 0, void 0, function () {
15525
+ return __generator(this, function (_d) {
15526
+ return [2 /*return*/];
15527
+ });
15528
+ });
15529
+ };
15507
15530
  CrudFormComponent.prototype.handleDataSourceLoaded = function (control, parentPath, dataFromDropdown) {
15508
15531
  return __awaiter(this, void 0, void 0, function () {
15509
15532
  var parentNode, currentNode, eventData, _a_3;
@@ -26915,7 +26938,7 @@
26915
26938
  selector: 'chat-box',
26916
26939
  template: "<div class=\"dashboard\">\r\n <div class=\"chat\">\r\n <div class=\"group-info\">\r\n <a href=\"javascript:\">C\u00F3 {{peopleAll.length}} ng\u01B0\u1EDDi trong nh\u00F3m n\u00E0y</a>\r\n <div class=\"circleButton\" pTooltip=\"Xem to\u00E0n b\u1ED9 \u0111\u00EDnh k\u00E8m\" tooltipPosition=\"top\">\r\n <a href=\"javascript:\"><i class=\"far fa-images\"></i></a>\r\n </div>\r\n <div (click)=\"addPeople()\" class=\"circleButton\" pTooltip=\"Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi v\u00E0o nh\u00F3m\" tooltipPosition=\"top\"\r\n disabled=\"true\">\r\n <a href=\"javascript:\"><i class=\"fas fa-user-plus\"></i></a>\r\n </div>\r\n </div>\r\n <ul #scrollMe [ngClass]=\"{'hasPin': model.pinnedMessage != null}\">\r\n <li *ngIf=\"model.pinnedMessage\" class=\"clearfix pin\" [ngClass]=\"{'message-from': true}\">\r\n <ng-container\r\n *ngTemplateOutlet=\"messageItem; context: { i : -1, item: model.pinnedMessage, isPinnedMessage: true}\">\r\n </ng-container>\r\n </li>\r\n <li *ngFor=\"let item of model.dataSource; let i = index; trackBy: trackByFunc\" class=\"clearfix\"\r\n [ngClass]=\"{ 'message-own': item.type == 'own'}\">\r\n <ng-container *ngTemplateOutlet=\"messageItem; context: { i : i, item: item}\">\r\n </ng-container>\r\n </li>\r\n </ul>\r\n <!-- <chat-send-message-box *ngIf=\"showSendMessageBox\"></chat-send-message-box>-->\r\n <div [ngClass]=\"{'visible2': model.scrolling, 'hidden2': !model.scrolling}\" class=\"scroll-to-bottom\">\r\n <span *ngIf=\"model.newMessageNotUpdatedCount > 0\" (click)=\"scrollToBottom(350, true, null)\">\r\n {{model.newMessageNotUpdatedCount <= 5 ? model.newMessageNotUpdatedCount : '5+' }} </span>\r\n <span (click)=\"scrollToBottom(350, true, null)\" *ngIf=\"model.newMessageNotUpdatedCount == 0\">\r\n <i class=\"fas fa-chevron-down\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<file-viewer *ngIf=\"fileViewerModel.showEditForm\" [parentContext]=\"context\" [parentModel]=\"model\"\r\n [model]=\"fileViewerModel\">\r\n</file-viewer>\r\n\r\n<ng-template #messageItem let-i=\"i\" let-isPinnedMessage=\"isPinnedMessage\" let-item=\"item\">\r\n <img *ngIf=\"item.isFirstMessageFlow && item.type != 'own' && !isPinnedMessage && item.avatar != null\" alt=\"\"\r\n class=\"chat-avatar\" src=\"{{getCurrentUserAvatar(item.avatar)}}\">\r\n <p *ngIf=\"(item.isFirstMessageFlow && item.type != 'own') && !isPinnedMessage\" class=\"message-created-by\">\r\n {{item.fullName}}\r\n </p>\r\n <span *ngIf=\"!hasAttachment(item)\">\r\n <!-- [class]=\"addClassToMessage(item, isPinnedMessage)\">-->\r\n <p *ngIf=\"!hasAttachment(item)\" class=\"message-content\">\r\n <i (click)=\"pinMessage(item)\" class=\"fas fa-thumbtack\" style=\"right: 0;\"></i>\r\n <i (click)=\"quickNote(item)\" class=\"fas fa-sticky-note\"></i>\r\n {{item.content}}\r\n </p>\r\n <p *ngIf=\"!isPinnedMessage && (item.isLastMessageFlow || !inTheSameTime(i, item, model.dataSource))\"\r\n class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n <p *ngIf=\"isPinnedMessage\" class=\"message-created\">\r\n {{item.createdBy}} \u0111\u00E3 g\u1EEDi l\u00FAc {{item.created | date:'dd/MM/yyyy HH:mm'}}\r\n </p>\r\n </span>\r\n <ng-container *ngIf=\"hasAttachment(item)\">\r\n <ng-container *ngFor=\"let attachmentItem of item.attachments;let index=index\">\r\n <div class=\"file\"\r\n [ngClass]=\"{'first':item.isFirstMessageFlow && index == 0, 'middle':index > 0 || !item.isFirstMessageFlow, 'image' : attachmentItem.type == 'image'}\"\r\n [ngStyle]=\"{'width': model.img[i + 'width' + index]}\">\r\n <p class=\"attachment\">\r\n <span (mouseup)=\"onMouseUp($event)\" class=\"attachment-item\">\r\n <a *ngIf=\"attachmentItem.type != 'image'\" (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <i class=\"fas fa-paperclip\"></i>{{attachmentItem.fileName}}\r\n </a>\r\n <a *ngIf=\"attachmentItem.type == 'image'\" #aElement\r\n [ngClass]=\"{'hidden': !model.img[i + '' + index], 'visible':model.img[i + '' + index]}\"\r\n (click)=\"viewOrDownloadFile($event, attachmentItem)\">\r\n <img class=\"message-img\" (load)=\"loadImg($event, i, index)\"\r\n [src]=\"attachmentItem.url | secure | async\" />\r\n </a>\r\n </span>\r\n </p>\r\n <div style=\"clear: both\"></div>\r\n <p class=\"message-created\" pTooltip=\"{{item.created | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"{{item.type != 'own'?'right':'left'}}\">\r\n {{_crudService.renderDateTime(item.created)}}\r\n </p>\r\n </div>\r\n <div style=\"clear: both\"></div>\r\n </ng-container>\r\n </ng-container>\r\n <after-view-checked *ngIf=\"model.dataSource.length == i + 1\" (loading)=\"scrollToBottom(0, false, item.sent)\">\r\n </after-view-checked>\r\n</ng-template>\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\"-->\r\n<!-- (onCancel)=\"userPickerForm.show = false\"-->\r\n<!-- (onHide)=\"userPickerForm.show = false\">-->\r\n<!-- &lt;!&ndash; <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>&ndash;&gt;-->\r\n<!-- <user-picker-box #formBase [control]=\"userPickerControl\"-->\r\n<!-- [(ngModel)]=\"this.peopleAll\" [multiple]=\"userPickerControl.multiple\">-->\r\n<!-- </user-picker-box>-->\r\n<!--</tn-dialog>-->\r\n\r\n\r\n<!--<tn-dialog *ngIf=\"userPickerForm.show\" #dialog [styleClass]=\"'tn-form-dialog'\"-->\r\n<!-- [header]=\"'Th\u00EAm m\u1EDBi ng\u01B0\u1EDDi d\u00F9ng' | translate\" [popupSize]=\"userPickerForm.popupSize\" (onHide)=\"userPickerForm.show == false\">-->\r\n<!-- &lt;!&ndash; <congviec-form #formBase [parentModel]=\"model\" [parentContext]=\"context\" [model]=\"formModel\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onSaved)=\"showDetailForm = false;crudList.reload()\" (onCancel)=\"_handleCancel($event)\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; (onAfterSaved)=\"onAfterSaved($event)\"></congviec-form>&ndash;&gt;-->\r\n\r\n<!-- &lt;!&ndash;<quick-add-form *ngIf=\"model.editFormModel.showQuickNoteForm\" [parentContext]=\"context\"&ndash;&gt;-->\r\n<!-- &lt;!&ndash; [parentModel]=\"context.data.noteDataModel\"></quick-add-form>&ndash;&gt;-->\r\n<!--</tn-dialog>-->",
26917
26940
  providers: [ComponentContextService, CheckControlVisibleService],
26918
- styles: [".paging-advance{list-style:none;margin:3px 0;padding-left:0}.paging-advance li{line-height:30;padding-left:15px;width:150px}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{background:none;cursor:default}.paging-advance li:hover{background:red;cursor:pointer}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{left:1.25em;margin-left:-10;right:auto}.paging-advance-overlay.ui-overlaypanel-shifted:after{left:1.25em;margin-left:-8px;right:auto}.chat-avatar{border:2px solid #eee;height:36px}", "@charset \"UTF-8\";@import url(D:\\Code\\git.dttt.vn\\5.1\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(D:\\Code\\git.dttt.vn\\5.1\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
26941
+ styles: [".paging-advance{list-style:none;margin:3px 0;padding-left:0}.paging-advance li{line-height:30;padding-left:15px;width:150px}.paging-advance li.disabled{color:#bdbdbd;outline:none}.paging-advance li.disabled:hover{background:none;cursor:default}.paging-advance li:hover{background:red;cursor:pointer}.paging-advance-overlay .ui-overlaypanel-content{padding:0}.paging-advance-overlay.ui-overlaypanel-shifted:before{left:1.25em;margin-left:-10;right:auto}.paging-advance-overlay.ui-overlaypanel-shifted:after{left:1.25em;margin-left:-8px;right:auto}.chat-avatar{border:2px solid #eee;height:36px}", "@charset \"UTF-8\";@import url(D:\\Projects\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(D:\\Projects\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
26919
26942
  },] }
26920
26943
  ];
26921
26944
  ChatBoxComponent.ctorParameters = function () { return [
@@ -27521,7 +27544,7 @@
27521
27544
  selector: 'chat-send-message-box',
27522
27545
  template: "<div class=\"dashboard\" (mouseup)=\"onMouseUp($event)\">\r\n <div class=\"chat\">\r\n <div class=\"new-message\">\r\n <div class=\"message-emotion\">\r\n <i class=\"far fa-smile\" style=\"color: gray;\" disabled=\"true\"></i>\r\n </div>\r\n <div class=\"message-attachment\" pTooltip=\"\u0110\u00EDnh k\u00E8m file\" tooltipPosition=\"top\" (click)=\"op.toggle($event)\">\r\n <i class=\"fas fa-paperclip\"></i>\r\n </div>\r\n <p-overlayPanel #op [dismissable]=\"true\" [appendTo]=\"'body'\" [styleClass]=\"'paging-advance-overlay'\"\r\n (mouseup)=\"onMouseUp($event)\">\r\n <ul class=\"paging-advance\">\r\n <li (click)=\"browseFileFromPersonal()\">T\u1EEB file c\u00E1 nh\u00E2n</li>\r\n <li (click)=\"browseFileFromComputer()\">T\u1EA3i l\u00EAn t\u1EEB m\u00E1y t\u00EDnh</li>\r\n </ul>\r\n </p-overlayPanel>\r\n <div class=\"message-input p-float-label\">\r\n <input #input pInputText\r\n id=\"message\"\r\n autocomplete=\"off\" autocorrect=\"off\"\r\n spellcheck=\"false\" class=\"ui-inputtext\"\r\n type=\"text\" placeholder=\"N\u1ED9i dung tin nh\u1EAFn\"\r\n [(ngModel)]=\"model.content\"\r\n (keyup.enter)=\"onSendMessage($event.target.value)\" (keydown.shift.tab)=\"cancelBlur($event)\"\r\n (keydown.tab)=\"cancelBlur($event)\" (paste)=\"handlePaste($event)\" (click)=\"clickInputText()\"/>\r\n </div>\r\n <div>\r\n <button pButton class=\"p-button-danger\" icon=\"fas fa-send\" type=\"button\" label=\"G\u1EEDi\"\r\n (click)=\"onSendMessage(model.content)\">\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"attachment-list\" [ngClass]=\"model.classHasAttachment\">\r\n <tn-custom-scrollbar #scrollbar [style]=\"{'height': '100px'}\">\r\n <div *ngFor=\"let item of model.attachments\" class=\"attachment-item\">\r\n <img *ngIf=\"item.type == 'image'\" [src]=\"item.url | safeUrl\"/>\r\n <span *ngIf=\"item.type == 'file'\">{{item.fileName}}</span>\r\n <i class=\"far fa-times-circle label-danger remove-file-attachment\"\r\n (click)=\"removeAttachment(item)\"></i>\r\n </div>\r\n </tn-custom-scrollbar>\r\n <!-- <div class=\"clearfix\"></div>-->\r\n </div>\r\n </div>\r\n</div>\r\n<p-fileUpload [ngStyle]=\"{'display': 'none'}\" #fileElement (onSelect)=\"onSelectFileFromComputer($event)\"\r\n multiple=\"multiple\" name=\"fileUpload\" [maxFileSize]=\"model.maxFileSize\" auto=\"false\">\r\n</p-fileUpload>\r\n\r\n<!-- <app-drive-file-dialog *ngIf=\"model.driveFileDialog.show\" [parentDataContext]=\"dataContext\"\r\n []=\"model.driveFileDialog\" #driveFileDialog>\r\n</app-drive-file-dialog> -->\r\n",
27523
27546
  providers: [ComponentContextService],
27524
- styles: ["", "@charset \"UTF-8\";@import url(D:\\Code\\git.dttt.vn\\5.1\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(D:\\Code\\git.dttt.vn\\5.1\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
27547
+ styles: ["", "@charset \"UTF-8\";@import url(D:\\Projects\\shared\\AppSharedV5\\node_modules\\@angular\\material\\prebuilt-themes\\indigo-pink.css);@import url(D:\\Projects\\shared\\AppSharedV5\\node_modules\\jsoneditor\\dist\\jsoneditor.min.css);.flex{display:flex}.flex .fit{flex:1 1}.flex.flex-column{flex-direction:column}.flex.flex-wrap{flex-wrap:wrap}.flex.center-v{align-items:center}.flex.center-all,.flex.center-h{justify-content:center}.flex.center-all{align-items:center}.validate-item{color:#e00000;display:inline-block;font-size:.9em;white-space:nowrap}.tn-scroll-bar.bgWhite>div,.validate-item{background-color:#fff}.label-primary{background-color:#1ab394;padding:2px}.label-danger,.label-primary{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px}.label-danger{background-color:#ed5565;padding:2px 5px}.label-warning{background-color:#b8860b}.label-secondary,.label-warning{border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.label-secondary{background-color:#a9a9a9}.label-done{background-color:#3b1ef7;border-radius:.25em;color:#fff;display:inline-block;font-size:12px;margin-left:3px;margin-right:3px;min-width:60px;padding:2px}.text-navy{color:#1ab394!important}.text-danger{color:red!important}.fa-user-edit{font-size:14px}.flexcolumn{border:1px solid #eee;border-radius:5px;min-height:80px;overflow-x:hidden;overflow-y:hidden}.flexcolumn,.has2ScrollZone2 .flexcolumn{max-height:calc(100vh - 180px)}.headerNoBorder>th{border:none!important;border-bottom:1px solid #eee!important}.cellNoBorder table tr td{border:0!important}.layout-wrapper .layout-main{overflow:hidden;padding:60px 0 0}div.circleButton{border-radius:50%;display:inline-block;height:32px;line-height:32px;margin-bottom:4px;margin-top:4px;overflow:hidden;position:relative;text-align:center;transform:perspective(1px);width:32px}div.circleButton>a{line-height:32px;padding:0!important}div.circleButton>a>i{width:24px!important}div.circleButton:before{background:#e6e6e6;border-radius:50%;bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;transform:scale(0);transition:all .3s cubic-bezier(.4,.34,.01,.97);z-index:-1}div.circleButton:hover:before{transform:scale(1)}.message-notice{background:#e0e0e0;text-align:center}.message-created-by{color:#888;font-size:.82em;font-weight:400;margin-bottom:3px;margin-left:45px;margin-top:5px}.message-created{color:#495057;display:inline-block;font-size:.82em;margin-bottom:0;margin-top:0}.message-own .message-created{padding-left:10px;padding-right:6px}.message-from .message-created{padding-left:6px;padding-right:10px}.message-content{color:#000;line-height:20px;margin-bottom:6px;margin-top:3px;position:relative}.message-content i{display:none}.message-content:hover i{display:block}.message-content:hover{padding-right:20px!important}.chat-box-content{max-height:500px}.attachment-list .attachment-item{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background:#f1f1f1;border:1px solid #ccc;border-radius:8px;box-shadow:1px 2px 3px rgba(0,0,0,.06);float:left;height:84px;margin:8px;overflow:hidden;position:relative;text-align:center;user-select:none;width:84px}.attachment-list .attachment-item img{height:100%;width:100%}.attachment-list .attachment-item span{left:0;padding:5px;position:absolute;top:25px;width:100%;word-break:break-all}.clearfix{clear:both}.dashboard .chat ul li img.message-img{float:none;height:120px;margin-left:0;width:auto}.message-attachment{cursor:pointer;font-size:1.5em;margin:0 5px 0 0;position:relative}.hidden{display:none}.message-input{width:100%}.message-input label{font-size:1.2rem}.remove-file-attachment{background:#495057;border-radius:50%;color:#fff;cursor:pointer;font-size:20px;position:absolute;right:5px;top:5px}.attachment-list{background:#fff;bottom:51px;box-shadow:0 -2px 3px -3px rgba(0,0,0,.21176470588235294);display:none;height:100px;left:-15px;position:absolute;width:calc(100% + 30px)}.attachment-list.attached-file{display:block}.dashboard{margin-bottom:-15px;margin-top:-5px}.dashboard .timeline>.ui-g .ui-g-9 .event-text{color:#555;white-space:nowrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2{line-height:18px;padding-left:30px;text-align:justify;white-space:pre-wrap}.dashboard .timeline>.ui-g .ui-g-9 .event-text.event-text2 i{left:20px;margin-top:3px;position:absolute}.new-message{align-items:center;justify-content:center}.dashboard .chat .new-message{border:0;display:flex;margin:0;padding:0;text-align:left}.dashboard .chat .new-message i{color:#495057}.dashboard .chat .new-message .message-attachment{border:0}.dashboard .chat .new-message .button-send{display:inline-block;line-height:40px;position:relative}.dashboard .chat .new-message .button-send .p-button-label{text-align:center}.dashboard .chat .new-message .message-emotion{display:inline-block;height:100%;line-height:40px;text-align:center;width:40px}.dashboard .chat .new-message .message-emotion i{font-size:24px;line-height:inherit}.dashboard .chat .new-message .message-input{width:calc(100% - 155px)}.dashboard .chat ul li.message-from,.dashboard .chat ul li.message-own{padding:0}.dashboard .chat ul li.message-from>span{background-color:#f0e3fd;border:0;border-radius:2px 20px 20px 2px}.dashboard .chat ul li.message-from>.first,.dashboard .chat ul li.message-from>.middle{margin-left:45px!important}.dashboard .chat ul li.message-from>.last{border-radius:2px 20px 20px 20px;margin-left:45px!important}.dashboard .chat ul li.message-from>img{border-radius:50%;margin-top:5px;position:absolute;width:36px}.dashboard .chat ul li.message-own>span{background-color:#def6f8;border:0;border-radius:20px 2px 2px 20px;text-align:right}.dashboard .chat ul li.message-own>span.sending{background-color:#eee}.dashboard .chat ul li.message-own>span.last{border-radius:20px 2px 20px 20px}.dashboard .chat ul li.message-own .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-own .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-own>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:right}.dashboard .chat ul li.message-from .attachment span.attachment-item{background-color:#f1f1f1!important;border:0!important;padding-left:0;padding-right:0}.dashboard .chat ul li.message-from .attachment span.attachment-item a{color:#555;cursor:pointer;display:inline-block;font-weight:700}.dashboard .chat ul li.message-from .attachment span.attachment-item a img{margin-right:0}.dashboard .chat ul li.message-from>div.file{background:#f1f1f1;border:1px solid #e4e4e4;border-radius:6px;display:inline-block;margin:1px;overflow:hidden;text-align:left}.dashboard .chat ul li .attachment span.attachment-item a>i{padding-right:8px}.dashboard .chat ul li div.file p.attachment{display:inline-block;margin-bottom:5px}.dashboard .chat ul li.message-from{text-align:left}.dashboard .chat ul li.message-own{text-align:right}.dashboard .chat ul li>div.file.image{height:170px;max-width:100%;padding:15px;transition:width .15s linear;width:220px}.dashboard .chat ul li>div.file.image p.attachment{height:120px}.dashboard .chat ul li>div.file{padding:15px}.dashboard .chat ul li>div.file p,.dashboard .chat ul li>div.file span{display:inline-block;margin:0;padding:0}.visible{opacity:1;transition:opacity .15s linear;visibility:visible}.hidden{opacity:0;transition:visibility 0s .1s,opacity .1s linear;visibility:hidden}.visible2{opacity:1;transition:opacity .35s linear;visibility:visible}.hidden2{opacity:0;transition:visibility 0s .3s,opacity .3s linear;visibility:hidden}.dashboard .chat{position:relative}.dashboard .chat .scroll-to-bottom{bottom:6px;min-height:40px;padding-right:12px;position:-webkit-sticky;position:sticky;text-align:right}.dashboard .chat .scroll-to-bottom span{background:#495057;border:2px solid #fff;border-radius:50%;box-shadow:0 0 10px rgba(0,0,0,.34901960784313724);color:#fff;cursor:pointer;display:inline-block;font-size:20px;height:35px;line-height:35px;overflow:hidden;text-align:center;width:35px}.dashboard .chat .group-info{line-height:30px;margin:-10px;padding:5px 10px;top:0;z-index:99}.dashboard .chat .group-info,.dashboard .chat .pin{background:#fff;box-shadow:0 0 3px -1px rgba(0,0,0,.21176470588235294);position:-webkit-sticky;position:sticky}.dashboard .chat .pin{margin-bottom:10px;margin-left:-10px;top:40px;width:calc(100% + 20px);z-index:98}.dashboard .chat ul li.message-from.pin>span,.dashboard .chat ul li.message-own.pin>span{background-color:transparent}.dashboard .chat ul li.message-from.pin>span{margin-left:0}.dashboard .chat .message-content i{color:#495057;cursor:pointer;font-size:11px}.dashboard .chat .pin .message-content i{display:block}.dashboard .chat li.message-from .message-content{padding-left:6px}.dashboard .chat li.message-from .message-content i{padding:5px}.dashboard .chat li.message-own .message-content i{padding:5px;position:absolute;right:-15px}.dashboard .chat .group-info .circleButton{float:right;margin-bottom:0;margin-top:0}.dashboard .chat ul{margin-top:20px;padding:0}.dashboard .chat .new-message .message-input input.ui-inputtext:focus{box-shadow:none;outline:none}.dashboard .chat ul.hasPin{margin-top:10px}.dashboard .chat .group-info a{color:#495057}.normalHtml,.normalHtml b,.normalHtml strong{font-weight:400}.normalHtml{display:inline-block}.avatar-viewer .profile-image{border:1px solid #fff;border-radius:50%;height:40px;margin-top:-6px;width:40px}a.button>i{margin-right:5px}.dashboard .timeline{padding-top:20px}.ui-inputgroup .ui-inputtext{padding-right:0}.new-message .ui-inputtext{width:100%}.full-screen,.full-screen>.p-dialog{height:100%!important;left:0!important;max-height:100%;min-height:unset!important;min-width:100%!important;top:0!important;width:100%!important}#image-view-list.image-gallery-2{background-color:rgba(0,0,0,.4);height:calc(100vh - 41px);margin:-14px auto 0;touch-action:none;width:100%}#image-view-list.image-gallery-2 .image-container{background-color:transparent;border:0;bottom:0;height:85%;margin:auto}#image-view-list.image-gallery-2 .image-container .iv-snap-view{bottom:20px;left:calc(50% - 75px);top:auto}#image-view-list.image-gallery-2 .image-container .iv-image-view img{touch-action:auto}#image-view-list .inline-icon{margin-top:-41px}#image-view-list .footer-info,#image-view-list .material-icons.next,#image-view-list .material-icons.prev{display:none}#image-view-list .options-image-viewer{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;margin-right:37px;user-select:none}.mobile-image-viewer-close{color:#fff;cursor:pointer;font-size:x-large;height:42px;line-height:42px;padding-right:7px;padding-top:2px;position:absolute;right:0;text-align:center;top:0;vertical-align:middle;width:37px}.mobile-image-viewer-close:hover{color:#feca37!important}.hide-holder{padding:0}.file-ex-name{word-break:break-all}.box-function{background:#fff;border-radius:0 0 5px 5px;border-top:1px solid #e8e8e8;bottom:0;left:0;padding:8px 30px;position:absolute;text-align:right;width:100%}.box-function button{margin-left:5px}.quick-note-button-holder{bottom:40px;display:none;height:50px;position:absolute;right:50px;width:50px;z-index:99}.quick-note-button{background:#ffc107;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:2em;height:50px;line-height:50px;outline:none;text-align:center;width:50px}.quick-note-button:hover{color:#fff}.all-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.all-note-button:hover{color:#fff}.setting-note-button{background:#ffd24b;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 5px 0 #b9b9b9;color:#fff;display:block;font-size:1.5em;height:40px;line-height:40px;outline:none;position:absolute;right:5px;text-align:center;top:5px;transition:right;transition-duration:.16s;transition-timing-function:ease-in;width:40px;z-index:-1}.setting-note-button:hover{color:#fff}.pinned-notes-holder{bottom:20px;display:none;left:20px;position:absolute;width:250px;z-index:98}.pinned-notes{background:transparent;display:block;outline:none;padding:0}.pinned-notes-header{font-size:1rem;font-weight:700}.pinned-notes-setting{position:absolute;right:.5rem}.pinned-note{background-color:#fff1ac;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);font-size:.8rem;margin-bottom:10px;padding:0;position:relative}.pinned-note:last-child{margin-bottom:0}.pinned-notes-minimize-button{background:#ffc003;border:1px solid #fff;border-radius:50%;box-shadow:1px 2px 3px rgba(185,139,6,.6313725490196078);color:#fff;cursor:pointer;height:25px;padding-top:5px;position:absolute;right:-15px;text-align:center;top:-15px;width:25px;z-index:1}.pinned-note-header-line{border:1px solid #fff;box-shadow:1px 1px 2px rgba(0,0,0,.4);height:calc(100% - 1rem);left:3px;margin-bottom:.5rem;margin-top:.5rem;max-height:20px;position:absolute;width:13px}.pinned-note-header-right{cursor:pointer;float:right;margin-left:3px;width:32px}.pinned-note-header-time{font-size:.6rem}.pinned-note-header-button-unpin{display:none;float:left;height:14px;margin-right:2px;opacity:.8;width:14px}.pinned-note-header-button-complete{display:none;padding-top:2px}.pinned-note-body{float:right;padding:.5rem .5rem .5rem 25px;width:100%}.pinned-note-body:hover{background-color:#feeb82}.pinned-note-body:hover .pinned-note-header-time{display:none}.pinned-note-body:hover .pinned-note-header-button-complete,.pinned-note-body:hover .pinned-note-header-button-unpin{display:block}.pinned-note-line-title{color:#333;display:block;font-weight:700;padding-bottom:6px}.pinned-note-line{display:block}.view-port{border-radius:5px;box-shadow:0 0 0 9999px rgba(0,0,0,.5882352941176471);display:none;height:0;width:0;z-index:999}.view-port,.view-port-mask{background:transparent;position:absolute}.view-port-mask{display:block;height:100%;left:0;top:0;width:100%;z-index:9998}.tinymce-control{border:1px solid #ccc;display:none;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;width:100%}.input-tab-trap{filter:alpha(opacity=0)!important;opacity:0!important;overflow:hidden!important;width:0!important}.color-value input{font-size:.8em;line-height:16px}.dialog-material.mobile{width:100%!important}audio,audio:focus,video,video:focus{outline:none}.iv-image-view img.iv-image{-webkit-animation:fadein .5s;animation:fadein .5s;visibility:hidden!important}@-webkit-keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes fadein{0%{opacity:0}to{opacity:1}}.iv-image-view img.iv-image.show{visibility:visible!important}.row-line{padding-bottom:0;padding-top:0}.fc-ltr{padding-bottom:7px}.padding-bottom-5px{padding-bottom:5px}.no-margin{margin:0!important}.no-padding{padding:0}.no-padding-left{padding-left:0}.float-left{float:left}body .fc .fc-toolbar .fc-button{background-color:#007ad9;border:1px solid #007ad9;border-radius:3px;color:#fff;font-size:14px;transition:background-color .2s,box-shadow .2s}body .fc .fc-toolbar .fc-button:enabled:hover{background-color:#116fbf;border-color:#116fbf;color:#fff}body .fc .fc-toolbar .fc-button:focus{box-shadow:0 0 0 .2em #8dcdff;outline:0 none;outline-offset:0}body .fc .fc-toolbar .fc-button-group .fc-button{border-radius:0}body .fc .fc-toolbar .fc-button-group .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-button-group .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}body .fc .fc-toolbar .fc-right .fc-button{border-radius:0}body .fc .fc-toolbar .fc-right .fc-button:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}body .fc .fc-toolbar .fc-right .fc-button:last-child{border-bottom-right-radius:3px;border-top-right-radius:3px}.fc-toolbar>*>:not(:first-child){margin-left:0}.fc-axis,.fc-dayGridMonth-button,.fc-timeGridDay-button,.fc-timeGridWeek-button,.old-content{line-height:0;text-indent:-9999px}.fc-axis:after,.fc-dayGridMonth-button:after,.fc-timeGridDay-button:after,.fc-timeGridWeek-button:after,.new-content{display:block;line-height:normal;text-indent:0}.fc-dayGridMonth-button:after{content:\"Th\u00E1ng\";padding:.2em}.fc-timeGridWeek-button:after{content:\"Tu\u1EA7n\";padding:.2em}.fc-timeGridDay-button:after{content:\"Ng\u00E0y\";padding:.2em}body .fc th{background-color:#f4f4f4;border:1px solid #c8c8c8;color:#333;padding:.571em 1em}.ui-fluid .button-group button,.ui-fluid .button-group p-button{margin-right:.5em!important;text-align:left;width:auto}.layout-wrapper .layout-menu-container{z-index:97}.base-status,.base-status-aborted,.base-status-approved,.base-status-completed,.base-status-create-new,.base-status-ended,.base-status-high,.base-status-immediately,.base-status-low,.base-status-medium,.base-status-on-conducting,.base-status-on-going,.base-status-pending,.base-status-rejected,.base-status-returned,.base-status-urgent{border-radius:.25em;color:#fff;font-size:.8em;padding:3px;text-align:center}.base-status-create-new{background-color:#f2f2f2;color:#666}.base-status-on-conducting,.base-status-on-going{background-color:#337ab7}.base-status-pending{background-color:#ffba01}.base-status-approved{background-color:#34a835}.base-status-returned{background-color:#ffba01}.base-status-rejected{background-color:#d9534f}.base-status-completed{background-color:#34a835}.base-status-aborted{background-color:#ffba01}.base-status-ended{background-color:#34a835}.base-status-low,.base-status-medium{background-color:#f2f2f2;color:#666}.base-status-high{background-color:#ffba01}.base-status-immediately,.base-status-urgent{background-color:#d9534f}.text-align-center{text-align:center}.font-weight-bold{font-weight:700}.landing-body .landing-menu li a:hover{border-bottom:none}.landing-body .landing-menu li:first-child{margin-left:8px}.crud-form .label-control p{margin:0;padding:0}.crud-form .tn-check-box-list .p-row{display:block;padding:.5em;width:100%}.crud-form dropdown,.crud-form tn-mask{width:100%}.crud-form .tn-dropdown{min-height:32px}.crud-form .tn-dropdown.free-text.horizontal{display:flex}.crud-form .tn-dropdown.free-text.horizontal>div{flex-grow:1;padding-left:.5em;padding-right:.5em}.crud-form .tn-dropdown.free-text.horizontal>div:first-child{padding-left:0}.crud-form .tn-dropdown.free-text.horizontal>div:last-child{padding-right:0}.crud-form .tn-dropdown.free-text.vertical input.ui-inputtext.input-free-text{margin-top:.5em}.crud-form.assessment .label-control{font-weight:700}.crud-form.assessment .label-control.haveIndex{display:block;margin-bottom:5px;padding-left:20px;position:relative}.crud-form.assessment .label-control.haveIndex:before{content:\" \" attr(label-index) \".\";left:0;position:absolute;top:0}.crud-form.assessment .ViewMode{border-bottom:none}.crud-form.assessment .ViewMode .label-control{margin-bottom:0}body .ui-inputtext.min-width{padding:6px}.ps__rail-x,.ps__rail-y{z-index:2}.zIndex5 .ps__rail-x,.zIndex5 .ps__rail-y{z-index:5}.table-sticky table{border-collapse:separate;border-spacing:0}.table-sticky tr td,.table-sticky tr th{border:1px solid #eee!important;border-left:none!important;border-top:none!important}.table-sticky tr td:first-child,.table-sticky tr th:first-child{border-left:1px solid #eee!important}.table-sticky tr td:last-child,.table-sticky tr th:last-child{border-right:none!important}.table-sticky tr:first-child th{border-top:1px solid #eee!important}.table-sticky th{background:#eee}.table-sticky tbody td.disabled{background:#eee!important}.table-sticky tbody td.disabled:not(:last-child){border-right:1px solid #fff!important}.table-sticky.fix-height tr:first-child th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.container-flex{align-items:center;display:flex}.container-flex>div:first-child{flex:0 0 auto;margin-right:.5em}.container-flex>div:last-child{flex-grow:1}.container-control{display:flex}.container-control>span.label{flex:0 0 auto;padding-right:.5em;padding-top:.5em}.container-control>span.label+*{flex-grow:1;flex-shrink:1;position:relative}.container-control>span.label+* .tn-dropdown,.container-control>span.label+* .ui-autocomplete-multiple,.container-control>span.label+* .ui-inputgroup .ui-inputtext{width:100%}.container-control>span.label+* .validation-container{margin-top:3px}.container-control>span.label+* .validation-container .validate-item{white-space:unset}.container-control>span.label+*>div{left:0;position:absolute;top:0;width:100%}.container-control.no-label>span.label{display:none}.container-control.inline{display:inline-flex}.align-flex-center{align-items:center;display:flex;justify-content:center}@media print{.isPrinting>*{display:none}.isPrinting app-print-layout{display:block}}.layout-wrapper .topbar .topbar-left,.layout-wrapper .topbar .topbar-right{background:#397ac3}#searchResultPanel-holder{padding:0 .5em}.cus-dropdown{line-height:normal;margin-right:1em}.tn-thumbnail{padding:.5rem}.tn-thumbnail.tn-thumbnail.tn-thumbnail{box-sizing:border-box}.fa-10:before{content:\"A+\";font-family:cursive;font-weight:700}.layout-wrapper .topbar .topbar-right #menu-button i{font-size:20px;margin-top:4px}.layout-wrapper .layout-menu li a i.menuitem-toggle-icon{font-size:15px;margin-left:auto}.flex-container-main-content{display:flex;flex-direction:column}.flex-container-main-content>div:last-child{background-color:#f4f4f4;display:flex;flex:1 1;overflow:hidden;position:relative}.flex-container-main-content>div:last-child>div{height:100%;left:0;overflow:hidden;padding-top:.5em;position:absolute;top:0;width:100%}.flex-container-main-content .block-with-button-search{display:flex;justify-content:flex-end}.flex-container-main-content .block-with-button-search>*{margin-left:.5em}.flex-container-main-content .block-with-button-search>input{height:26px;margin-left:0;max-width:200px;width:100%}.flex-container-main-content .block-with-button-search>dropdown{max-width:140px;width:100%}.flex-container-main-content .title-main-component{border-bottom:2px solid #1ca7ff}.clickable-table.clickable-table{cursor:pointer}.main-crud-container{height:calc(100vh - 76px)}.flex-container-fit-child{display:flex;flex-direction:column;height:100%;overflow:hidden}.flex-container-fit-child>div.fit-content{flex:1 1;position:relative}.flex-container-fit-child>div.fit-content>div{height:100%;overflow:auto;position:absolute;width:100%}.waiting-box{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:9999}.waiting-box .overlay{background-color:red;background-color:hsla(0,0%,42.7%,.5019607843137255);height:100%;width:100%}.waiting-box .content-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.waiting-box.show{display:block}.function-topbar>*{vertical-align:top}.function-topbar button{width:auto}.function-topbar p-fileUpload{margin-right:1em}.function-topbar .container-control{display:inline-flex;line-height:normal}.function-topbar .container-control dropdown{width:100%}:focus{outline-color:#a6d5fa!important}address{font-style:normal}body .p-toast .p-toast-message{border-radius:0;border-width:0 0 0 4px!important}.__status span,.status span{font-size:.8rem}p-table.single-check .p-datatable .p-datatable-tbody>tr{cursor:pointer}p-table.single-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important;outline:2px solid #a6d5fa}p-table.single-check .p-datatable .p-datatable-tbody>tr td.sticky .fix-sticky.top{display:none}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight{background:#e3f2fd!important}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td{border-color:#fff}p-table.multi-check .p-datatable .p-datatable-tbody>tr.ui-state-highlight td .fix-sticky{background-color:#fff}.tn-animated-left-arrow-icon,.tn-animated-right-arrow-icon{height:32px;position:relative;width:14px;z-index:10}.tn-animated-right-arrow-icon{-webkit-animation:arrowBounceToRight .8s ease-in-out infinite alternate;animation:arrowBounceToRight .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon{-webkit-animation:arrowBounceToLeft .8s ease-in-out infinite alternate;animation:arrowBounceToLeft .8s ease-in-out infinite alternate}.tn-animated-left-arrow-icon:after,.tn-animated-left-arrow-icon:before,.tn-animated-right-arrow-icon:after,.tn-animated-right-arrow-icon:before{background-color:#88b0dd;content:\"\";display:block;height:20px;position:absolute;width:5px}.tn-animated-right-arrow-icon:before{left:4px;top:0;transform:rotate(-35deg)}.tn-animated-right-arrow-icon:after{left:4px;top:14px;transform:rotate(35deg)}.tn-animated-left-arrow-icon:before{right:4px;top:0;transform:rotate(35deg)}.tn-animated-left-arrow-icon:after{right:4px;top:14px;transform:rotate(-35deg)}@-webkit-keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@keyframes arrowBounceToLeft{0%{transform:translateX(-3px)}to{transform:translateX(3px)}}@-webkit-keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}@keyframes arrowBounceToRight{0%{transform:translateX(3px)}to{transform:translateX(-3px)}}.pass{color:#49c949}.not-pass,.pass{margin:5px;text-align:center}.not-pass{color:red}"]
27525
27548
  },] }
27526
27549
  ];
27527
27550
  ChatSendMessageBoxComponent.ctorParameters = function () { return [
@@ -27578,9 +27601,12 @@
27578
27601
  CheckBoxListComponent.prototype.ngOnInit = function () {
27579
27602
  this.fieldValue = this.control.valueField;
27580
27603
  if (this.control.dataSource == null || this.control.dataSource.length == 0) {
27581
- if (this.control.serviceUri) {
27582
- this.bindDataSource();
27583
- }
27604
+ this.bindDataSource(this.control.serviceUri, this.control.baseService);
27605
+ // if (this.control.serviceUri) {
27606
+ // }
27607
+ // else if(this.control.baseService) {
27608
+ //
27609
+ // }
27584
27610
  }
27585
27611
  else {
27586
27612
  this.dataSourceInternal = this.control.dataSource;
@@ -27598,20 +27624,56 @@
27598
27624
  this.classCheckBox += " p-col-" + this.control.pColClass;
27599
27625
  }
27600
27626
  };
27601
- CheckBoxListComponent.prototype.bindDataSource = function () {
27627
+ CheckBoxListComponent.prototype.bindDataSource = function (serviceUri, baseService) {
27602
27628
  var _this = this;
27603
- this._dropDownService.getDataSource(this.control.serviceUri).then(function (rs) {
27604
- var arr = [];
27605
- // for (let i = 0; i < rs.data.length; i++) {
27606
- // arr.push({ label: rs.data[i][this.control.displayField], title: rs.data[i][this.control.displayField], value: rs.data[i][this.control.valueField] });
27607
- // }
27608
- _this.dataSourceInternal = rs.data;
27609
- _this.gotData = true;
27610
- if (_this.wroteValue) {
27611
- _this.fixValue();
27629
+ var _a, _b;
27630
+ if (baseService) {
27631
+ if (baseService instanceof BaseService) {
27632
+ var dropdownOptions = new DropdownOptions({
27633
+ displayField: (_a = this.control.displayField) !== null && _a !== void 0 ? _a : 'ten',
27634
+ valueField: (_b = this.control.valueField) !== null && _b !== void 0 ? _b : 'id',
27635
+ });
27636
+ baseService.getDataDropdown(dropdownOptions).then(function (res) {
27637
+ _this.dataSourceInternal = res;
27638
+ _this.gotData = true;
27639
+ if (_this.wroteValue)
27640
+ _this.fixValue();
27641
+ _this.onReady.emit(_this.control.field);
27642
+ }).catch(function (err) {
27643
+ _this.onReady.emit(_this.control.field);
27644
+ console.log(err);
27645
+ });
27612
27646
  }
27613
- }, function (error) {
27614
- });
27647
+ else if (baseService instanceof MasterDataService) {
27648
+ baseService.getDropdown(this.control.groupCode).then(function (res) {
27649
+ // const displayField = this.control.displayField ?? 'id';
27650
+ // const valueField = this.control.valueField ?? 'code';
27651
+ _this.dataSourceInternal = res.map(function (item) {
27652
+ return { id: item.value, ten: item.label };
27653
+ });
27654
+ if (_this.wroteValue)
27655
+ _this.fixValue();
27656
+ _this.onReady.emit(_this.control.field);
27657
+ }).catch(function (err) {
27658
+ console.log(err);
27659
+ _this.onReady.emit(_this.control.field);
27660
+ });
27661
+ }
27662
+ }
27663
+ else if (serviceUri) {
27664
+ this._dropDownService.getDataSource(serviceUri).then(function (rs) {
27665
+ var arr = [];
27666
+ // for (let i = 0; i < rs.data.length; i++) {
27667
+ // arr.push({ label: rs.data[i][this.control.displayField], title: rs.data[i][this.control.displayField], value: rs.data[i][this.control.valueField] });
27668
+ // }
27669
+ _this.dataSourceInternal = rs.data;
27670
+ _this.gotData = true;
27671
+ if (_this.wroteValue) {
27672
+ _this.fixValue();
27673
+ }
27674
+ }, function (error) {
27675
+ });
27676
+ }
27615
27677
  };
27616
27678
  CheckBoxListComponent.prototype.change = function (event) {
27617
27679
  var totalValue = __spread(this.selectedValue);
@@ -27679,8 +27741,8 @@
27679
27741
  {
27680
27742
  provide: forms.NG_VALUE_ACCESSOR,
27681
27743
  useExisting: i0.forwardRef(function () { return CheckBoxListComponent; }),
27682
- multi: true
27683
- }
27744
+ multi: true,
27745
+ },
27684
27746
  ],
27685
27747
  styles: [".tn-check-box-list.p-grid{margin-bottom:-.5em}.p-col-horizontal{padding:.5em;position:relative}.tn-check-box-list{position:relative}.tn-check-box-list.flex-end{justify-content:flex-end}.tn-check-box-list.flex-center{justify-content:center}"]
27686
27748
  },] }
@@ -32224,6 +32286,433 @@
32224
32286
  onReady: [{ type: i0.Output }]
32225
32287
  };
32226
32288
 
32289
+ var TreeTableComponent = /** @class */ (function (_super) {
32290
+ __extends(TreeTableComponent, _super);
32291
+ function TreeTableComponent(injector, _crudService) {
32292
+ var _this = _super.call(this, injector) || this;
32293
+ _this._crudService = _crudService;
32294
+ _this.model = new CrudListData();
32295
+ _this.setting = new CrudListSetting();
32296
+ _this.config = new CrudListConfig();
32297
+ _this._dataSource = [];
32298
+ _this.hiddenDelete = false;
32299
+ _this.hiddenEdit = false;
32300
+ _this.onReload = new i0.EventEmitter();
32301
+ _this.onAdd = new i0.EventEmitter();
32302
+ _this.onEdit = new i0.EventEmitter();
32303
+ _this.onView = new i0.EventEmitter();
32304
+ _this.onDelete = new i0.EventEmitter();
32305
+ _this.template = {};
32306
+ _this.cachedTransforms = {};
32307
+ return _this;
32308
+ }
32309
+ Object.defineProperty(TreeTableComponent.prototype, "dataSource", {
32310
+ get: function () {
32311
+ return this._dataSource;
32312
+ },
32313
+ set: function (value) {
32314
+ var dataSource = [];
32315
+ if (value) {
32316
+ dataSource = value;
32317
+ }
32318
+ this.processDataSource(dataSource);
32319
+ this._dataSource = dataSource;
32320
+ },
32321
+ enumerable: false,
32322
+ configurable: true
32323
+ });
32324
+ TreeTableComponent.prototype.ngOnInit = function () {
32325
+ this.getData();
32326
+ };
32327
+ TreeTableComponent.prototype.getData = function () {
32328
+ var infoGetData = this.getGridInfo();
32329
+ this.onReload.emit(infoGetData);
32330
+ };
32331
+ TreeTableComponent.prototype.processDataSource = function (dataSource) {
32332
+ var _this = this;
32333
+ if (!dataSource)
32334
+ return;
32335
+ dataSource.forEach(function (itemSource) {
32336
+ var source = itemSource.data;
32337
+ if (source.id == undefined) {
32338
+ source.id = _this._commonService.guid();
32339
+ }
32340
+ source.objStyleClass = {};
32341
+ if (!source.colSpan) {
32342
+ source.colSpan = {};
32343
+ }
32344
+ if (!source.rowSpan) {
32345
+ source.rowSpan = {};
32346
+ }
32347
+ if (!source.hidden) {
32348
+ source.hidden = {};
32349
+ }
32350
+ if (source.isNew) {
32351
+ source.objStyleClass.isNew = true;
32352
+ }
32353
+ if (source.isExpiring) {
32354
+ source.objStyleClass.expiring = true;
32355
+ }
32356
+ if (source.class) {
32357
+ source.class.split(' ').filter(function (p) { return p; }).forEach(function (cls) {
32358
+ source.objStyleClass[cls] = true;
32359
+ });
32360
+ }
32361
+ // this.setting.advanceData.fieldHasMaximumLength.forEach(_col => {
32362
+ // const col = <ColumnSchemaBase>_col;
32363
+ // const value = source[col.field];
32364
+ // if (value && value.substring && value.length > col.maxLengthDisplay) {
32365
+ // // sv: short value
32366
+ // source[`${col.field}__sv`] = `${value.substring(0, col.maxLengthDisplay)}`;
32367
+ // }
32368
+ // });
32369
+ // this.setting.advanceData.fieldHasMaximumWord.forEach(_col => {
32370
+ // const col = <ColumnSchemaBase>_col;
32371
+ // const valueShortWord = this.subWord(source[col.field], col.maxWordDisplay);
32372
+ // if (valueShortWord) {
32373
+ // // sv: short value
32374
+ // source[`${col.field}__sv`] = `${valueShortWord}`;
32375
+ // }
32376
+ // });
32377
+ _this.processDataSource(itemSource.children);
32378
+ });
32379
+ };
32380
+ TreeTableComponent.prototype.subWord = function (value, wordCount) {
32381
+ if (!value || !value.trim)
32382
+ return value;
32383
+ value = value.trim();
32384
+ var index = -1, beforeChar = 'a';
32385
+ for (var i = 0; i < value.length; i++) {
32386
+ if (value[i] == '' && beforeChar != '') {
32387
+ wordCount--;
32388
+ }
32389
+ beforeChar = value[i];
32390
+ if (wordCount == 0) {
32391
+ index = i;
32392
+ break;
32393
+ }
32394
+ }
32395
+ if (index > -1)
32396
+ return value.substring(0, index);
32397
+ return null;
32398
+ };
32399
+ TreeTableComponent.prototype.toggleShowFull = function (rowData, field) {
32400
+ rowData[field + '__showFull'] = !rowData[field + '__showFull'];
32401
+ };
32402
+ TreeTableComponent.prototype.reload = function (filter_custom, page) {
32403
+ if (page === void 0) { page = 1; }
32404
+ this.filter_custom = filter_custom;
32405
+ this.setting.pageSetting.page = page;
32406
+ this.getData();
32407
+ };
32408
+ TreeTableComponent.prototype.adjustPositionLoadingMask = function () {
32409
+ // if (this.interval) {
32410
+ // clearInterval(this.interval);
32411
+ // }
32412
+ // if (!this.model.loading) {
32413
+ // return;
32414
+ // }
32415
+ // this.interval = setInterval(f => {
32416
+ // const element = this.table.containerViewChild.nativeElement.querySelector('.p-datatable-loading-overlay');
32417
+ // if (element) {
32418
+ // const parent = element.closest('p-table');
32419
+ // if (parent) {
32420
+ // const nodeScrollBarContent = parent.parentNode;
32421
+ // if (!nodeScrollBarContent.classList.contains('ps-content')) {
32422
+ // return;
32423
+ // }
32424
+ // nodeScrollBarContent.parentNode.prepend(element);
32425
+ // }
32426
+ // const firstTh = element.parentNode.querySelector('p-table thead tr:first-child > th');
32427
+ // const firstThSize = firstTh.getBoundingClientRect();
32428
+ // const loadingIcon = element.querySelector('.p-datatable-loading-icon');
32429
+ // const fontSize = parseFloat(getComputedStyle(loadingIcon).fontSize);
32430
+ // const top = (firstThSize.height - fontSize) / 2;
32431
+ // const left = (firstThSize.width - fontSize) / 2;
32432
+ // loadingIcon.style.marginTop = `${top}px`;
32433
+ // loadingIcon.style.marginLeft = `${left}px`;
32434
+ // }
32435
+ // else {
32436
+ // this.adjustPositionLoadingMask();
32437
+ // }
32438
+ // }, 20);
32439
+ };
32440
+ TreeTableComponent.prototype.processBaseData = function () {
32441
+ return __awaiter(this, void 0, void 0, function () {
32442
+ return __generator(this, function (_a) {
32443
+ switch (_a.label) {
32444
+ case 0: return [4 /*yield*/, this.preProcessData(this.model.dataSource)];
32445
+ case 1:
32446
+ _a.sent();
32447
+ return [2 /*return*/];
32448
+ }
32449
+ });
32450
+ });
32451
+ };
32452
+ TreeTableComponent.prototype.preProcessData = function (dataSource) {
32453
+ return __awaiter(this, void 0, void 0, function () {
32454
+ var colHasPipe, _loop_1, this_1, colHasPipe_1, colHasPipe_1_1, col;
32455
+ var e_1, _a;
32456
+ return __generator(this, function (_b) {
32457
+ colHasPipe = this.setting.cols.filter(function (x) { return x.pipe; });
32458
+ _loop_1 = function (col) {
32459
+ var e_2, _a;
32460
+ var _loop_2 = function (item) {
32461
+ this_1.transform(col.pipe, col.asyncPipe, item[col.field]).then(function (rs) {
32462
+ item["pipe__" + col.field + " "] = rs;
32463
+ });
32464
+ };
32465
+ try {
32466
+ for (var dataSource_1 = (e_2 = void 0, __values(dataSource)), dataSource_1_1 = dataSource_1.next(); !dataSource_1_1.done; dataSource_1_1 = dataSource_1.next()) {
32467
+ var item = dataSource_1_1.value;
32468
+ _loop_2(item);
32469
+ }
32470
+ }
32471
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
32472
+ finally {
32473
+ try {
32474
+ if (dataSource_1_1 && !dataSource_1_1.done && (_a = dataSource_1.return)) _a.call(dataSource_1);
32475
+ }
32476
+ finally { if (e_2) throw e_2.error; }
32477
+ }
32478
+ };
32479
+ this_1 = this;
32480
+ try {
32481
+ for (colHasPipe_1 = __values(colHasPipe), colHasPipe_1_1 = colHasPipe_1.next(); !colHasPipe_1_1.done; colHasPipe_1_1 = colHasPipe_1.next()) {
32482
+ col = colHasPipe_1_1.value;
32483
+ _loop_1(col);
32484
+ }
32485
+ }
32486
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
32487
+ finally {
32488
+ try {
32489
+ if (colHasPipe_1_1 && !colHasPipe_1_1.done && (_a = colHasPipe_1.return)) _a.call(colHasPipe_1);
32490
+ }
32491
+ finally { if (e_1) throw e_1.error; }
32492
+ }
32493
+ return [2 /*return*/];
32494
+ });
32495
+ });
32496
+ };
32497
+ TreeTableComponent.prototype.transform = function (pipe, asyncPipe, value) {
32498
+ return __awaiter(this, void 0, void 0, function () {
32499
+ var val, val;
32500
+ return __generator(this, function (_a) {
32501
+ switch (_a.label) {
32502
+ case 0:
32503
+ if (this.cachedTransforms[value]) {
32504
+ return [2 /*return*/, this.cachedTransforms[value]];
32505
+ }
32506
+ if (!asyncPipe) return [3 /*break*/, 2];
32507
+ return [4 /*yield*/, pipe.transform(value)];
32508
+ case 1:
32509
+ val = _a.sent();
32510
+ this.cachedTransforms[value] = val;
32511
+ return [2 /*return*/, val];
32512
+ case 2:
32513
+ val = pipe.transform(value);
32514
+ this.cachedTransforms[value] = val;
32515
+ return [2 /*return*/, val];
32516
+ }
32517
+ });
32518
+ });
32519
+ };
32520
+ TreeTableComponent.prototype.getGridInfo = function () {
32521
+ var gridInfo = new GridInfo({
32522
+ pageInfo: {
32523
+ page: this.setting.pageSetting.page,
32524
+ pageSize: this.setting.pageSetting.pageSize
32525
+ },
32526
+ filters: this.getFilters(),
32527
+ sorts: []
32528
+ });
32529
+ return gridInfo;
32530
+ };
32531
+ TreeTableComponent.prototype.getFilters = function () {
32532
+ var result = [];
32533
+ if (this.keyword) {
32534
+ result.push(this.newFilter('ten', exports.Operator.contain, this.keyword));
32535
+ }
32536
+ if (this.filter_custom && this.filter_custom.length) {
32537
+ result.push.apply(result, __spread(this.filter_custom));
32538
+ }
32539
+ return result;
32540
+ };
32541
+ TreeTableComponent.prototype.getContextCell = function (rowData, rowIndex, col, $this) {
32542
+ return {
32543
+ crudList: $this,
32544
+ rowData: rowData,
32545
+ rowIndex: rowIndex,
32546
+ col: col,
32547
+ field: col.field
32548
+ };
32549
+ };
32550
+ TreeTableComponent.prototype.disableEdit = function (rowData) {
32551
+ if (rowData.__disableEdit) {
32552
+ return true;
32553
+ }
32554
+ if (this.hiddenEdit) {
32555
+ return true;
32556
+ }
32557
+ if (rowData['metadataStatus'] && rowData['metadataStatus'] != '0') {
32558
+ return true;
32559
+ }
32560
+ return false;
32561
+ };
32562
+ TreeTableComponent.prototype.disableDelete = function (rowData) {
32563
+ if (rowData.__disableDelete) {
32564
+ return true;
32565
+ }
32566
+ if (this.hiddenDelete) {
32567
+ return true;
32568
+ }
32569
+ if (rowData['metadataStatus'] && rowData['metadataStatus'] != '0') {
32570
+ return true;
32571
+ }
32572
+ return false;
32573
+ };
32574
+ TreeTableComponent.prototype.findTemplate = function (templateName) {
32575
+ var item = this._commonService.findTemplateFromList(this.children, templateName);
32576
+ if (!item && this.templates) {
32577
+ item = this._commonService.findTemplateFromList(this.templates, templateName);
32578
+ }
32579
+ return item;
32580
+ };
32581
+ TreeTableComponent.prototype.hasTemplate = function (templateName) {
32582
+ if (this.template[templateName] === undefined) {
32583
+ this.template[templateName] = this.findTemplate(templateName);
32584
+ }
32585
+ return this.template[templateName] != null;
32586
+ };
32587
+ TreeTableComponent.prototype.getTemplate = function (templateName) {
32588
+ if (this.template[templateName] === undefined) {
32589
+ this.template[templateName] = this.findTemplate(templateName);
32590
+ }
32591
+ return this.template[templateName];
32592
+ };
32593
+ TreeTableComponent.prototype.getComponentByType = function (controlType) {
32594
+ // if (controlType == 'trangThaiV5') {
32595
+ // return this.templateTrangThaiV5;
32596
+ // }
32597
+ // if (controlType == '__viewHistory') {
32598
+ // return this.templateColViewHistory;
32599
+ // }
32600
+ return this.findTemplate(controlType);
32601
+ };
32602
+ TreeTableComponent.prototype.handleAdd = function (evt) {
32603
+ this.onAdd.emit(evt);
32604
+ };
32605
+ TreeTableComponent.prototype.handleView = function (rowData) {
32606
+ this.onView.emit(rowData);
32607
+ };
32608
+ TreeTableComponent.prototype.handleEdit = function (rowData) {
32609
+ this.onEdit.emit(rowData);
32610
+ };
32611
+ TreeTableComponent.prototype.handleDelete = function (rowData) {
32612
+ this.onDelete.emit(rowData);
32613
+ };
32614
+ TreeTableComponent.prototype.onNext = function (event) {
32615
+ this.setting.pageSetting.page = this.setting.pageSetting.page + 1;
32616
+ this.getData();
32617
+ this.scrollTop();
32618
+ };
32619
+ TreeTableComponent.prototype.onPrev = function (event) {
32620
+ if (this.setting.pageSetting.page > 1) {
32621
+ this.setting.pageSetting.page = this.setting.pageSetting.page - 1;
32622
+ }
32623
+ this.getData();
32624
+ this.scrollTop();
32625
+ };
32626
+ TreeTableComponent.prototype.onOldest = function (event) {
32627
+ this.setting.pageSetting.page = Math.ceil(this.model.total / this.setting.pageSetting.pageSize);
32628
+ this.getData();
32629
+ this.scrollTop();
32630
+ };
32631
+ TreeTableComponent.prototype.onLatest = function (event) {
32632
+ this.setting.pageSetting.page = 1;
32633
+ this.getData();
32634
+ this.scrollTop();
32635
+ };
32636
+ TreeTableComponent.prototype.savePageSize = function () {
32637
+ this.savePageSetting();
32638
+ };
32639
+ TreeTableComponent.prototype.savePageSetting = function () {
32640
+ var _this = this;
32641
+ var pathName = location.pathname;
32642
+ if (this.setting.settingKey) {
32643
+ pathName += '/' + this.setting.settingKey;
32644
+ }
32645
+ var pageSetting = [];
32646
+ var checkExist = false;
32647
+ var dataPageSetting = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.PAGE_SETTING);
32648
+ if (dataPageSetting) {
32649
+ pageSetting = JSON.parse(dataPageSetting);
32650
+ pageSetting.forEach(function (element) {
32651
+ if (element.pathname === pathName) {
32652
+ element.pageSize = _this.setting.pageSetting.pageSize;
32653
+ checkExist = true;
32654
+ }
32655
+ });
32656
+ }
32657
+ if (!checkExist) {
32658
+ pageSetting.push({ pathname: pathName, pageSize: this.setting.pageSetting.pageSize });
32659
+ }
32660
+ localStorage.setItem(ComCtxConstants.LOCALSTORAGE_KEY.PAGE_SETTING, JSON.stringify(pageSetting));
32661
+ };
32662
+ TreeTableComponent.prototype.scrollTop = function () {
32663
+ var _this = this;
32664
+ setTimeout(function () {
32665
+ if (_this.scrollbar) {
32666
+ _this.scrollbar.scrollToTop(0, 0);
32667
+ }
32668
+ });
32669
+ };
32670
+ TreeTableComponent.prototype.scrollToBottom = function () {
32671
+ var _this = this;
32672
+ setTimeout(function () {
32673
+ if (_this.scrollbar) {
32674
+ _this.scrollbar.scrollToBottom(0, 0);
32675
+ }
32676
+ });
32677
+ };
32678
+ TreeTableComponent.prototype.handleDanhMaPC = function (evt) {
32679
+ var _this = this;
32680
+ this.setting.baseService.updateMaPhanCapBase()
32681
+ .then(function (res) { return _this.handleResponse(res, 'Đánh lại mã phân cấp thành công', function (f) {
32682
+ _this.reload();
32683
+ }); });
32684
+ };
32685
+ return TreeTableComponent;
32686
+ }(ComponentBase));
32687
+ TreeTableComponent.decorators = [
32688
+ { type: i0.Component, args: [{
32689
+ selector: 'tn-tree-table',
32690
+ template: "<div class=\"custom-card card card-w-title tn-g-page-layout-1\">\r\n <div class=\"ui-helper-clearfix tn-g-page-layout-1__header-area\">\r\n <div class=\"p-grid ui-fluid custom-p-col page-title-area\">\r\n <div class=\"main-title p-col-8\">\r\n <h1>{{setting.title}}</h1>\r\n </div>\r\n <div class=\"p-col-4\">\r\n <paging-next-back-only [model]=\"model\" [setting]=\"setting\" (onOldest)=\"onOldest($event)\"\r\n (onNext)=\"onNext($event)\" (onPrev)=\"onPrev($event)\" (onLatest)=\"onLatest($event)\"\r\n (onChangeLimitPage)=\"savePageSize()\">\r\n </paging-next-back-only>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid crudListToolbar tn-g-page-layout-1__toolbar-area\">\r\n <div class=\"p-col-8 button-group function-topbar\">\r\n <button pButton pRipple type=\"button\" label=\"Th\u00EAm m\u1EDBi\" icon=\"pi pi-plus\" class=\"p-button-text\"\r\n (click)=\"handleAdd($event)\"></button>\r\n <button pButton pRipple type=\"button\" label=\"\u0110\u00E1nh l\u1EA1i m\u00E3 ph\u00E2n c\u1EA5p\" icon=\"pi pi-plus\" class=\"p-button-text\"\r\n (click)=\"handleDanhMaPC($event)\"></button>\r\n </div>\r\n <div class=\"p-col-4 p-inputgroup\">\r\n <input [placeholder]=\"'T\u00ECm ki\u1EBFm'\" [(ngModel)]=\"keyword\" pInputText type=\"text\" (change)=\"getData()\">\r\n <button pButton type=\"button\" class=\"btn-info btn-search\" label=\"T\u00ECm ki\u1EBFm\" (click)=\"getData()\"></button>\r\n </div>\r\n </div>\r\n <div class=\"tn-g-page-layout-1__table-area\">\r\n <tn-custom-scrollbar [showScrollHorizontal]=\"true\" class=\"--has-border\">\r\n <p-treeTable #treetable [value]=\"dataSource\" [columns]=\"setting.cols\" styleClass=\"treeOrganization\">\r\n <ng-template let-columns pTemplate=\"header\">\r\n <tr>\r\n <th style=\"width: 70px\" class=\"chkbox\">\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-refresh\"\r\n class=\"p-button-rounded p-button-text btnReload\" pTooltip=\"L\u00E0m m\u1EDBi d\u1EEF li\u1EC7u\"\r\n tooltipPosition=\"top\" [disabled]=\"model.loading\" (click)=\"getData()\"></button>\r\n </th>\r\n <th *ngFor=\"let col of columns\" [ttSortableColumn]=\"col.field\" [style.width]=\"col.width\"\r\n [style.textAlign]=\"col.textAlign\" [className]=\"col.class\" [pTooltip]=\"col.fullLabel\"\r\n tooltipStyleClass=\"unset-width\" style=\"text-align: center;\">\r\n {{col.label}}\r\n <p-treeTableSortIcon [field]=\"col.field\"></p-treeTableSortIcon>\r\n </th>\r\n <th style=\"text-align: center; width: 8em\">\r\n Ch\u1EE9c n\u0103ng\r\n </th>\r\n </tr>\r\n </ng-template>\r\n <ng-template let-rowNode let-rowData=\"rowData\" let-index=\"index\" let-columns=\"columns\" pTemplate=\"body\">\r\n <tr [ttRow]=\"rowNode\">\r\n <td class=\"chkbox\"></td>\r\n <ng-container *ngFor=\"let col of columns; let i = index\">\r\n <ng-container\r\n *ngTemplateOutlet=\"contentTd; context: {$implicit: rowData, rowNode: rowNode, col: col, index: index, i: i}\">\r\n </ng-container>\r\n </ng-container>\r\n <td style=\"text-align: center; width: 8em;\">\r\n <div *ngIf=\"hasTemplate('function')\" class=\"p-toolbar-group-center button-group\">\r\n <ng-container [ngTemplateOutlet]=\"getTemplate('function')\"\r\n [ngTemplateOutletContext]=\"{rowData: rowData, rowIndex: index}\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </div>\r\n <div *ngIf=\"!hasTemplate('function')\" class=\"p-toolbar-group-center button-group\">\r\n <ng-container [ngTemplateOutletContext]=\"{rowData: rowData, rowIndex: index}\"\r\n [ngTemplateOutlet]=\"getTemplate('buttonBefore')\"></ng-container>\r\n <button *ngIf=\"!rowData.hiddenEdit\" type=\"button\" pButton pRipple\r\n pTooltip=\"{{'FORM.EDIT' | translate}}\" tooltipPosition=\"top\"\r\n [disabled]=\"disableEdit(rowData)\"\r\n class=\"p-button-rounded p-button-text p-button-info link-or-action\"\r\n icon=\"pi pi-pencil\" (click)=\"handleEdit(rowData)\"></button>\r\n <button *ngIf=\"!rowData.hiddenDelete\" type=\"button\" pButton pRipple\r\n [disabled]=\"disableDelete(rowData)\" pTooltip=\"{{'FORM.DELETE' | translate}}\"\r\n tooltipPosition=\"top\"\r\n class=\"p-button-rounded p-button-text p-button-danger link-or-action\"\r\n icon=\"pi pi-trash\" (click)=\"handleDelete(rowData)\"></button>\r\n <!-- <button *ngIf=\"this.menuButtons\" type=\"button\" pButton icon=\"pi pi-ellipsis-v\"\r\n class=\"link-or-action p-button-text p-button-info p-button-rounded\"\r\n pTooltip=\"Ch\u1EE9c n\u0103ng kh\u00E1c\" tooltipPosition=\"top\"\r\n (click)=\"showContextMenu($event, rowData)\"></button> -->\r\n </div>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n <div class=\"row-bottom-sticky\"></div>\r\n </tn-custom-scrollbar>\r\n </div>\r\n</div>\r\n\r\n<ng-template #contentTd let-rowData let-rowNode=\"rowNode\" let-col=\"col\" let-index=\"index\" let-i=\"i\">\r\n <td *ngIf=\"col && col.visible && col.field != 'function' && (!rowData.hidden || !rowData.hidden[col.field])\"\r\n [attr.colSpan]=\"rowData.colSpan && rowData.colSpan[col.field]\"\r\n [attr.rowSpan]=\"rowData.rowSpan && rowData.rowSpan[col.field]\" [ngStyle]=\"col.extendData.style\"\r\n [class]=\"col.cellClass\" [class.first-td]=\"i == 0\">\r\n <tn-treeTableToggler *ngIf=\"i == 0\" [rowNode]=\"rowNode\"></tn-treeTableToggler>\r\n <span *ngIf=\"col.pipe\">\r\n <!-- <span class=\"p-column-title\" [pTooltip]=\"col.fullLabel\" [escape]=\"false\"\r\n tooltipPosition=\"top\">{{col.label}}</span> -->\r\n {{rowData['pipe__' + col.field]}}\r\n </span>\r\n <span *ngIf=\"!col.pipe\">\r\n <!-- <span class=\"p-column-title\" [pTooltip]=\"col.fullLabel\" [escape]=\"false\"\r\n tooltipPosition=\"top\">{{col.label}}</span> -->\r\n <span *ngIf=\"setting.showEditLink && col.showEditLink\" [pTooltip]=\"config.tooltipView\" tooltipPosition=\"top\"\r\n class=\"link-or-action\">\r\n <a href=\"javascript:;\" (click)=\"handleView(rowData)\" [pTooltip]=\"config.tooltipView\"\r\n tooltipPosition=\"top\">\r\n <ng-container [ngTemplateOutlet]=\"contentCell\"\r\n [ngTemplateOutletContext]=\"getContextCell(rowData, index, col, this)\">\r\n </ng-container>\r\n </a>\r\n </span>\r\n <span *ngIf=\"!setting.showEditLink || !col.showEditLink\">\r\n <ng-container [ngTemplateOutlet]=\"contentCell\"\r\n [ngTemplateOutletContext]=\"getContextCell(rowData, index, col, this)\">\r\n </ng-container>\r\n </span>\r\n </span>\r\n <ng-container *ngTemplateOutlet=\"containerSticky\"></ng-container>\r\n </td>\r\n</ng-template>\r\n<ng-template #contentCell let-col=\"col\" let-rowData=\"rowData\" let-rowIndex=\"rowIndex\" let-field=\"field\"\r\n let-expanded=\"expanded\">\r\n <ng-container *ngIf=\"col.template\">\r\n <ng-container [ngTemplateOutlet]=\"col.template\"\r\n [ngTemplateOutletContext]=\"getContextCell(rowData, rowIndex, col, this)\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!col.template\">\r\n <ng-container [ngSwitch]=\"col.dataType\">\r\n <span *ngSwitchCase=\"'color'\" style=\"display:block;text-align:center;\">\r\n <div pTooltip=\"{{rowData[field]}}\" tooltipPosition=\"top\" [ngStyle]=\"{'background-color':rowData[field]}\"\r\n style=\"width:30px;height:30px;margin:0 auto;\"></div>\r\n </span>\r\n <span *ngSwitchCase=\"'icon'\" style=\"display:block;text-align:center;\">\r\n <i pTooltip=\"{{rowData[field]}}\" tooltipPosition=\"top\" style=\"text-align: center;\"\r\n [ngClass]=\"rowData[field]\"></i>\r\n </span>\r\n <span *ngSwitchCase=\"'date'\" pTooltip=\"{{rowData[field] | date:'dd/MM/yyyy'}}\" tooltipPosition=\"top\">\r\n {{_crudService.renderDate(rowData[field], col.format)}}\r\n </span>\r\n <span *ngSwitchCase=\"'datetime'\" pTooltip=\"{{rowData[field] | date:'dd/MM/yyyy HH:mm'}}\"\r\n tooltipPosition=\"top\">\r\n {{_crudService.renderDateTime(rowData[field], col.format)}}\r\n </span>\r\n <span *ngSwitchCase=\"'user'\" class=\"user\">\r\n {{rowData[field] | userFormat | async}}\r\n </span>\r\n <div *ngSwitchCase=\"'users'\" [innerHTML]=\"rowData[field] | usersFormat | async\">\r\n </div>\r\n <span *ngSwitchCase=\"'int'\">\r\n {{rowData[field]}}\r\n </span>\r\n <span *ngSwitchCase=\"'decimal'\">\r\n {{rowData[field]}}\r\n </span>\r\n <span *ngSwitchCase=\"'boolean'\">\r\n <p-checkbox class=\"boolean-data-type\" [(ngModel)]=\"rowData[field]\" binary=\"true\"\r\n [disabled]=\"col.disableCheckBox\">\r\n </p-checkbox>\r\n </span>\r\n <span *ngSwitchCase=\"'html'\">\r\n <div *ngIf=\"rowData[field]==null?'':rowData[field]\" [innerHTML]=\"rowData[field] | safeHtml\"></div>\r\n </span>\r\n <span *ngSwitchCase=\"'metadataStatus'\">\r\n <span *ngIf=\"rowData['rejectReason']\" class=\"label-danger\" [pTooltip]=\"rowData['rejectReason']\"\r\n tooltipStyleClass=\"unset-width\" [escape]=\"false\" tooltipPosition=\"top\">T\u1EEB ch\u1ED1i</span>\r\n <span *ngIf=\"rowData[field] == '0' && !rowData['rejectReason']\" class=\"label-secondary\">Ch\u01B0a\r\n duy\u1EC7t</span>\r\n <span *ngIf=\"rowData[field] == '1' && !rowData['rejectReason']\" class=\"label-warning\">Ch\u1EDD duy\u1EC7t</span>\r\n <span *ngIf=\"rowData[field] == '2'\" class=\"label-primary\">\u0110\u00E3 duy\u1EC7t</span>\r\n </span>\r\n <ng-container *ngSwitchCase=\"'string'\">\r\n <ng-container *ngTemplateOutlet=\"contentCellString; context: {$implicit: rowData, field: col.field}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"null\">\r\n <ng-container *ngTemplateOutlet=\"contentCellString; context: {$implicit: rowData, field: col.field}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ng-container [ngTemplateOutlet]=\"getComponentByType(col.dataType)\"\r\n [ngTemplateOutletContext]=\"getContextCell(rowData, rowIndex, col, this)\">\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n</ng-template>\r\n<ng-template #contentCellString let-rowData let-field=\"field\">\r\n <span>\r\n <!-- __sv: Short Value -->\r\n <ng-container *ngIf=\"rowData[field + '__sv']\">\r\n <ng-container *ngIf=\"!rowData[field + '__showFull']\">\r\n {{rowData[field + '__sv']}}\r\n <span class=\"toggle-showfull\" (click)=\"toggleShowFull(rowData, field)\" pTooltip=\"B\u1EA5m \u0111\u1EC3 xem th\u00EAm\"\r\n tooltipPosition=\"top\">[...]</span>\r\n </ng-container>\r\n <ng-container *ngIf=\"rowData[field + '__showFull']\">\r\n {{rowData[field]}}\r\n <span class=\"toggle-showfull\" (click)=\"toggleShowFull(rowData, field)\">Thu g\u1ECDn</span>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!rowData[field + '__sv']\">\r\n {{rowData[field]}}\r\n </ng-container>\r\n </span>\r\n</ng-template>\r\n<ng-template #containerSticky>\r\n <span class=\"fix-sticky top\"></span>\r\n <span class=\"fix-sticky right\"></span>\r\n <!-- <span class=\"fix-sticky bottom\"></span> -->\r\n <span class=\"fix-sticky left\"></span>\r\n</ng-template>",
32691
+ styles: [""]
32692
+ },] }
32693
+ ];
32694
+ TreeTableComponent.ctorParameters = function () { return [
32695
+ { type: i0.Injector },
32696
+ { type: CrudService }
32697
+ ]; };
32698
+ TreeTableComponent.propDecorators = {
32699
+ treeTable: [{ type: i0.ViewChild, args: ['treetable',] }],
32700
+ scrollbar: [{ type: i0.ViewChild, args: ['scrollbar', { static: true },] }],
32701
+ children: [{ type: i0.ContentChildren, args: [i0.TemplateRef,] }],
32702
+ templates: [{ type: i0.Input }],
32703
+ model: [{ type: i0.Input }],
32704
+ setting: [{ type: i0.Input }],
32705
+ config: [{ type: i0.Input }],
32706
+ dataSource: [{ type: i0.Input }],
32707
+ hiddenDelete: [{ type: i0.Input }],
32708
+ hiddenEdit: [{ type: i0.Input }],
32709
+ onReload: [{ type: i0.Output }],
32710
+ onAdd: [{ type: i0.Output }],
32711
+ onEdit: [{ type: i0.Output }],
32712
+ onView: [{ type: i0.Output }],
32713
+ onDelete: [{ type: i0.Output }]
32714
+ };
32715
+
32227
32716
  var TableDetailFormComponent = /** @class */ (function (_super) {
32228
32717
  __extends(TableDetailFormComponent, _super);
32229
32718
  function TableDetailFormComponent(injector) {
@@ -43666,6 +44155,9 @@
43666
44155
  NotificationService.prototype.sendNotification = function (data) {
43667
44156
  return this.defaultPost(this.serviceUri + "/InsertToManyUser/", data);
43668
44157
  };
44158
+ NotificationService.prototype.sendNotificationMultiple = function (lstNotification) {
44159
+ return this.defaultPost(this.serviceUri + "/InsertMultiple", lstNotification);
44160
+ };
43669
44161
  NotificationService.prototype.markReadById = function (id) {
43670
44162
  return this.defaultPost(this.serviceUri + "/MarkReadById/" + id, {});
43671
44163
  };
@@ -43673,7 +44165,7 @@
43673
44165
  return this.defaultPost(this.serviceUri + "/MarkUnread/" + id, {});
43674
44166
  };
43675
44167
  NotificationService.prototype.markReadAllByUserCurrent = function () {
43676
- return this.defaultPost(this.serviceUri + "/MarkReadAllByUserCurrent", {});
44168
+ return this.defaultPost(this.serviceUri + "/MarkReadAllByCurrentUser", {});
43677
44169
  };
43678
44170
  return NotificationService;
43679
44171
  }(BaseService));
@@ -44269,6 +44761,7 @@
44269
44761
  _this._crudService = _crudService;
44270
44762
  _this._notifierService = _notifierService;
44271
44763
  _this._customRouterService = _customRouterService;
44764
+ _this.openMenu = new i0.EventEmitter();
44272
44765
  _this.maxNotification = 10;
44273
44766
  _this.totalUnRead = 0;
44274
44767
  _this.bounceNoti = true;
@@ -44278,13 +44771,15 @@
44278
44771
  _this.url = '';
44279
44772
  _this.urldetail = '';
44280
44773
  _this.notifications = [];
44281
- _this.openMenu = new i0.EventEmitter();
44282
44774
  _this.rootContext.subscribe('NOTIFICATION_CHANGE', function (rs) {
44283
44775
  _this.refreshNotification();
44284
44776
  });
44285
44777
  _this._signalRService.start('NotificationHub', TopicReloadNotification, function (data) {
44286
44778
  _this.refreshNotification();
44287
44779
  });
44780
+ _this.rootContext.subscribe(ComCtxConstants.NOTIFICATION.NOTIFICATION_RELOAD, function (res) {
44781
+ _this.refreshNotification();
44782
+ });
44288
44783
  _this.environment = _this._moduleConfigService.getConfig().environment;
44289
44784
  return _this;
44290
44785
  }
@@ -44354,13 +44849,24 @@
44354
44849
  ],
44355
44850
  fields: ''
44356
44851
  });
44357
- this._notificationService.getByGridRequest(gridInfo)
44358
- .then(function (res) { return _this.handleResponse(res, '', function (f) {
44359
- _this.notifications = res.data;
44360
- _this.totalUnRead = res.totalRecord;
44361
- _this.bounceNoti = true;
44362
- _this.afterGetNotication();
44363
- }); });
44852
+ var readedFilters = [
44853
+ this.newFilter('userId', exports.Operator.equal, this.userId),
44854
+ this.newFilter('readedTime', exports.Operator.isNull, '1')
44855
+ ];
44856
+ Promise.all([
44857
+ this._notificationService.getByGridRequest(gridInfo).then(function (res) { return _this.handleResponse(res, '', function (f) {
44858
+ _this.notifications = res.data;
44859
+ _this.totalUnRead = 0;
44860
+ _this.bounceNoti = true;
44861
+ _this.afterGetNotication();
44862
+ }); }),
44863
+ this._notificationService.getAll(readedFilters, 'readedTime').then(function (res) {
44864
+ if (res.success && res.data && res.data.length)
44865
+ _this.totalUnRead = res.totalRecord;
44866
+ else
44867
+ _this.totalUnRead = 0;
44868
+ })
44869
+ ]);
44364
44870
  };
44365
44871
  TnAppNotificationComponent.prototype.afterGetNotication = function () {
44366
44872
  var _this = this;
@@ -44382,18 +44888,20 @@
44382
44888
  if (!rs)
44383
44889
  return;
44384
44890
  _this._notificationService.markReadAllByUserCurrent().then(function (rs) {
44385
- _this.notifications.forEach(function (element) {
44386
- element.readedTime = new Date();
44387
- });
44388
- _this.rootContext.fireEvent('NOTIFICATION_ALL_READ', true);
44891
+ // this.notifications.forEach(element => {
44892
+ // element.readedTime = new Date();
44893
+ // });
44894
+ _this.rootContext.fireEvent(ComCtxConstants.NOTIFICATION.NOTIFICATION_RELOAD, true);
44389
44895
  });
44390
44896
  _this.totalUnRead = 0;
44391
44897
  });
44392
44898
  };
44393
44899
  TnAppNotificationComponent.prototype.readById = function (data) {
44394
- this._notificationService.markReadById(data.id).then(function (rs) {
44395
- data.readedTime = new Date();
44396
- });
44900
+ var _this = this;
44901
+ data.readedTime = new Date();
44902
+ this._notificationService.markReadById(data.id).then(function (res) {
44903
+ _this.rootContext.fireEvent(ComCtxConstants.NOTIFICATION.NOTIFICATION_RELOAD);
44904
+ }).catch(function (err) { return _this._commonService.handleError(err, _this._injector); });
44397
44905
  };
44398
44906
  TnAppNotificationComponent.prototype.isHasAvatar = function (item) {
44399
44907
  if (item.avatarId) {
@@ -44442,14 +44950,7 @@
44442
44950
  this.bounceNoti = false;
44443
44951
  };
44444
44952
  TnAppNotificationComponent.prototype.handleClicked = function () {
44445
- return __awaiter(this, void 0, void 0, function () {
44446
- var domain;
44447
- return __generator(this, function (_a) {
44448
- domain = this.environment.clientDomain.thongbaoDomain;
44449
- window.open("" + domain);
44450
- return [2 /*return*/];
44451
- });
44452
- });
44953
+ this._router.navigate(["user/managemant-notification"]);
44453
44954
  };
44454
44955
  return TnAppNotificationComponent;
44455
44956
  }(ComponentBase));
@@ -52034,6 +52535,44 @@
52034
52535
  ]; };
52035
52536
  TnSortIcon.propDecorators = {
52036
52537
  field: [{ type: i0.Input }]
52538
+ };
52539
+ var TnTreeTableToggler = /** @class */ (function () {
52540
+ function TnTreeTableToggler(ttb) {
52541
+ this.ttb = ttb;
52542
+ this.tt = ttb.treeTable;
52543
+ }
52544
+ TnTreeTableToggler.prototype.onClick = function (event) {
52545
+ this.rowNode.node.expanded = !this.rowNode.node.expanded;
52546
+ if (this.rowNode.node.expanded) {
52547
+ this.tt.onNodeExpand.emit({
52548
+ originalEvent: event,
52549
+ node: this.rowNode.node
52550
+ });
52551
+ }
52552
+ else {
52553
+ this.tt.onNodeCollapse.emit({
52554
+ originalEvent: event,
52555
+ node: this.rowNode.node
52556
+ });
52557
+ }
52558
+ this.tt.updateSerializedValue();
52559
+ this.tt.tableService.onUIUpdate(this.tt.value);
52560
+ event.preventDefault();
52561
+ };
52562
+ return TnTreeTableToggler;
52563
+ }());
52564
+ TnTreeTableToggler.decorators = [
52565
+ { type: i0.Component, args: [{
52566
+ selector: 'tn-treeTableToggler',
52567
+ template: "\n <button type=\"button\" class=\"p-treetable-toggler p-link\" (click)=\"onClick($event)\" tabindex=\"-1\" pRipple\n [style.visibility]=\"rowNode.node.leaf === false || (rowNode.node.children && rowNode.node.children.length) ? 'visible' : 'hidden'\" [style.marginLeft]=\"rowNode.level * 16 + 'px'\">\n <i [ngClass]=\"rowNode.node.expanded ? 'pi pi-fw pi-chevron-down' : 'pi pi-fw pi-chevron-right'\"></i>\n </button>\n ",
52568
+ encapsulation: i0.ViewEncapsulation.None
52569
+ },] }
52570
+ ];
52571
+ TnTreeTableToggler.ctorParameters = function () { return [
52572
+ { type: TreeTableComponent }
52573
+ ]; };
52574
+ TnTreeTableToggler.propDecorators = {
52575
+ rowNode: [{ type: i0.Input }]
52037
52576
  };
52038
52577
 
52039
52578
  var TnTemplateDirective = /** @class */ (function () {
@@ -53819,6 +54358,7 @@
53819
54358
  CoCauToChucPickerListComponent,
53820
54359
  CrudFormComponent,
53821
54360
  CrudListComponent,
54361
+ TreeTableComponent,
53822
54362
  BaseCongViecTestComponent,
53823
54363
  BaseCongViecComponent,
53824
54364
  BaseCongViecFormComponent,
@@ -53908,6 +54448,7 @@
53908
54448
  TnSortableColumnDirective,
53909
54449
  TnTemplateDirective,
53910
54450
  TnSortIcon,
54451
+ TnTreeTableToggler,
53911
54452
  UserPickerComponent,
53912
54453
  UserPickerBoxComponent,
53913
54454
  AutocompleteDatasourceComponent,
@@ -54079,6 +54620,941 @@
54079
54620
  return MultiTranslateHttpLoader;
54080
54621
  }());
54081
54622
 
54623
+ var TreeListBase = /** @class */ (function (_super) {
54624
+ __extends(TreeListBase, _super);
54625
+ function TreeListBase(_injector) {
54626
+ var _this = _super.call(this, _injector) || this;
54627
+ _this.notConfigBaseServiceMessage = 'Chưa cấu hình CRUD base service';
54628
+ _this.environment = {};
54629
+ _this.setting = new CrudListSetting();
54630
+ _this.model = new CrudListData();
54631
+ _this.formModel = new CrudFormData();
54632
+ _this.scopeDataEdit = {};
54633
+ _this.showDetailForm = false;
54634
+ _this.countReady = 0;
54635
+ _this.hasCrudList = true;
54636
+ _this.customGetData = false;
54637
+ _this.readyToTrinhKy = false;
54638
+ _this.plusUrl = '';
54639
+ _this.fieldParent = 'idParent';
54640
+ _this.isCrudList = false;
54641
+ _this.levelOpen = 1;
54642
+ _this._notifierService = _this._injector.get(NotifierService);
54643
+ _this._activatedRoute = _this._injector.get(i3.ActivatedRoute);
54644
+ _this._router = _this._injector.get(i3.Router);
54645
+ _this._customRouterService = _this._injector.get(CustomRouterService);
54646
+ _this._listHelperService = _this._injector.get(ListHelperService);
54647
+ _this._commonService = _this._injector.get(CommonService);
54648
+ _this._translateService = _this._injector.get(i2.TranslateService);
54649
+ _this._exportService = _this._injector.get(ExportService);
54650
+ _this._crudService = _this._injector.get(CrudService);
54651
+ _this._datePipe = _this._injector.get(i2$1.DatePipe);
54652
+ _this._cd = _this._injector.get(i0.ChangeDetectorRef);
54653
+ _this._userService = _this._injector.get(UserService);
54654
+ _this._masterDataService = _this._injector.get(MasterDataService);
54655
+ _this._entityWorkflowSettingService = _this._injector.get(EntityWorkflowSettingService);
54656
+ _this._entityWorkflowHistoryService = _this._injector.get(EntityWorkflowHistoryService);
54657
+ _this._entityPermissionService = _this._injector.get(EntityPermissionService);
54658
+ _this._workflowSettingService = _this._injector.get(WorkflowSettingsService);
54659
+ _this._workflowPermissionDetailService = _this._injector.get(WorkflowPermissionDetailService);
54660
+ _this._stateMachinesService = _this._injector.get(StateMachinesService);
54661
+ _this._congViecServiceInBase = _this._injector.get(CongViecService);
54662
+ return _this;
54663
+ }
54664
+ Object.defineProperty(TreeListBase.prototype, "content", {
54665
+ set: function (content) {
54666
+ var beforeValue = this.crudList;
54667
+ if (content) {
54668
+ this.crudList = content;
54669
+ if (!beforeValue) {
54670
+ this.countReady++;
54671
+ if (this.countReady < 2) {
54672
+ return;
54673
+ }
54674
+ this.processData();
54675
+ }
54676
+ }
54677
+ },
54678
+ enumerable: false,
54679
+ configurable: true
54680
+ });
54681
+ TreeListBase.prototype.ngOnInit = function () {
54682
+ this.model.baseReady = false;
54683
+ if (this.setting.cols) {
54684
+ this.setting.cols = this.setting.cols.filter(function (q) { return !q.removeOnInit; });
54685
+ }
54686
+ this.mergeInfoToColumnSchema();
54687
+ this.generateFieldSearchText();
54688
+ if (!this.setting.baseService) {
54689
+ this._notifierService.showWarning(this.notConfigBaseServiceMessage);
54690
+ }
54691
+ else {
54692
+ if (!this.setting.hiddenSettingWorkflow
54693
+ || !this.setting.hiddenSettingWorkflowNew) {
54694
+ this.setting.baseService.useWorkflow = true;
54695
+ }
54696
+ this.registerGlobalService(this.setting.baseService);
54697
+ }
54698
+ var moduleConfigService = this._injector.get(ModuleConfigService);
54699
+ this.environment = moduleConfigService.getConfig().environment;
54700
+ if (this.environment.clientDomain
54701
+ && this.setting.baseService
54702
+ && this.environment.clientDomain[this.setting.baseService.serviceCode]
54703
+ && !this.setting.targetPath) {
54704
+ this.setting.targetPath = this.environment.clientDomain[this.setting.baseService.serviceCode] + "/" + this.setting.baseService.entityName.toLowerCase() + "/detail";
54705
+ }
54706
+ this.getMenuButtons = this.getMenuButtons.bind(this);
54707
+ };
54708
+ TreeListBase.prototype.registerGlobalService = function (service) {
54709
+ var key = service.getKeyWorkflowSetting();
54710
+ this._entityWorkflowSettingService.registerService(key, service);
54711
+ this._entityWorkflowHistoryService.registerService(key, service);
54712
+ this._entityPermissionService.registerService(key, service);
54713
+ this._workflowSettingService.registerService(key, service);
54714
+ };
54715
+ TreeListBase.prototype.loadItemFromQueryParam = function () {
54716
+ var _this = this;
54717
+ if (this.loadDetailFromQueryParam === undefined || this.loadDetailFromQueryParam === true) {
54718
+ var idInQueryString = null;
54719
+ var pid = null; // permission Id được người khác share
54720
+ if (this._activatedRoute.snapshot
54721
+ && this._activatedRoute.snapshot.queryParams) {
54722
+ idInQueryString = this._activatedRoute.snapshot.queryParams.id || this._activatedRoute.snapshot.queryParams.entityKey;
54723
+ pid = this._activatedRoute.snapshot.queryParams.pid;
54724
+ }
54725
+ if (pid) {
54726
+ this.loadDetailPid(pid);
54727
+ }
54728
+ else if (idInQueryString) {
54729
+ // get detail data
54730
+ this.setting.baseService.getDetailWithPermission(idInQueryString)
54731
+ .then(function (res) {
54732
+ if (!res.data) {
54733
+ _this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
54734
+ }
54735
+ if ((res.data.basePermission & exports.PermissionBase.EDIT) == exports.PermissionBase.EDIT
54736
+ || (res.data.basePermission & exports.PermissionBase.READ) == exports.PermissionBase.READ) {
54737
+ _this._edit(res.data);
54738
+ }
54739
+ else {
54740
+ _this._notifierService.showWarning('Bạn không có quyền xem bản ghi');
54741
+ }
54742
+ }).catch(function (err) {
54743
+ console.error('error on get detail from querystring', err);
54744
+ _this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
54745
+ });
54746
+ }
54747
+ }
54748
+ };
54749
+ TreeListBase.prototype.loadDetailPid = function (pid) {
54750
+ var _this = this;
54751
+ this.setting.baseService.getDetailByPid(pid)
54752
+ .then(function (res) { return _this.handleResponse(res, '', function (f) {
54753
+ if (!res.data) {
54754
+ _this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
54755
+ }
54756
+ if ((res.data.basePermission & exports.PermissionBase.EDIT) == exports.PermissionBase.EDIT
54757
+ || (res.data.basePermission & exports.PermissionBase.READ) == exports.PermissionBase.READ) {
54758
+ res.data.pid = pid;
54759
+ res.data.basePermissionByPid = res.data.basePermission;
54760
+ _this._edit(res.data);
54761
+ }
54762
+ else {
54763
+ _this._notifierService.showWarning('Bạn không có quyền xem bản ghi');
54764
+ }
54765
+ }); }).catch(function (err) {
54766
+ console.error('error on get detail from querystring', err);
54767
+ _this._notifierService.showWarning('Không tìm thấy bản ghi cần xem chi tiết');
54768
+ });
54769
+ };
54770
+ TreeListBase.prototype.ngAfterViewInit = function () {
54771
+ this.handleAfterViewInit();
54772
+ };
54773
+ TreeListBase.prototype.ngOnDestroy = function () {
54774
+ _super.prototype.ngOnDestroy.call(this);
54775
+ clearTimeout(this.loadingTimeout);
54776
+ };
54777
+ TreeListBase.prototype.handleAfterViewInit = function () {
54778
+ return __awaiter(this, void 0, void 0, function () {
54779
+ return __generator(this, function (_a) {
54780
+ this.countReady++;
54781
+ if (this.countReady > 1) {
54782
+ this.model.baseReady = true;
54783
+ this._triggerProcessData();
54784
+ }
54785
+ this.loadItemFromQueryParam();
54786
+ return [2 /*return*/];
54787
+ });
54788
+ });
54789
+ };
54790
+ TreeListBase.prototype.getMenuButtons = function (rowData) {
54791
+ this.rowDataCurrent = rowData;
54792
+ return [];
54793
+ };
54794
+ TreeListBase.prototype._add = function (evt) {
54795
+ return __awaiter(this, void 0, void 0, function () {
54796
+ var resultValidate;
54797
+ return __generator(this, function (_a) {
54798
+ switch (_a.label) {
54799
+ case 0: return [4 /*yield*/, this.validateAdd()];
54800
+ case 1:
54801
+ resultValidate = _a.sent();
54802
+ if (!resultValidate) {
54803
+ return [2 /*return*/];
54804
+ }
54805
+ this.formModel.data = {};
54806
+ this.formModel.formState = exports.FormState.ADD;
54807
+ return [4 /*yield*/, this.beforeAdd()];
54808
+ case 2:
54809
+ _a.sent();
54810
+ this.setting.popupHeader = "Th\u00EAm m\u1EDBi " + this.setting.objectName;
54811
+ this.setting.maskClass = null;
54812
+ this.showDetailForm = true;
54813
+ return [2 /*return*/];
54814
+ }
54815
+ });
54816
+ });
54817
+ };
54818
+ TreeListBase.prototype.validateAdd = function () {
54819
+ return __awaiter(this, void 0, void 0, function () {
54820
+ return __generator(this, function (_a) {
54821
+ return [2 /*return*/, true];
54822
+ });
54823
+ });
54824
+ };
54825
+ TreeListBase.prototype.beforeAdd = function () {
54826
+ return __awaiter(this, void 0, void 0, function () {
54827
+ return __generator(this, function (_a) {
54828
+ return [2 /*return*/];
54829
+ });
54830
+ });
54831
+ };
54832
+ TreeListBase.prototype._view = function (rowData) {
54833
+ return __awaiter(this, void 0, void 0, function () {
54834
+ return __generator(this, function (_a) {
54835
+ switch (_a.label) {
54836
+ case 0:
54837
+ if (!(rowData.basePermission & exports.PermissionBase.EDIT)) return [3 /*break*/, 1];
54838
+ this._edit(rowData);
54839
+ return [3 /*break*/, 4];
54840
+ case 1:
54841
+ this.formModel.formState = exports.FormState.VIEW;
54842
+ return [4 /*yield*/, this.beforeView()];
54843
+ case 2:
54844
+ _a.sent();
54845
+ this.setting.popupHeader = "Chi ti\u1EBFt " + this.setting.objectName;
54846
+ this.setting.maskClass = null;
54847
+ this.formModel.data = this.cloneData(rowData);
54848
+ return [4 /*yield*/, this.modifyViewModel(rowData)];
54849
+ case 3:
54850
+ _a.sent();
54851
+ this.showDetailForm = true;
54852
+ _a.label = 4;
54853
+ case 4: return [2 /*return*/];
54854
+ }
54855
+ });
54856
+ });
54857
+ };
54858
+ TreeListBase.prototype.beforeView = function () {
54859
+ return __awaiter(this, void 0, void 0, function () {
54860
+ return __generator(this, function (_a) {
54861
+ return [2 /*return*/];
54862
+ });
54863
+ });
54864
+ };
54865
+ TreeListBase.prototype.modifyViewModel = function (rowData) {
54866
+ return __awaiter(this, void 0, void 0, function () {
54867
+ return __generator(this, function (_a) {
54868
+ return [2 /*return*/];
54869
+ });
54870
+ });
54871
+ };
54872
+ TreeListBase.prototype._copyLinkMultiple = function () {
54873
+ return __awaiter(this, void 0, void 0, function () {
54874
+ var paths, _a, _b, item, _c, _d, e_1_1;
54875
+ var e_1, _e;
54876
+ return __generator(this, function (_f) {
54877
+ switch (_f.label) {
54878
+ case 0:
54879
+ paths = [];
54880
+ _f.label = 1;
54881
+ case 1:
54882
+ _f.trys.push([1, 6, 7, 8]);
54883
+ _a = __values(this.model.selectedItems), _b = _a.next();
54884
+ _f.label = 2;
54885
+ case 2:
54886
+ if (!!_b.done) return [3 /*break*/, 5];
54887
+ item = _b.value;
54888
+ _d = (_c = paths).push;
54889
+ return [4 /*yield*/, this.getCopyPath(this.setting, item)];
54890
+ case 3:
54891
+ _d.apply(_c, [_f.sent()]);
54892
+ _f.label = 4;
54893
+ case 4:
54894
+ _b = _a.next();
54895
+ return [3 /*break*/, 2];
54896
+ case 5: return [3 /*break*/, 8];
54897
+ case 6:
54898
+ e_1_1 = _f.sent();
54899
+ e_1 = { error: e_1_1 };
54900
+ return [3 /*break*/, 8];
54901
+ case 7:
54902
+ try {
54903
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
54904
+ }
54905
+ finally { if (e_1) throw e_1.error; }
54906
+ return [7 /*endfinally*/];
54907
+ case 8:
54908
+ this._commonService.copyByStorage(paths.join('\r\n'));
54909
+ this._notifierService.showSuccess('Đã sao chép các liên kết đã chọn');
54910
+ return [2 /*return*/];
54911
+ }
54912
+ });
54913
+ });
54914
+ };
54915
+ TreeListBase.prototype._copyLink = function (rowData) {
54916
+ return __awaiter(this, void 0, void 0, function () {
54917
+ var path;
54918
+ return __generator(this, function (_a) {
54919
+ switch (_a.label) {
54920
+ case 0: return [4 /*yield*/, this.getCopyPath(this.setting, rowData)];
54921
+ case 1:
54922
+ path = _a.sent();
54923
+ this._commonService.copyByStorage(path);
54924
+ this._notifierService.showSuccess('Đã sao chép liên kết');
54925
+ return [2 /*return*/];
54926
+ }
54927
+ });
54928
+ });
54929
+ };
54930
+ TreeListBase.prototype._edit = function (rowData, scopeDataEdit) {
54931
+ if (scopeDataEdit === void 0) { scopeDataEdit = {}; }
54932
+ return __awaiter(this, void 0, void 0, function () {
54933
+ var flashShow;
54934
+ return __generator(this, function (_a) {
54935
+ switch (_a.label) {
54936
+ case 0:
54937
+ flashShow = rowData[KeyFlashShow];
54938
+ delete rowData[KeyFlashShow];
54939
+ return [4 /*yield*/, this.beforeEdit()];
54940
+ case 1:
54941
+ _a.sent();
54942
+ this.formModel.formState = exports.FormState.EDIT;
54943
+ this.setting.popupHeader = "Chi ti\u1EBFt " + this.setting.objectName;
54944
+ this.setting.maskClass = flashShow ? 'hide' : null;
54945
+ this.scopeDataEdit = scopeDataEdit;
54946
+ this.formModel.data = this.cloneData(rowData);
54947
+ return [4 /*yield*/, this.modifyEditModel(rowData)];
54948
+ case 2:
54949
+ _a.sent();
54950
+ this.formModel.data[KeyFlashShow] = flashShow;
54951
+ this.showDetailForm = true;
54952
+ return [2 /*return*/];
54953
+ }
54954
+ });
54955
+ });
54956
+ };
54957
+ TreeListBase.prototype.beforeEdit = function () {
54958
+ return __awaiter(this, void 0, void 0, function () {
54959
+ return __generator(this, function (_a) {
54960
+ return [2 /*return*/];
54961
+ });
54962
+ });
54963
+ };
54964
+ TreeListBase.prototype.modifyEditModel = function (rowData) {
54965
+ return __awaiter(this, void 0, void 0, function () {
54966
+ return __generator(this, function (_a) {
54967
+ return [2 /*return*/];
54968
+ });
54969
+ });
54970
+ };
54971
+ TreeListBase.prototype.cloneData = function (rowData) {
54972
+ return {
54973
+ pid: rowData.pid,
54974
+ basePermissionByPid: rowData.basePermissionByPid,
54975
+ id: rowData[this.setting.entityKey],
54976
+ basePermission: rowData.basePermission
54977
+ };
54978
+ };
54979
+ TreeListBase.prototype.getPromiseDeleteItem = function (rowData) {
54980
+ return this.setting.baseService.delete(rowData.id);
54981
+ };
54982
+ TreeListBase.prototype._delete = function (rowData) {
54983
+ var _this = this;
54984
+ if (rowData.__disableDelete) {
54985
+ return;
54986
+ }
54987
+ this._notifierService.showDeleteConfirm().then(function (rs) {
54988
+ if (!rs) {
54989
+ return;
54990
+ }
54991
+ if (_this.setting.baseService) {
54992
+ _this.getPromiseDeleteItem(rowData)
54993
+ .then(function (response) {
54994
+ if (response.success) {
54995
+ if (_this.setting.showVersionButton) {
54996
+ _this.context.fireEvent(ComCtxConstants.COMMON.RELOAD_DATA_VERSION, {}, true);
54997
+ }
54998
+ else {
54999
+ _this._triggerProcessData();
55000
+ }
55001
+ _this._notifierService.showDeleteDataSuccess();
55002
+ }
55003
+ else {
55004
+ _this._notifierService.showWarningByResponse(response);
55005
+ }
55006
+ }, function (error) {
55007
+ _this._notifierService.showDeleteDataError();
55008
+ });
55009
+ }
55010
+ });
55011
+ };
55012
+ TreeListBase.prototype.getPromiseDeleteItems = function (items) {
55013
+ var ids = items.map(function (x) { return x.id; }).join(',');
55014
+ return this.setting.baseService.deleteMany(ids);
55015
+ };
55016
+ TreeListBase.prototype._deleteMultiple = function (items) {
55017
+ var _this = this;
55018
+ this._notifierService.showDeleteConfirm().then(function (rs) {
55019
+ if (!rs) {
55020
+ return;
55021
+ }
55022
+ if (_this.setting.baseService) {
55023
+ _this.getPromiseDeleteItems(items).then(function (response) {
55024
+ if (response.success) {
55025
+ _this._triggerProcessData();
55026
+ _this._notifierService.showDeleteDataSuccess();
55027
+ }
55028
+ else {
55029
+ _this._notifierService.showWarningByResponse(response);
55030
+ }
55031
+ });
55032
+ }
55033
+ });
55034
+ };
55035
+ TreeListBase.prototype.onBeforeCancel = function () {
55036
+ };
55037
+ TreeListBase.prototype._handleSaved = function () {
55038
+ this.showDetailForm = false;
55039
+ this._triggerProcessData();
55040
+ };
55041
+ TreeListBase.prototype._handleCancel = function ($event) {
55042
+ this.onBeforeCancel();
55043
+ this.showDetailForm = false;
55044
+ };
55045
+ TreeListBase.prototype.getEntityMetadata = function () {
55046
+ return __awaiter(this, void 0, void 0, function () {
55047
+ return __generator(this, function (_a) {
55048
+ try {
55049
+ // if (this._entityMetadataService) {
55050
+ // this.setting.entityMetadataSetting.data = this._entityMetadataService.getWf1Setting();
55051
+ // return;
55052
+ // } else {
55053
+ // this.setting.entityMetadataService = this._injector.get(EntityMetadataService);
55054
+ // this._entityMetadataService = this.setting.entityMetadataService;
55055
+ // await this._entityMetadataService.load(this._baseService, this.context, true); // force load để đọc từ csdl
55056
+ // this.setting.entityMetadataSetting.data = this._entityMetadataService.getWf1Setting();
55057
+ // }
55058
+ }
55059
+ catch (e) {
55060
+ console.error('Please include EntityMetadataService in provider of component');
55061
+ }
55062
+ return [2 /*return*/, null];
55063
+ });
55064
+ });
55065
+ };
55066
+ TreeListBase.prototype.reload = function () {
55067
+ return __awaiter(this, void 0, void 0, function () {
55068
+ return __generator(this, function (_a) {
55069
+ this.crudList.reload();
55070
+ return [2 /*return*/];
55071
+ });
55072
+ });
55073
+ };
55074
+ TreeListBase.prototype._triggerProcessData = function (gridInfo) {
55075
+ return __awaiter(this, void 0, void 0, function () {
55076
+ return __generator(this, function (_a) {
55077
+ switch (_a.label) {
55078
+ case 0: return [4 /*yield*/, this.processData(gridInfo)];
55079
+ case 1:
55080
+ _a.sent();
55081
+ return [2 /*return*/];
55082
+ }
55083
+ });
55084
+ });
55085
+ };
55086
+ TreeListBase.prototype.processData = function (gridInfo) {
55087
+ return __awaiter(this, void 0, void 0, function () {
55088
+ return __generator(this, function (_a) {
55089
+ this.readyToTrinhKy = false;
55090
+ if (this.hasCrudList) {
55091
+ if (!this.crudList) {
55092
+ return [2 /*return*/];
55093
+ }
55094
+ if (!gridInfo) {
55095
+ gridInfo = this.crudList.getGridInfo();
55096
+ }
55097
+ }
55098
+ else {
55099
+ if (!gridInfo) {
55100
+ gridInfo = new GridInfo({
55101
+ pageInfo: {
55102
+ page: 1,
55103
+ pageSize: 999
55104
+ },
55105
+ filters: [],
55106
+ sorts: []
55107
+ });
55108
+ }
55109
+ }
55110
+ this.getData(gridInfo);
55111
+ return [2 /*return*/];
55112
+ });
55113
+ });
55114
+ };
55115
+ TreeListBase.prototype.modifyGridInfo = function (gridInfo) {
55116
+ return __awaiter(this, void 0, void 0, function () {
55117
+ return __generator(this, function (_a) {
55118
+ return [2 /*return*/, true];
55119
+ });
55120
+ });
55121
+ };
55122
+ TreeListBase.prototype.getData = function (gridInfo) {
55123
+ return __awaiter(this, void 0, void 0, function () {
55124
+ var resultModify;
55125
+ var _this = this;
55126
+ return __generator(this, function (_a) {
55127
+ switch (_a.label) {
55128
+ case 0:
55129
+ if (!(this.setting.baseService && this.model.ready)) return [3 /*break*/, 2];
55130
+ this._markLoading();
55131
+ gridInfo.modifyFilter(WorkflowFieldStateCode, function (filter) {
55132
+ if (filter.value) {
55133
+ var hasNullValue_1 = false;
55134
+ var restValues_1 = [];
55135
+ JSON.parse(filter.value).forEach(function (value) {
55136
+ if (value === null) {
55137
+ hasNullValue_1 = true;
55138
+ }
55139
+ else {
55140
+ restValues_1.push(value);
55141
+ }
55142
+ });
55143
+ if (hasNullValue_1) {
55144
+ if (restValues_1.length == 0) {
55145
+ filter.operator = exports.Operator.isNull;
55146
+ return;
55147
+ }
55148
+ filter.logic = 'or';
55149
+ filter.field = null;
55150
+ filter.value = null;
55151
+ filter.operator = null;
55152
+ filter.filters = [
55153
+ _this.newFilter(WorkflowFieldStateCode, exports.Operator.isNull, ''),
55154
+ _this.newFilter(WorkflowFieldStateCode, exports.Operator.in, restValues_1)
55155
+ ];
55156
+ }
55157
+ }
55158
+ });
55159
+ return [4 /*yield*/, this.modifyGridInfo(gridInfo)];
55160
+ case 1:
55161
+ resultModify = _a.sent();
55162
+ if (resultModify === false) {
55163
+ this.model.dataSource = [];
55164
+ this.model.total = 0;
55165
+ this.model.expandedRowKeys = {};
55166
+ this._unmarkLoading();
55167
+ return [2 /*return*/];
55168
+ }
55169
+ this.doGetRequest(gridInfo);
55170
+ _a.label = 2;
55171
+ case 2: return [2 /*return*/];
55172
+ }
55173
+ });
55174
+ });
55175
+ };
55176
+ TreeListBase.prototype._markLoading = function () {
55177
+ var _this = this;
55178
+ this.model.loading = true;
55179
+ if (this.crudList) {
55180
+ this.crudList.adjustPositionLoadingMask();
55181
+ }
55182
+ clearTimeout(this.loadingTimeout);
55183
+ this.loadingTimeout = setTimeout(function () {
55184
+ _this._notifierService.showWarning('Máy chủ phản hồi quá lâu, vui lòng kiểm tra lại đường truyền mạng!');
55185
+ _this.model.loading = false;
55186
+ }, 20000);
55187
+ };
55188
+ TreeListBase.prototype._handleReloaded = function (evt) {
55189
+ if (evt === void 0) { evt = null; }
55190
+ this._unmarkLoading();
55191
+ this.afterReloaded();
55192
+ };
55193
+ TreeListBase.prototype.afterReloaded = function () {
55194
+ return __awaiter(this, void 0, void 0, function () { return __generator(this, function (_a) {
55195
+ return [2 /*return*/];
55196
+ }); });
55197
+ };
55198
+ TreeListBase.prototype._unmarkLoading = function () {
55199
+ clearTimeout(this.loadingTimeout);
55200
+ this.model.loading = false;
55201
+ };
55202
+ TreeListBase.prototype.fireDataLoaded = function (success) {
55203
+ if (success === void 0) { success = true; }
55204
+ if (success && this.crudList) {
55205
+ this.crudList.processBaseData();
55206
+ }
55207
+ this._unmarkLoading();
55208
+ };
55209
+ TreeListBase.prototype.getPromiseGetData = function (gridInfo) {
55210
+ return this.setting.baseService.baseGetTreeData(gridInfo, this.plusUrl);
55211
+ };
55212
+ TreeListBase.prototype.getDataCustom = function (gridInfo) {
55213
+ };
55214
+ TreeListBase.prototype.doGetRequest = function (gridInfo) {
55215
+ var _this = this;
55216
+ if (!this.customGetData) {
55217
+ if (this.setting.baseService) {
55218
+ this.getPromiseGetData(gridInfo)
55219
+ .then(function (response) { return __awaiter(_this, void 0, void 0, function () {
55220
+ return __generator(this, function (_a) {
55221
+ switch (_a.label) {
55222
+ case 0:
55223
+ if (!response.success) return [3 /*break*/, 2];
55224
+ return [4 /*yield*/, this.processGetData(response)];
55225
+ case 1:
55226
+ _a.sent();
55227
+ this.fireDataLoaded();
55228
+ return [3 /*break*/, 3];
55229
+ case 2:
55230
+ this._notifierService.showWarning(response.message);
55231
+ this.fireDataLoaded(false);
55232
+ _a.label = 3;
55233
+ case 3: return [2 /*return*/];
55234
+ }
55235
+ });
55236
+ }); }, function (error) {
55237
+ _this._notifierService.showHttpUnknowError();
55238
+ _this.fireDataLoaded(false);
55239
+ });
55240
+ }
55241
+ }
55242
+ else {
55243
+ this.getDataCustom(gridInfo);
55244
+ }
55245
+ };
55246
+ TreeListBase.prototype.processGetData = function (response) {
55247
+ return __awaiter(this, void 0, void 0, function () {
55248
+ var dataSource, resetSelectedItems;
55249
+ return __generator(this, function (_a) {
55250
+ switch (_a.label) {
55251
+ case 0:
55252
+ this.model.expandedRowKeys = {};
55253
+ this.model.total = response.totalRecord;
55254
+ if (!(response.data && response.data.length > 0)) return [3 /*break*/, 2];
55255
+ return [4 /*yield*/, this.beforeRenderDataSource(response.data)];
55256
+ case 1:
55257
+ _a.sent();
55258
+ _a.label = 2;
55259
+ case 2: return [4 /*yield*/, this.afterProcessDataInBase(response.data)];
55260
+ case 3:
55261
+ _a.sent();
55262
+ dataSource = [];
55263
+ this.createTreeData(response.data, dataSource);
55264
+ this.model.dataSource = dataSource;
55265
+ resetSelectedItems = this.model.selectedItems && this.model.selectedItems.length;
55266
+ if (resetSelectedItems) {
55267
+ this.model.selectedItems.length = 0;
55268
+ }
55269
+ return [4 /*yield*/, this.afterGetData()];
55270
+ case 4:
55271
+ _a.sent();
55272
+ this._getRefDataDropdown(this.model.dataSource);
55273
+ return [2 /*return*/];
55274
+ }
55275
+ });
55276
+ });
55277
+ };
55278
+ TreeListBase.prototype.beforeRenderDataSource = function (datasource) {
55279
+ return datasource;
55280
+ };
55281
+ TreeListBase.prototype.afterProcessDataInBase = function (dataSource) {
55282
+ if (dataSource === void 0) { dataSource = []; }
55283
+ return __awaiter(this, void 0, void 0, function () {
55284
+ return __generator(this, function (_a) {
55285
+ return [2 /*return*/];
55286
+ });
55287
+ });
55288
+ };
55289
+ TreeListBase.prototype.createTreeData = function (dataSource, result, level, idParent, lstIdParent) {
55290
+ var _this = this;
55291
+ if (level === void 0) { level = 1; }
55292
+ if (idParent === void 0) { idParent = null; }
55293
+ if (lstIdParent === void 0) { lstIdParent = []; }
55294
+ dataSource.forEach(function (item) {
55295
+ if (item[_this.fieldParent] != idParent)
55296
+ return;
55297
+ // Bị vòng lặp vô hạn
55298
+ if (lstIdParent.indexOf(item.id) > -1)
55299
+ return;
55300
+ var node = {
55301
+ data: item,
55302
+ label: item.ten,
55303
+ expanded: level <= _this.levelOpen,
55304
+ level: level,
55305
+ children: []
55306
+ };
55307
+ result.push(node);
55308
+ _this.createTreeData(dataSource, node.children, level + 1, node.data.id, __spread(lstIdParent, [item.id]));
55309
+ });
55310
+ return result;
55311
+ };
55312
+ TreeListBase.prototype.afterGetData = function () {
55313
+ return __awaiter(this, void 0, void 0, function () {
55314
+ return __generator(this, function (_a) {
55315
+ return [2 /*return*/];
55316
+ });
55317
+ });
55318
+ };
55319
+ TreeListBase.prototype._getRefDataDropdown = function (dataSource) {
55320
+ return __awaiter(this, void 0, void 0, function () {
55321
+ var arrPromiseDontNeedWait, arrSchemaDontNeedWait, _loop_1, this_1, _a, _b, schema, e_2_1, arrRes_1;
55322
+ var e_2, _c;
55323
+ var _this = this;
55324
+ return __generator(this, function (_d) {
55325
+ switch (_d.label) {
55326
+ case 0:
55327
+ if (!(dataSource && dataSource.length > 0)) return [3 /*break*/, 12];
55328
+ if (!this.setting.advanceData.fieldNeedGetRef) return [3 /*break*/, 11];
55329
+ arrPromiseDontNeedWait = [];
55330
+ arrSchemaDontNeedWait = [];
55331
+ _loop_1 = function (schema) {
55332
+ var field, arrValue_1, promise, result, funcGetLabel_1;
55333
+ return __generator(this, function (_a) {
55334
+ switch (_a.label) {
55335
+ case 0:
55336
+ field = schema.field;
55337
+ if (!(schema[KeyFieldGetRefType] == exports.EnumGetRefType.SERVER)) return [3 /*break*/, 4];
55338
+ if (!(schema.forceGetData
55339
+ || (this_1.setting.groupColumn && this_1.setting.groupColumn.rawColumn && this_1.setting.groupColumn.rawColumn.field == schema.field)
55340
+ || this_1.setting.cols.some(function (item) { return item.field == 'str' + field && item.visible != false; }))) return [3 /*break*/, 3];
55341
+ arrValue_1 = [];
55342
+ dataSource.forEach(function (itemData) {
55343
+ var currentValue = itemData[field];
55344
+ if (currentValue != null) {
55345
+ if (schema.multiple) {
55346
+ var ids = currentValue;
55347
+ if (!Array.isArray(ids)) {
55348
+ ids = ids.split(',');
55349
+ }
55350
+ ids.forEach(function (id) {
55351
+ if (!id)
55352
+ return;
55353
+ if (!arrValue_1.some(function (p) { return p == id; })) {
55354
+ arrValue_1.push(id);
55355
+ }
55356
+ });
55357
+ }
55358
+ else if (!arrValue_1.some(function (p) { return p == currentValue; })) {
55359
+ arrValue_1.push(currentValue);
55360
+ }
55361
+ }
55362
+ });
55363
+ if (!(arrValue_1.length > 0)) return [3 /*break*/, 3];
55364
+ promise = null;
55365
+ if (schema.baseService instanceof MasterDataService) {
55366
+ promise = schema.baseService.getDataDropdown(schema.groupCode, arrValue_1, this_1.createDropdownOptions(schema));
55367
+ }
55368
+ else {
55369
+ promise = schema.baseService.getDataDropdownByFilter([this_1.newFilter(schema.valueField, exports.Operator.in, arrValue_1)], this_1.createDropdownOptions(schema));
55370
+ }
55371
+ if (!(schema.order != null)) return [3 /*break*/, 2];
55372
+ return [4 /*yield*/, promise];
55373
+ case 1:
55374
+ result = _a.sent();
55375
+ this_1.mergeRefDataToDatasource(dataSource, schema, result);
55376
+ return [3 /*break*/, 3];
55377
+ case 2:
55378
+ arrPromiseDontNeedWait.push(promise);
55379
+ arrSchemaDontNeedWait.push(schema);
55380
+ _a.label = 3;
55381
+ case 3: return [3 /*break*/, 5];
55382
+ case 4:
55383
+ funcGetLabel_1 = function (item) { return item[schema.displayFieldInGrid] || item['label']; };
55384
+ if (schema.funcGetLabel) {
55385
+ funcGetLabel_1 = schema.funcGetLabel;
55386
+ }
55387
+ dataSource.forEach(function (itemData) {
55388
+ var refItem = schema.dataSource.find(function (i) { return schema.funcCompare(i, itemData[field]); });
55389
+ if (refItem != null) {
55390
+ itemData['str' + field] = funcGetLabel_1(refItem);
55391
+ }
55392
+ });
55393
+ _a.label = 5;
55394
+ case 5: return [2 /*return*/];
55395
+ }
55396
+ });
55397
+ };
55398
+ this_1 = this;
55399
+ _d.label = 1;
55400
+ case 1:
55401
+ _d.trys.push([1, 6, 7, 8]);
55402
+ _a = __values(this.setting.advanceData.fieldNeedGetRef), _b = _a.next();
55403
+ _d.label = 2;
55404
+ case 2:
55405
+ if (!!_b.done) return [3 /*break*/, 5];
55406
+ schema = _b.value;
55407
+ return [5 /*yield**/, _loop_1(schema)];
55408
+ case 3:
55409
+ _d.sent();
55410
+ _d.label = 4;
55411
+ case 4:
55412
+ _b = _a.next();
55413
+ return [3 /*break*/, 2];
55414
+ case 5: return [3 /*break*/, 8];
55415
+ case 6:
55416
+ e_2_1 = _d.sent();
55417
+ e_2 = { error: e_2_1 };
55418
+ return [3 /*break*/, 8];
55419
+ case 7:
55420
+ try {
55421
+ if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
55422
+ }
55423
+ finally { if (e_2) throw e_2.error; }
55424
+ return [7 /*endfinally*/];
55425
+ case 8:
55426
+ if (!(arrPromiseDontNeedWait.length > 0)) return [3 /*break*/, 10];
55427
+ return [4 /*yield*/, Promise.all(arrPromiseDontNeedWait)];
55428
+ case 9:
55429
+ arrRes_1 = _d.sent();
55430
+ arrSchemaDontNeedWait.forEach(function (schema, index) {
55431
+ _this.mergeRefDataToDatasource(dataSource, schema, arrRes_1[index]);
55432
+ });
55433
+ _d.label = 10;
55434
+ case 10:
55435
+ this.afterGetRefDataDropdown(null);
55436
+ this.readyToTrinhKy = true;
55437
+ return [3 /*break*/, 12];
55438
+ case 11:
55439
+ this.readyToTrinhKy = true;
55440
+ _d.label = 12;
55441
+ case 12: return [2 /*return*/];
55442
+ }
55443
+ });
55444
+ });
55445
+ };
55446
+ TreeListBase.prototype.mergeRefDataToDatasource = function (dataSource, schema, data) {
55447
+ var field = schema.field;
55448
+ var funcGetLabel = function (item) { return item[schema.displayFieldInGrid] || item['ten']; };
55449
+ if (schema.funcGetLabel) {
55450
+ funcGetLabel = schema.funcGetLabel;
55451
+ }
55452
+ var funcSetValueRow = function (rowItem, data) { };
55453
+ var funcGetRefDataRow = function (refItems) {
55454
+ return refItems.map(function (item) { return funcGetLabel(item); }).join(schema.separator + " ");
55455
+ };
55456
+ if (schema.funcSetValueRow) {
55457
+ funcSetValueRow = schema.funcSetValueRow;
55458
+ }
55459
+ if (schema.funcGetRefDataRow) {
55460
+ funcGetRefDataRow = schema.funcGetRefDataRow;
55461
+ }
55462
+ if (schema.multiple) {
55463
+ dataSource.forEach(function (itemData) {
55464
+ if (itemData[field] != null) {
55465
+ var ids_1 = itemData[field];
55466
+ if (!Array.isArray(ids_1)) {
55467
+ ids_1 = ids_1.split(',');
55468
+ }
55469
+ var refItems = data.filter(function (i) { return ids_1.some(function (q) { return schema.funcCompare(i, q); }); });
55470
+ if (refItems.length > 0) {
55471
+ itemData['str' + field] = funcGetRefDataRow(refItems);
55472
+ funcSetValueRow(itemData, refItems);
55473
+ }
55474
+ }
55475
+ });
55476
+ }
55477
+ else {
55478
+ dataSource.forEach(function (itemData) {
55479
+ if (itemData[field] != null) {
55480
+ var refItem = data.find(function (i) { return schema.funcCompare(i, itemData[field]); });
55481
+ if (refItem != null) {
55482
+ itemData['str' + field] = funcGetLabel(refItem);
55483
+ funcSetValueRow(itemData, refItem);
55484
+ }
55485
+ }
55486
+ });
55487
+ }
55488
+ this.afterGetRefDataDropdown(field);
55489
+ };
55490
+ TreeListBase.prototype.createDropdownOptions = function (schema) {
55491
+ return new DropdownOptions({
55492
+ displayField: schema.displayField,
55493
+ valueField: schema.valueField,
55494
+ fieldPlus: schema.fieldPlus,
55495
+ fieldTree: schema.fieldTree,
55496
+ fieldParentTreeItem: schema.fieldParentTreeItem,
55497
+ funcGetLabel: schema.funcGetLabel,
55498
+ sortField: schema.sortField,
55499
+ sortDir: schema.sortDir,
55500
+ callbackDataFinish: schema.callbackDataFinish
55501
+ });
55502
+ };
55503
+ TreeListBase.prototype.afterGetRefDataDropdown = function (field) {
55504
+ };
55505
+ TreeListBase.prototype.mergeInfoToColumnSchema = function () {
55506
+ var _this = this;
55507
+ this.setting.cols.forEach(function (col) {
55508
+ var columnModelSchema = _this.setting.modelSchemas.find(function (p) { return p.field == col.field; });
55509
+ if (columnModelSchema) {
55510
+ col.label = columnModelSchema.name;
55511
+ col.fullLabel = columnModelSchema.fullName;
55512
+ if (!col.displayFieldInGrid) {
55513
+ col.displayFieldInGrid = col.displayField;
55514
+ }
55515
+ if (!col.dataType) {
55516
+ col.dataType = _this.getDataType(columnModelSchema.dataType);
55517
+ }
55518
+ }
55519
+ });
55520
+ };
55521
+ TreeListBase.prototype.getDataType = function (type) {
55522
+ return type;
55523
+ };
55524
+ TreeListBase.prototype.generateFieldSearchText = function () {
55525
+ var _this = this;
55526
+ this.setting.cols.forEach(function (col) {
55527
+ if (col.fullTextSearch) {
55528
+ _this.setting.fieldSearchText.push(col.field);
55529
+ }
55530
+ });
55531
+ if (this.setting.fieldSearchText.length > 0) {
55532
+ var filters_1 = [];
55533
+ this.setting.fieldSearchText.forEach(function (field) {
55534
+ filters_1.push(new Filter({ field: field, operator: exports.Operator.contain, sourceField: '_k' }));
55535
+ });
55536
+ if (this.setting.filterTemplateAdvs) {
55537
+ this.setting.filterTemplateAdvs.splice(0, 0, new Filter({
55538
+ logic: 'or',
55539
+ filters: filters_1
55540
+ }));
55541
+ }
55542
+ }
55543
+ };
55544
+ return TreeListBase;
55545
+ }(ComponentBase));
55546
+ TreeListBase.decorators = [
55547
+ { type: i0.Directive }
55548
+ ];
55549
+ TreeListBase.ctorParameters = function () { return [
55550
+ { type: i0.Injector }
55551
+ ]; };
55552
+ TreeListBase.propDecorators = {
55553
+ content: [{ type: i0.ViewChild, args: [TreeTableComponent,] }],
55554
+ parentModel: [{ type: i0.Input }],
55555
+ loadDetailFromQueryParam: [{ type: i0.Input }]
55556
+ };
55557
+
54082
55558
  var PermissionUtilsInterceptor = /** @class */ (function () {
54083
55559
  function PermissionUtilsInterceptor(authenService, _moduleConfigService, _applicationContextService) {
54084
55560
  this.authenService = authenService;
@@ -56209,6 +57685,7 @@
56209
57685
  exports.TnReorderableRowDirective = TnReorderableRowDirective;
56210
57686
  exports.TnSortIcon = TnSortIcon;
56211
57687
  exports.TnSortableColumnDirective = TnSortableColumnDirective;
57688
+ exports.TnTreeTableToggler = TnTreeTableToggler;
56212
57689
  exports.TnUser = TnUser;
56213
57690
  exports.TnxSharedModule = TnxSharedModule;
56214
57691
  exports.TopicReloadCongViecV5 = TopicReloadCongViecV5;
@@ -56217,6 +57694,7 @@
56217
57694
  exports.TrangThaiMasterData = TrangThaiMasterData;
56218
57695
  exports.TrangThais = TrangThais;
56219
57696
  exports.TreeDataOption = TreeDataOption;
57697
+ exports.TreeListBase = TreeListBase;
56220
57698
  exports.TrimCorrector = TrimCorrector;
56221
57699
  exports.TrimEndCorrector = TrimEndCorrector;
56222
57700
  exports.TrimStartCorrector = TrimStartCorrector;
@@ -56311,119 +57789,120 @@
56311
57789
  exports.ɵ9 = ɵ9;
56312
57790
  exports.ɵa = AddressComponent;
56313
57791
  exports.ɵb = DropdownService;
56314
- exports.ɵba = BaseCongviecDinhkemFormComponent;
56315
- exports.ɵbb = DatetimePickerComponent;
56316
- exports.ɵbc = DatetimePickerRangeComponent;
56317
- exports.ɵbd = DynamicNodeComponent;
56318
- exports.ɵbe = EntityPickerBoxComponent;
56319
- exports.ɵbf = EntityPickerDataComponent;
56320
- exports.ɵbg = EntityPickerSelectedComponent;
56321
- exports.ɵbh = EntityPickerComponent;
56322
- exports.ɵbi = EntityPickerDialogComponent;
56323
- exports.ɵbj = EntityPermissionComponent;
56324
- exports.ɵbk = DM_ChucVuService;
56325
- exports.ɵbl = RoleService;
56326
- exports.ɵbm = EntityPermissionService;
56327
- exports.ɵbn = EquationEditorComponent;
56328
- exports.ɵbo = MaskComponent;
56329
- exports.ɵbp = NumberPickerRangeComponent;
56330
- exports.ɵbq = PagingNextBackOnlyComponent;
56331
- exports.ɵbr = RadioButtonListComponent;
56332
- exports.ɵbs = VanBanPickerComponent;
56333
- exports.ɵbt = VanBanDenService;
56334
- exports.ɵbu = VanBanDiService;
56335
- exports.ɵbv = VanBanPickerDialogComponent;
56336
- exports.ɵbw = VanbanDiPickerComponent;
56337
- exports.ɵbx = VanbanDenPickerComponent;
56338
- exports.ɵby = CongViecPickerComponent;
56339
- exports.ɵbz = CongViecService$1;
57792
+ exports.ɵba = CongviecDinhkemService;
57793
+ exports.ɵbb = BaseCongviecDinhkemFormComponent;
57794
+ exports.ɵbc = DatetimePickerComponent;
57795
+ exports.ɵbd = DatetimePickerRangeComponent;
57796
+ exports.ɵbe = DynamicNodeComponent;
57797
+ exports.ɵbf = EntityPickerBoxComponent;
57798
+ exports.ɵbg = EntityPickerDataComponent;
57799
+ exports.ɵbh = EntityPickerSelectedComponent;
57800
+ exports.ɵbi = EntityPickerComponent;
57801
+ exports.ɵbj = EntityPickerDialogComponent;
57802
+ exports.ɵbk = EntityPermissionComponent;
57803
+ exports.ɵbl = DM_ChucVuService;
57804
+ exports.ɵbm = RoleService;
57805
+ exports.ɵbn = EntityPermissionService;
57806
+ exports.ɵbo = EquationEditorComponent;
57807
+ exports.ɵbp = MaskComponent;
57808
+ exports.ɵbq = NumberPickerRangeComponent;
57809
+ exports.ɵbr = PagingNextBackOnlyComponent;
57810
+ exports.ɵbs = RadioButtonListComponent;
57811
+ exports.ɵbt = VanBanPickerComponent;
57812
+ exports.ɵbu = VanBanDenService;
57813
+ exports.ɵbv = VanBanDiService;
57814
+ exports.ɵbw = VanBanPickerDialogComponent;
57815
+ exports.ɵbx = VanbanDiPickerComponent;
57816
+ exports.ɵby = VanbanDenPickerComponent;
57817
+ exports.ɵbz = CongViecPickerComponent;
56340
57818
  exports.ɵc = EntityPickerService;
56341
- exports.ɵca = TaskWorkflowHistoriesService;
56342
- exports.ɵcb = SettingsComponent;
56343
- exports.ɵcc = SettingsRowComponent;
56344
- exports.ɵcd = SettingsWorkflowComponent;
56345
- exports.ɵce = SettingsWorkflowNo1Component;
56346
- exports.ɵcf = SimpleWorkflowFormComponent;
56347
- exports.ɵcg = ProcessWorkflowTargetComponent;
56348
- exports.ɵch = DmChucVuService;
56349
- exports.ɵci = ChoYKienFormComponent;
56350
- exports.ɵcj = SplashComponentV1Component;
56351
- exports.ɵck = SplashComponentV2Component;
56352
- exports.ɵcl = StateMachinesConnectionReceiverComponent;
56353
- exports.ɵcm = StateMachinesConnectionReceiverConditionComponent;
56354
- exports.ɵcn = WorkflowSettingsService;
56355
- exports.ɵco = StateMachinesConnectionReceiverDepartmentComponent;
56356
- exports.ɵcp = StateMachinesConnectionReceiverGroupComponent;
56357
- exports.ɵcq = StateMachinesConnectionReceiverUserComponent;
56358
- exports.ɵcr = StateMachinesConnectionReceiverRoleComponent;
56359
- exports.ɵcs = StateMachinesConnectionSenderComponent;
56360
- exports.ɵct = StartWorkflowComponent;
56361
- exports.ɵcu = ShareLinkByPermissionComponent;
56362
- exports.ɵcv = WorkflowSettingNewComponent;
56363
- exports.ɵcw = PermissionSharingComponent;
56364
- exports.ɵcx = WorkflowPermissionService;
56365
- exports.ɵcy = TnDialogComponent;
56366
- exports.ɵcz = TnColorPickerComponent;
57819
+ exports.ɵca = CongViecService$1;
57820
+ exports.ɵcb = TaskWorkflowHistoriesService;
57821
+ exports.ɵcc = SettingsComponent;
57822
+ exports.ɵcd = SettingsRowComponent;
57823
+ exports.ɵce = SettingsWorkflowComponent;
57824
+ exports.ɵcf = SettingsWorkflowNo1Component;
57825
+ exports.ɵcg = SimpleWorkflowFormComponent;
57826
+ exports.ɵch = ProcessWorkflowTargetComponent;
57827
+ exports.ɵci = DmChucVuService;
57828
+ exports.ɵcj = ChoYKienFormComponent;
57829
+ exports.ɵck = SplashComponentV1Component;
57830
+ exports.ɵcl = SplashComponentV2Component;
57831
+ exports.ɵcm = StateMachinesConnectionReceiverComponent;
57832
+ exports.ɵcn = StateMachinesConnectionReceiverConditionComponent;
57833
+ exports.ɵco = WorkflowSettingsService;
57834
+ exports.ɵcp = StateMachinesConnectionReceiverDepartmentComponent;
57835
+ exports.ɵcq = StateMachinesConnectionReceiverGroupComponent;
57836
+ exports.ɵcr = StateMachinesConnectionReceiverUserComponent;
57837
+ exports.ɵcs = StateMachinesConnectionReceiverRoleComponent;
57838
+ exports.ɵct = StateMachinesConnectionSenderComponent;
57839
+ exports.ɵcu = StartWorkflowComponent;
57840
+ exports.ɵcv = ShareLinkByPermissionComponent;
57841
+ exports.ɵcw = WorkflowSettingNewComponent;
57842
+ exports.ɵcx = PermissionSharingComponent;
57843
+ exports.ɵcy = WorkflowPermissionService;
57844
+ exports.ɵcz = TnDialogComponent;
56367
57845
  exports.ɵd = ExceptionHandlerService;
56368
- exports.ɵda = TnTinymceComponent;
56369
- exports.ɵdb = TnTabViewComponent;
56370
- exports.ɵdc = TableDetailFormComponent;
56371
- exports.ɵdd = FileIconPipe;
56372
- exports.ɵde = FileSizePipe;
56373
- exports.ɵdf = QuickAddFormComponent;
56374
- exports.ɵdg = PreventShiftTabDirective;
56375
- exports.ɵdh = TnTemplateDirective;
56376
- exports.ɵdi = UserPickerComponent;
56377
- exports.ɵdj = UserPickerBoxComponent;
56378
- exports.ɵdk = CoCauToChucTestService;
56379
- exports.ɵdl = TnAppHelpComponent;
56380
- exports.ɵdm = PathNameService;
56381
- exports.ɵdn = HelperCurrentPageComponent;
56382
- exports.ɵdo = TnAppNotificationListComponent;
56383
- exports.ɵdp = TnAppNotificationComponent;
56384
- exports.ɵdq = MyDriveService;
56385
- exports.ɵdr = FileVersionService;
56386
- exports.ɵds = FileExplorerNewService;
56387
- exports.ɵdt = FileManagerService;
56388
- exports.ɵdu = FolderFormComponent;
56389
- exports.ɵdv = FileFormComponent;
56390
- exports.ɵdw = FileViewerComponent;
56391
- exports.ɵdx = FileVersionListComponent;
56392
- exports.ɵdy = WorkflowHistoryComponent;
56393
- exports.ɵdz = EntityWorkflowHistoryService;
57846
+ exports.ɵda = TnColorPickerComponent;
57847
+ exports.ɵdb = TnTinymceComponent;
57848
+ exports.ɵdc = TnTabViewComponent;
57849
+ exports.ɵdd = TableDetailFormComponent;
57850
+ exports.ɵde = FileIconPipe;
57851
+ exports.ɵdf = FileSizePipe;
57852
+ exports.ɵdg = QuickAddFormComponent;
57853
+ exports.ɵdh = PreventShiftTabDirective;
57854
+ exports.ɵdi = TnTemplateDirective;
57855
+ exports.ɵdj = UserPickerComponent;
57856
+ exports.ɵdk = UserPickerBoxComponent;
57857
+ exports.ɵdl = CoCauToChucTestService;
57858
+ exports.ɵdm = TnAppHelpComponent;
57859
+ exports.ɵdn = PathNameService;
57860
+ exports.ɵdo = HelperCurrentPageComponent;
57861
+ exports.ɵdp = TnAppNotificationListComponent;
57862
+ exports.ɵdq = TnAppNotificationComponent;
57863
+ exports.ɵdr = MyDriveService;
57864
+ exports.ɵds = FileVersionService;
57865
+ exports.ɵdt = FileExplorerNewService;
57866
+ exports.ɵdu = FileManagerService;
57867
+ exports.ɵdv = FolderFormComponent;
57868
+ exports.ɵdw = FileFormComponent;
57869
+ exports.ɵdx = FileViewerComponent;
57870
+ exports.ɵdy = FileVersionListComponent;
57871
+ exports.ɵdz = WorkflowHistoryComponent;
56394
57872
  exports.ɵe = CanBo_HoSoService;
56395
- exports.ɵea = WorkflowHistoryDialogComponent;
56396
- exports.ɵeb = WorkflowHistoryNewComponent;
56397
- exports.ɵec = WorkflowSettingComponent;
56398
- exports.ɵed = EntityWorkflowSettingService;
56399
- exports.ɵee = WorkflowSettingDialogComponent;
56400
- exports.ɵef = WorkflowPermissionComponent;
56401
- exports.ɵeg = WorkflowPermissionFormComponent;
56402
- exports.ɵeh = QrCodeGeneratorComponent;
56403
- exports.ɵei = AccessDeniedV1Component;
56404
- exports.ɵej = AddNewsComponent;
56405
- exports.ɵek = ArticleService;
56406
- exports.ɵel = NewsCategoryService;
56407
- exports.ɵem = NotFoundComponent;
56408
- exports.ɵen = UniversalLinkProcessorComponent;
56409
- exports.ɵeo = SignatureDetailComponent;
56410
- exports.ɵep = ChatService;
56411
- exports.ɵeq = ContentsService;
56412
- exports.ɵer = StatusExtendsService;
56413
- exports.ɵes = MessageBoardService;
56414
- exports.ɵet = KySoSimDanhSachChuKyComponent;
56415
- exports.ɵeu = KySoSimChuKyUserService;
56416
- exports.ɵev = FileKySoSimComponent;
56417
- exports.ɵew = KySoSimSignPDFService;
56418
- exports.ɵex = TaiLieuCuaToiComponent;
56419
- exports.ɵey = KhaiThacTaiLieuDungChungComponent;
56420
- exports.ɵez = DanhMucDungChungService;
57873
+ exports.ɵea = EntityWorkflowHistoryService;
57874
+ exports.ɵeb = WorkflowHistoryDialogComponent;
57875
+ exports.ɵec = WorkflowHistoryNewComponent;
57876
+ exports.ɵed = WorkflowSettingComponent;
57877
+ exports.ɵee = EntityWorkflowSettingService;
57878
+ exports.ɵef = WorkflowSettingDialogComponent;
57879
+ exports.ɵeg = WorkflowPermissionComponent;
57880
+ exports.ɵeh = WorkflowPermissionFormComponent;
57881
+ exports.ɵei = QrCodeGeneratorComponent;
57882
+ exports.ɵej = AccessDeniedV1Component;
57883
+ exports.ɵek = AddNewsComponent;
57884
+ exports.ɵel = ArticleService;
57885
+ exports.ɵem = NewsCategoryService;
57886
+ exports.ɵen = NotFoundComponent;
57887
+ exports.ɵeo = UniversalLinkProcessorComponent;
57888
+ exports.ɵep = SignatureDetailComponent;
57889
+ exports.ɵeq = ChatService;
57890
+ exports.ɵer = ContentsService;
57891
+ exports.ɵes = StatusExtendsService;
57892
+ exports.ɵet = MessageBoardService;
57893
+ exports.ɵeu = KySoSimDanhSachChuKyComponent;
57894
+ exports.ɵev = KySoSimChuKyUserService;
57895
+ exports.ɵew = FileKySoSimComponent;
57896
+ exports.ɵex = KySoSimSignPDFService;
57897
+ exports.ɵey = TaiLieuCuaToiComponent;
57898
+ exports.ɵez = KhaiThacTaiLieuDungChungComponent;
56421
57899
  exports.ɵf = AfterViewCheckedComponent;
56422
- exports.ɵfa = CheckReadyComponent;
56423
- exports.ɵfb = SendAccessTokenInterceptor;
56424
- exports.ɵfc = LogInterceptor;
56425
- exports.ɵfd = PermissionUtilsInterceptor;
56426
- exports.ɵfe = TraceInterceptor;
57900
+ exports.ɵfa = DanhMucDungChungService;
57901
+ exports.ɵfb = CheckReadyComponent;
57902
+ exports.ɵfc = SendAccessTokenInterceptor;
57903
+ exports.ɵfd = LogInterceptor;
57904
+ exports.ɵfe = PermissionUtilsInterceptor;
57905
+ exports.ɵff = TraceInterceptor;
56427
57906
  exports.ɵg = AdvanceSearchComponent;
56428
57907
  exports.ɵh = AppRootMenuComponent;
56429
57908
  exports.ɵi = AppTopBarComponent;
@@ -56436,14 +57915,14 @@
56436
57915
  exports.ɵp = CheckBoxListComponent;
56437
57916
  exports.ɵq = ReportQueueComponent;
56438
57917
  exports.ɵr = CoCauToChucPickerListComponent;
56439
- exports.ɵs = BaseCongViecTestComponent;
56440
- exports.ɵt = ProcessWorkflowFormComponent;
56441
- exports.ɵu = BaseCauHinhWorkflowDetailComponent;
56442
- exports.ɵv = BaseDmLoaiCongViecFormComponent;
56443
- exports.ɵw = BaseDmLinhVucCongViecFormComponent;
56444
- exports.ɵx = BaseDmPriorityFormComponent;
56445
- exports.ɵy = BaseCongviecDinhkemComponent;
56446
- exports.ɵz = CongviecDinhkemService;
57918
+ exports.ɵs = TreeTableComponent;
57919
+ exports.ɵt = BaseCongViecTestComponent;
57920
+ exports.ɵu = ProcessWorkflowFormComponent;
57921
+ exports.ɵv = BaseCauHinhWorkflowDetailComponent;
57922
+ exports.ɵw = BaseDmLoaiCongViecFormComponent;
57923
+ exports.ɵx = BaseDmLinhVucCongViecFormComponent;
57924
+ exports.ɵy = BaseDmPriorityFormComponent;
57925
+ exports.ɵz = BaseCongviecDinhkemComponent;
56447
57926
 
56448
57927
  Object.defineProperty(exports, '__esModule', { value: true });
56449
57928