tnx-shared 5.1.463 → 5.1.465

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 (32) hide show
  1. package/bundles/tnx-shared.umd.js +842 -168
  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/validators.d.ts.map +1 -1
  6. package/components/common-app-component/app-topbar-v3/app-topbar-v3.component.d.ts +88 -0
  7. package/components/common-app-component/app-topbar-v3/app-topbar-v3.component.d.ts.map +1 -0
  8. package/components/common-app-component/app-topbar-v3/app-topbar-v3.component.ngfactory.d.ts.map +1 -0
  9. package/components/common-app-component/app-topbar-v3/app-topbar-v3.component.scss.shim.ngstyle.d.ts.map +1 -0
  10. package/components/splash-component/splash-component-v3/splash-component-v3.component.d.ts +41 -0
  11. package/components/splash-component/splash-component-v3/splash-component-v3.component.d.ts.map +1 -0
  12. package/components/splash-component/splash-component-v3/splash-component-v3.component.ngfactory.d.ts.map +1 -0
  13. package/components/splash-component/splash-component-v3/splash-component-v3.component.scss.shim.ngstyle.d.ts.map +1 -0
  14. package/enums/common.d.ts +2 -1
  15. package/enums/common.d.ts.map +1 -1
  16. package/esm2015/classes/base/validators.js +3 -2
  17. package/esm2015/components/common-app-component/app-topbar-v3/app-topbar-v3.component.js +445 -0
  18. package/esm2015/components/common-app-component/app.topbar.component.js +2 -2
  19. package/esm2015/components/splash-component/splash-component-v3/splash-component-v3.component.js +204 -0
  20. package/esm2015/components/splash-component/splash-component.component.js +2 -2
  21. package/esm2015/enums/common.js +2 -1
  22. package/esm2015/tnx-shared.js +116 -114
  23. package/esm2015/tnx-shared.module.js +5 -1
  24. package/fesm2015/tnx-shared.js +676 -51
  25. package/fesm2015/tnx-shared.js.map +1 -1
  26. package/package.json +2 -2
  27. package/tnx-shared.d.ts +115 -113
  28. package/tnx-shared.d.ts.map +1 -1
  29. package/tnx-shared.metadata.json +1 -1
  30. package/tnx-shared.module.d.ts +3 -1
  31. package/tnx-shared.module.d.ts.map +1 -1
  32. package/tnx-shared.module.ngfactory.d.ts.map +1 -1
@@ -4966,6 +4966,7 @@
4966
4966
  EnumTypeSplash["DEFAULT"] = "Default";
4967
4967
  EnumTypeSplash["NEW_V1"] = "v1";
4968
4968
  EnumTypeSplash["NEW_V2"] = "v2";
4969
+ EnumTypeSplash["NEW_V3"] = "v3";
4969
4970
  })(exports.EnumTypeSplash || (exports.EnumTypeSplash = {}));
4970
4971
 
4971
4972
  var ExportItem = /** @class */ (function () {
@@ -13837,7 +13838,7 @@
13837
13838
  switch (this._type) {
13838
13839
  case exports.ValueType.date:
13839
13840
  case exports.ValueType.datetime:
13840
- return new Date(value);
13841
+ return moment___default["default"](value, 'DD/MM/YYYY hh:mm:ss');
13841
13842
  case exports.ValueType.int:
13842
13843
  return parseInt(value);
13843
13844
  case exports.ValueType.decimal:
@@ -26635,7 +26636,7 @@
26635
26636
  SplashComponentComponent.decorators = [
26636
26637
  { type: i0.Component, args: [{
26637
26638
  selector: 'splash-component',
26638
- template: "<ng-container [ngSwitch]=\"uiSplash\">\n <ng-container *ngSwitchDefault>\n <ng-container [ngTemplateOutlet]=\"defaultSplash\">\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V1\">\n <splash-component-v1></splash-component-v1>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V2\">\n <splash-component-v2></splash-component-v2>\n </ng-container>\n</ng-container>\n\n<ng-template #defaultSplash>\n <div *ngIf=\"!loaded\" class=\"wrp-loader\">\n <div class=\"loader\"></div>\n </div>\n <div *ngIf=\"loaded\" class=\"modules\">\n <div class=\"welcome-user\">\n <img class=\"profile-image custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\n <h2>Xin ch\u00E0o\n <span *ngIf=\"currentUser\">{{currentUser.fullName}}</span>\n <span *ngIf=\"!currentUser\">kh\u00E1ch</span>!\n </h2>\n <ng-container *ngIf=\"currentUser\">\n <a (click)=\"goToPersonal()\"><i class=\"fas fa-user\"></i>Trang c\u00E1 nh\u00E2n</a>\n <ng-container>|</ng-container>\n <a style=\"background: #f7e08b;\" (click)=\"logout()\">\n <i class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng xu\u1EA5t\n </a>\n </ng-container>\n <a *ngIf=\"!currentUser\" style=\"background: #f7e08b;\" (click)=\"login()\">\n <i class=\"fas fa-sign-in-alt\"></i>\u0110\u0103ng nh\u1EADp\n </a>\n </div>\n <div class=\"module-icons\">\n <h1>{{environment.appMetadata.main.title}}</h1>\n <h2>{{environment.appMetadata.main.owner}}</h2>\n <div class=\"div1111-wrapper\">\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\" [config]=\"{'suppressScrollY': true}\">\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\n </tn-custom-scrollbar>\n\n <ng-container *ngIf=\"isOnMobile\">\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"clock-wrapper\">\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\n </div>\n </div>\n\n <ng-template #appSwitcher>\n <div class=\"div1111\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <span>\n <a [style.background]=\"item.background\" (click)=\"switchApp(item)\">\n <i class=\"{{item.icon}} switcher-item-icon\" [style.color]=\"item.colorIcon\"></i>\n <span [style.color]=\"item.colorTitle\">{{ item.title | translate}}</span>\n </a>\n </span>\n </ng-container>\n </div>\n </ng-template>\n</ng-template>",
26639
+ template: "<ng-container [ngSwitch]=\"uiSplash\">\n <ng-container *ngSwitchDefault>\n <ng-container [ngTemplateOutlet]=\"defaultSplash\">\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V1\">\n <splash-component-v1></splash-component-v1>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V2\">\n <splash-component-v2></splash-component-v2>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V3\">\n <splash-component-v3></splash-component-v3>\n </ng-container>\n</ng-container>\n\n<ng-template #defaultSplash>\n <div *ngIf=\"!loaded\" class=\"wrp-loader\">\n <div class=\"loader\"></div>\n </div>\n <div *ngIf=\"loaded\" class=\"modules\">\n <div class=\"welcome-user\">\n <img class=\"profile-image custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\n <h2>Xin ch\u00E0o\n <span *ngIf=\"currentUser\">{{currentUser.fullName}}</span>\n <span *ngIf=\"!currentUser\">kh\u00E1ch</span>!\n </h2>\n <ng-container *ngIf=\"currentUser\">\n <a (click)=\"goToPersonal()\"><i class=\"fas fa-user\"></i>Trang c\u00E1 nh\u00E2n</a>\n <ng-container>|</ng-container>\n <a style=\"background: #f7e08b;\" (click)=\"logout()\">\n <i class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng xu\u1EA5t\n </a>\n </ng-container>\n <a *ngIf=\"!currentUser\" style=\"background: #f7e08b;\" (click)=\"login()\">\n <i class=\"fas fa-sign-in-alt\"></i>\u0110\u0103ng nh\u1EADp\n </a>\n </div>\n <div class=\"module-icons\">\n <h1>{{environment.appMetadata.main.title}}</h1>\n <h2>{{environment.appMetadata.main.owner}}</h2>\n <div class=\"div1111-wrapper\">\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\" [config]=\"{'suppressScrollY': true}\">\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\n </tn-custom-scrollbar>\n\n <ng-container *ngIf=\"isOnMobile\">\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\n </ng-container>\n </div>\n </div>\n <div class=\"clock-wrapper\">\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\n </div>\n </div>\n\n <ng-template #appSwitcher>\n <div class=\"div1111\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <span>\n <a [style.background]=\"item.background\" (click)=\"switchApp(item)\">\n <i class=\"{{item.icon}} switcher-item-icon\" [style.color]=\"item.colorIcon\"></i>\n <span [style.color]=\"item.colorTitle\">{{ item.title | translate}}</span>\n </a>\n </span>\n </ng-container>\n </div>\n </ng-template>\n</ng-template>",
26639
26640
  providers: [ComponentContextService],
26640
26641
  styles: [".modules{background-color:#fff;font-family:monospace;background:url(/assets/images/splash-bg.png);background-repeat:no-repeat;background-position:50%;background-size:cover;position:fixed;top:0;left:0;z-index:100;display:flex;justify-content:center;align-items:center;width:100vw;height:100vh;flex-direction:column}.modules div>span{min-width:100px;height:100px;width:100px;margin:10px;box-shadow:1px 2px 9px 1px #bbb;white-space:normal}.modules div>span,.modules div>span>a{display:inline-block;border-radius:5px}.modules div>span>a{height:100%;width:100%;color:#fff;text-decoration:unset;text-align:center;position:relative;font-weight:700;text-shadow:2px 3px 3px hsla(0,0%,42.7%,.4392156862745098);cursor:pointer}.modules div>span>a i{animation:in 1s}.modules div>span>a:hover i{animation:out 1s}@media (max-width:1370px){.modules{justify-content:flex-start;overflow:auto}.module-icons.module-icons{margin-bottom:20px}.welcome-user.welcome-user{margin-top:30px;margin-bottom:30px}.welcome-user.welcome-user img{width:100px;height:100px}.clock{margin:0 20px;font-size:1.5em}.data-time{margin:10px 0 20px;font-size:1em}}.modules div>span>a>span{display:inline-block;color:#fff;text-decoration:unset;text-align:center;position:absolute;bottom:10px;width:100%;left:0}.modules div>span.implementing{background-color:#fff;box-shadow:none}.modules div>span>a>i{font-size:3em;position:absolute;top:10px;width:100%;left:0}.div22{width:240px}.div33{width:360px}.div44{width:480px}.div55{width:600px}.div88{width:960px}::ng-deep .flexcolumn{max-width:calc(100vh - 20px)}.div1111-wrapper{width:100%;overflow:auto}.div1111{white-space:nowrap}.module-icons{color:#666;width:100%}.module-icons,.welcome-user{margin-bottom:80px;text-align:center}.welcome-user a{background:#c2f3c3;padding:6px;border-radius:3px;cursor:pointer}.welcome-user a i{margin-right:6px}.welcome-user img{border-radius:50%;border:2px dashed rgba(0,144,162,.5019607843137255);height:200px;width:200px;-o-object-fit:contain;object-fit:contain}.welcome-user h2{color:#0090a2}.clock-wrapper{color:rgba(0,144,162,.6666666666666666);font-size:2em;text-align:center}.loader{color:#607d8b;font-size:8px;width:1em;height:1em;border-radius:50%;position:absolute;text-indent:-9999em;animation:load4 1.3s linear infinite;transform:translate(-50%,-50%);top:50%;left:50%}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
26641
26642
  },] }
@@ -46845,7 +46846,7 @@
46845
46846
  _this.showSettings = false;
46846
46847
  _this.allSubscriptions = [];
46847
46848
  _this.message = '';
46848
- _this.UserRedirectType = UserRedirectType;
46849
+ _this.UserRedirectType = UserRedirectType$1;
46849
46850
  _this.openNewTab = false;
46850
46851
  _this.environment = _this._moduleConfigService.getConfig().environment;
46851
46852
  _this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
@@ -47079,7 +47080,7 @@
47079
47080
  this.onTopbarSearchClick(event, input);
47080
47081
  };
47081
47082
  AppTopBarV1Component.prototype.switchApp = function (item, redirectType) {
47082
- if (redirectType === void 0) { redirectType = UserRedirectType.DEFAULT; }
47083
+ if (redirectType === void 0) { redirectType = UserRedirectType$1.DEFAULT; }
47083
47084
  if (item.target == '_blank') {
47084
47085
  if (!item.defaultRedirect) {
47085
47086
  item.defaultRedirect = '';
@@ -47097,7 +47098,7 @@
47097
47098
  }
47098
47099
  else {
47099
47100
  if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
47100
- if (redirectType != null && redirectType == UserRedirectType.PERSONAL_INFO) {
47101
+ if (redirectType != null && redirectType == UserRedirectType$1.PERSONAL_INFO) {
47101
47102
  this._router.navigateByUrl(item.userProfileUrl);
47102
47103
  }
47103
47104
  else {
@@ -47136,7 +47137,7 @@
47136
47137
  this.rootContext.fireEvent('GO_HOME');
47137
47138
  };
47138
47139
  AppTopBarV1Component.prototype.onEditInfo = function (event, redirectType) {
47139
- if (redirectType === void 0) { redirectType = UserRedirectType.DEFAULT; }
47140
+ if (redirectType === void 0) { redirectType = UserRedirectType$1.DEFAULT; }
47140
47141
  event.preventDefault();
47141
47142
  var currentAppSetting = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
47142
47143
  if (currentAppSetting) {
@@ -47272,11 +47273,11 @@
47272
47273
  notify: [{ type: i0.ViewChild, args: ['notify', { static: true },] }],
47273
47274
  messages: [{ type: i0.ViewChild, args: ['messages', { static: true },] }]
47274
47275
  };
47275
- var UserRedirectType;
47276
+ var UserRedirectType$1;
47276
47277
  (function (UserRedirectType) {
47277
47278
  UserRedirectType[UserRedirectType["PERSONAL_INFO"] = 0] = "PERSONAL_INFO";
47278
47279
  UserRedirectType[UserRedirectType["DEFAULT"] = 1] = "DEFAULT";
47279
- })(UserRedirectType || (UserRedirectType = {}));
47280
+ })(UserRedirectType$1 || (UserRedirectType$1 = {}));
47280
47281
 
47281
47282
  var AppTopBarV2Component = /** @class */ (function (_super) {
47282
47283
  __extends(AppTopBarV2Component, _super);
@@ -47446,7 +47447,448 @@
47446
47447
  this.defaultDataSetting = 'Thiết lập tham số mặc định';
47447
47448
  }
47448
47449
  };
47449
- AppTopBarV2Component.prototype.ngOnDestroy = function () {
47450
+ AppTopBarV2Component.prototype.ngOnDestroy = function () {
47451
+ this.allSubscriptions.forEach(function (element) {
47452
+ element.unsubscribe();
47453
+ });
47454
+ if (this.intervalCountdown) {
47455
+ clearInterval(this.intervalCountdown);
47456
+ }
47457
+ _super.prototype.ngOnDestroy.call(this);
47458
+ };
47459
+ AppTopBarV2Component.prototype.formatDefaultDataSetting = function (data) {
47460
+ var _this = this;
47461
+ var dataSetting = '';
47462
+ var fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
47463
+ var fieldPluses = ['code', 'code', 'ten', 'ten', 'ten', 'ten', 'ten'];
47464
+ fields.forEach(function (field, index) {
47465
+ if (!_this.checkHidden(field)) {
47466
+ var _f = "" + field + fieldPluses[index];
47467
+ if (data[_f]) {
47468
+ dataSetting += data[_f] + '/';
47469
+ }
47470
+ }
47471
+ });
47472
+ if (dataSetting.length > 0) {
47473
+ dataSetting = dataSetting.substring(0, dataSetting.length - 1);
47474
+ }
47475
+ this.defaultDataSetting = dataSetting;
47476
+ };
47477
+ AppTopBarV2Component.prototype.checkHidden = function (field) {
47478
+ return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(function (p) { return p.field == field; });
47479
+ };
47480
+ AppTopBarV2Component.prototype.getCurrentUserFullName = function () {
47481
+ return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
47482
+ };
47483
+ AppTopBarV2Component.prototype.getCurrentUserPosition = function () {
47484
+ return this.userProfile ? this.userProfile.tenDonVi : null;
47485
+ };
47486
+ AppTopBarV2Component.prototype.getCurrentUserAvatar = function () {
47487
+ if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
47488
+ return this.fileApi + "/public/" + this.rootContext.data.currentUser.avatar + "/Download";
47489
+ }
47490
+ else {
47491
+ return this.defaultAvatar;
47492
+ }
47493
+ };
47494
+ AppTopBarV2Component.prototype.clearFilter = function (input) {
47495
+ var _this = this;
47496
+ setTimeout(function () {
47497
+ _this.model.searchModel[_this.model.fieldKey] = '';
47498
+ _this._customRouteService.updateFragment(_this.model.fieldKey, null);
47499
+ _this._customRouteService.updateWithoutFireEvent();
47500
+ _this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, _this.model.searchModel);
47501
+ input.value = '';
47502
+ input.focus();
47503
+ _this._cd.detectChanges();
47504
+ });
47505
+ };
47506
+ AppTopBarV2Component.prototype.toggleAdvanceSearch = function (evt) {
47507
+ this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
47508
+ evt.preventDefault();
47509
+ evt.cancelBubble = true;
47510
+ };
47511
+ AppTopBarV2Component.prototype.hideAdvanceSearch = function (evt) {
47512
+ if (document.getElementById('advance-search-box')) {
47513
+ var mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
47514
+ if (!mask.length) {
47515
+ var closestDropdown = evt.target.closest('.dropdown-advs');
47516
+ if (closestDropdown == null || closestDropdown.length == 0) {
47517
+ this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_HIDE_BOX, { event: evt });
47518
+ }
47519
+ }
47520
+ }
47521
+ };
47522
+ AppTopBarV2Component.prototype.focusToSearchBox = function () {
47523
+ if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
47524
+ this.input.nativeElement.focus();
47525
+ }
47526
+ };
47527
+ AppTopBarV2Component.prototype.onTopbarSearchClick = function (event, input) {
47528
+ var _this = this;
47529
+ if (!this.model.fieldKey) {
47530
+ return;
47531
+ }
47532
+ setTimeout(function () {
47533
+ _this.rootContext.fireEvent(ComCtxConstants.ROOT.ON_SEARCH, _this.model.searchModel);
47534
+ _this._customRouteService.updateFragment(_this.model.fieldKey, input.value);
47535
+ _this._customRouteService.updateWithoutFireEvent();
47536
+ input.focus();
47537
+ });
47538
+ };
47539
+ AppTopBarV2Component.prototype.onEsc = function (event, input) {
47540
+ this.clearFilter(input);
47541
+ };
47542
+ AppTopBarV2Component.prototype.onEnter = function (event, input) {
47543
+ this.onTopbarSearchClick(event, input);
47544
+ };
47545
+ AppTopBarV2Component.prototype.switchApp = function (item) {
47546
+ if (item.target == '_blank') {
47547
+ if (!item.defaultRedirect) {
47548
+ item.defaultRedirect = '';
47549
+ }
47550
+ // NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
47551
+ if (item.url == item.defaultRedirect) {
47552
+ item.url = '/' + item.code.toLowerCase();
47553
+ }
47554
+ if (!this.openNewTab) {
47555
+ top.location.href = item.url + "/" + item.defaultRedirect;
47556
+ }
47557
+ else {
47558
+ window.open(item.url + "/" + item.defaultRedirect, '_blank');
47559
+ }
47560
+ }
47561
+ else {
47562
+ if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
47563
+ this._router.navigateByUrl(item.defaultRedirect);
47564
+ this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
47565
+ if (this.rootContext.data.currentAppMetadata
47566
+ && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
47567
+ && this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
47568
+ this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
47569
+ }
47570
+ }
47571
+ }
47572
+ };
47573
+ AppTopBarV2Component.prototype.hasAdvanceSearchBox = function () {
47574
+ return this.model.searchModel.hasAdvanceSearch;
47575
+ };
47576
+ AppTopBarV2Component.prototype.isAdvanceSearching = function () {
47577
+ return this.hasAdvanceSearchValue(this.model.searchModel);
47578
+ };
47579
+ AppTopBarV2Component.prototype.hasAdvanceSearchValue = function (obj) {
47580
+ for (var key in obj) {
47581
+ if (key === '_k' || key === 'hasAdvanceSearch') {
47582
+ continue;
47583
+ }
47584
+ if (obj[key] != null && obj[key] != '') {
47585
+ return false;
47586
+ }
47587
+ }
47588
+ return true;
47589
+ };
47590
+ AppTopBarV2Component.prototype.getComponentId = function () {
47591
+ return 'TOPBAR';
47592
+ };
47593
+ AppTopBarV2Component.prototype.goToHome = function () {
47594
+ this.rootContext.fireEvent('GO_HOME');
47595
+ };
47596
+ AppTopBarV2Component.prototype.onEditInfo = function (event) {
47597
+ event.preventDefault();
47598
+ var currentAppSetting = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
47599
+ if (currentAppSetting) {
47600
+ this.switchApp(currentAppSetting);
47601
+ }
47602
+ else {
47603
+ console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
47604
+ }
47605
+ };
47606
+ AppTopBarV2Component.prototype.onChangePassword = function (event) {
47607
+ event.preventDefault();
47608
+ // this.changePassword.showPopup(this._userService.getId());
47609
+ };
47610
+ AppTopBarV2Component.prototype.onTopbarLogout = function () {
47611
+ if (!localStorage.getItem('currentUrl')) {
47612
+ localStorage.setItem('currentUrl', top.location.href);
47613
+ }
47614
+ this._authenService.logout();
47615
+ };
47616
+ AppTopBarV2Component.prototype.settingDefault = function () {
47617
+ this.model.dataModelSetting = {
47618
+ data: {},
47619
+ showSettings: true
47620
+ };
47621
+ };
47622
+ AppTopBarV2Component.prototype.onShowSettings = function (ev) {
47623
+ this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
47624
+ };
47625
+ AppTopBarV2Component.prototype.onCloseSettings = function (ev) {
47626
+ this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
47627
+ };
47628
+ AppTopBarV2Component.prototype.showProfilePage = function () {
47629
+ if (this._userService.isSinhVienAccount()) {
47630
+ return false;
47631
+ }
47632
+ return true;
47633
+ };
47634
+ AppTopBarV2Component.prototype.login = function () {
47635
+ this.rootContext.fireEvent('LOGIN');
47636
+ };
47637
+ AppTopBarV2Component.prototype.setNotify = function (message) {
47638
+ this.message = message;
47639
+ };
47640
+ AppTopBarV2Component.prototype.handleMouseOver = function (evt) {
47641
+ evt.target.stop();
47642
+ };
47643
+ AppTopBarV2Component.prototype.handleMouseOut = function (evt) {
47644
+ evt.target.start();
47645
+ };
47646
+ AppTopBarV2Component.prototype.showNotificationReload = function () {
47647
+ var _this = this;
47648
+ this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
47649
+ this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
47650
+ this._notifierService.showConfirm(this.message).then(function (res) {
47651
+ _this.reloadWindow();
47652
+ });
47653
+ // if (this.intervalCountdown) {
47654
+ // clearInterval(this.intervalCountdown);
47655
+ // }
47656
+ // const date = new Date();
47657
+ // const goalDate = (new Date(date.getTime() + 10 * 1000)).getTime(); // Đếm 10s
47658
+ // this.intervalCountdown = setInterval(f => {
47659
+ // const now = new Date().getTime();
47660
+ // const distance = goalDate - now;
47661
+ // var seconds = Math.floor(distance / 1000);
47662
+ // // If the count down is finished, write some text
47663
+ // if (distance < 0) {
47664
+ // clearInterval(this.intervalCountdown);
47665
+ // this.reloadWindow();
47666
+ // return;
47667
+ // }
47668
+ // let message = `Trình duyệt sẽ khởi động lại sau ${seconds}s`;
47669
+ // if (seconds < 1) {
47670
+ // message = 'Trình duyệt sẽ khởi động lại ngay bây giờ';
47671
+ // }
47672
+ // this._notifierService.showConfirm(
47673
+ // message, null, null, false, this._translateService.instant('CONFIRM.ACCEPT_LABEL'),
47674
+ // 'pi pi-check'
47675
+ // ).then(res => {
47676
+ // clearInterval(this.intervalCountdown);
47677
+ // this.reloadWindow();
47678
+ // });
47679
+ // }, 1000);
47680
+ };
47681
+ AppTopBarV2Component.prototype.getOwner = function () {
47682
+ // đổi ngược title và owner theo application.json
47683
+ return this.environment.appMetadata.main.reverseTopbarTitle == null || this.environment.appMetadata.main.reverseTopbarTitle == false
47684
+ ? this.environment.appMetadata.main.owner
47685
+ : this.environment.appMetadata.main.titleShort;
47686
+ };
47687
+ AppTopBarV2Component.prototype.getTitle = function () {
47688
+ return this.environment.appMetadata.main.reverseTopbarTitle == null || this.environment.appMetadata.main.reverseTopbarTitle == false
47689
+ ? this.environment.appMetadata.main.titleShort
47690
+ : this.environment.appMetadata.main.owner;
47691
+ };
47692
+ AppTopBarV2Component.prototype.reloadWindow = function () {
47693
+ top.location.reload();
47694
+ };
47695
+ return AppTopBarV2Component;
47696
+ }(ComponentBase));
47697
+ AppTopBarV2Component.decorators = [
47698
+ { type: i0.Component, args: [{
47699
+ selector: 'app-topbar-v2',
47700
+ template: "<div class=\"topbar clearfix tn-l-top-bar\">\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\n <div class=\"tn-l-left-menu-toggle-block\">\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\n (click)=\"_commonService.onMenuButtonClick($event)\">\n <i class=\"pi pi-chevron-left\"></i>\n </a>\n </div>\n\n <div class=\"topbar-logo tn-l-logo-wrapper\">\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\" (click)=\"goToHome()\" /></a>\n </div>\n <div class=\"topbar-title tn-l-logo-title-block\">\n <div class=\"topbar-owner\">\n {{getTitle()}}\n </div>\n <div class=\"topbar-description\">\n {{getOwner()}}\n </div>\n </div>\n </div>\n <div class=\"setting-default-container\">\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\n (click)=\"settingDefault()\">\n </a>\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\n </ng-container>\n </div>\n <div #notify class=\"notify-message\">\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\n </div>\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\n oncontextmenu=\"return false\">\n <div class=\"tn-l-top-bar-right-block-1\">\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <span *ngIf=\"messages && messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\n </a>\n </div>\n\n <div class=\"tn-l-top-bar-right-block-2\">\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\n\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\n <div class=\"profile-image-wrapper topbar-icon-left\">\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\n [src]=\"getCurrentUserAvatar()\" />\n </div>\n <div class=\"profile-info-wrapper\">\n <div class=\"topbar-item-name-wrapper\"\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\n </div>\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\n </div>\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\n </a>\n\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\n <li *ngIf=\"currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\n <i class=\"pi pi-sign-out\"></i>\n <span>\u0110\u0103ng xu\u1EA5t</span>\n </a>\n </li>\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"login()\">\n <i class=\"pi pi-sign-in\"></i>\n <span>\u0110\u0103ng nh\u1EADp</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"_customizeUiService.isShowHelp()\" #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help>\n </li>\n <li *ngIf=\"_customizeUiService.isShowNotification()\" id=\"li-notifications\"\n class=\"tn-l-top-bar-menu-item\" #messages\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <!-- <i class=\"pi pi-microsoft\"></i> -->\n </span>\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\n </a>\n <ul class=\"app-switcher layout-menu fadeInDown\">\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\n (click)=\"switchApp(item)\">\n <span class=\"tn-l-switcher-item-inner\">\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\n <div class=\"tn-l-switcher-item-label\">\n {{ item.title | translate}}\n </div>\n </span>\n </a>\n </ng-container>\n </li>\n </tn-custom-scrollbar>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</div>",
47701
+ providers: [ComponentContextService],
47702
+ styles: [".topBarSearchButton:disabled{opacity:1;background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{margin-top:0;float:none}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;justify-content:center;order:0;text-align:right;float:none}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{align-self:stretch;display:flex;align-items:center;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941)}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{width:auto;height:40px;margin:0}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{margin:0;font-size:0;width:auto;height:auto;padding-left:8px;padding-right:8px}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{float:none;width:auto;display:flex}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{width:30px;height:28px;margin:auto;display:block}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{display:flex;align-items:center;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{white-space:nowrap;color:#ff0;font-size:500}.search-item{margin-right:10px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{background:#fff}.tn-l-switcher-item-label{text-shadow:none;color:#52abff;text-align:center}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{font-size:38px;margin:5px auto;text-shadow:none;color:#52abff}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{width:unset;margin-top:0}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+0){border-left:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1){border-right:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2){border:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a span{line-height:1.2}::ng-deep .layout-wrapper app-topbar-v2 .topbar .topbar-left{box-shadow:none}::ng-deep .layout-wrapper app-topbar-v2 .wrapper-appswitch{text-align:center;display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}@media (max-width:1024px){::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{display:flex;justify-content:space-between;align-items:center}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{margin:0;display:flex;justify-content:flex-start;flex-direction:row-reverse;align-items:center}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{display:flex;align-items:center;justify-content:center;height:36px;font-size:28px;width:36px;color:#fff}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{display:flex;align-items:center;width:36px;justify-content:center}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{display:flex;padding:0 .5em;align-items:center;justify-content:flex-end}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{position:relative;margin-left:.5em;top:0;right:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{width:220px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{display:flex;justify-content:center;align-items:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
47703
+ },] }
47704
+ ];
47705
+ AppTopBarV2Component.ctorParameters = function () { return [
47706
+ { type: CustomRouterService },
47707
+ { type: i3.Router },
47708
+ { type: CommonService },
47709
+ { type: AuthenService },
47710
+ { type: i0.ChangeDetectorRef },
47711
+ { type: i0.Injector },
47712
+ { type: PermissionService },
47713
+ { type: ModuleConfigService },
47714
+ { type: UserService },
47715
+ { type: NotifierService },
47716
+ { type: i2.TranslateService },
47717
+ { type: CustomizeUiService }
47718
+ ]; };
47719
+ AppTopBarV2Component.propDecorators = {
47720
+ input: [{ type: i0.ViewChild, args: ['input',] }],
47721
+ notify: [{ type: i0.ViewChild, args: ['notify', { static: true },] }],
47722
+ messages: [{ type: i0.ViewChild, args: ['messages', { static: true },] }]
47723
+ };
47724
+
47725
+ var AppTopBarV3Component = /** @class */ (function (_super) {
47726
+ __extends(AppTopBarV3Component, _super);
47727
+ function AppTopBarV3Component(document, _customRouteService, _router, _commonService, _authenService, _cd, _injector, _permissionService, _moduleConfigService, _userService, _notifierService, _customizeUiService) {
47728
+ var _this = this;
47729
+ var _a;
47730
+ _this = _super.call(this, _injector) || this;
47731
+ _this.document = document;
47732
+ _this._customRouteService = _customRouteService;
47733
+ _this._router = _router;
47734
+ _this._commonService = _commonService;
47735
+ _this._authenService = _authenService;
47736
+ _this._cd = _cd;
47737
+ _this._permissionService = _permissionService;
47738
+ _this._moduleConfigService = _moduleConfigService;
47739
+ _this._userService = _userService;
47740
+ _this._notifierService = _notifierService;
47741
+ _this._customizeUiService = _customizeUiService;
47742
+ _this.defaultAvatar = '';
47743
+ _this.key = '';
47744
+ _this.currentRoute = '';
47745
+ _this.fileApi = '';
47746
+ _this.currentUser = null;
47747
+ _this.appSwitcherItems = [];
47748
+ _this.isFirstTime = false;
47749
+ _this.showSettings = false;
47750
+ _this.allSubscriptions = [];
47751
+ _this.message = '';
47752
+ _this.UserRedirectType = UserRedirectType;
47753
+ _this.openNewTab = false;
47754
+ _this.environment = _this._moduleConfigService.getConfig().environment;
47755
+ _this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
47756
+ _this.openNewTab = (_a = _this.environment.appMetadata.main.openNewTab) !== null && _a !== void 0 ? _a : true;
47757
+ _this.fileApi = _this.environment.apiDomain.fileEndpoint + "/" + _this.environment.apiVersion + "/FileObject";
47758
+ if (_this.rootContext.data.currentAppMetadata
47759
+ && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null
47760
+ && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
47761
+ _this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
47762
+ }
47763
+ else {
47764
+ if (_this.environment.appMetadata.main.showDefaultSetting != null && _this.environment.appMetadata.main.showDefaultSetting != undefined) {
47765
+ _this.showDefaultSetting = _this.environment.appMetadata.main.showDefaultSetting;
47766
+ }
47767
+ else {
47768
+ _this.showDefaultSetting = false;
47769
+ }
47770
+ }
47771
+ if (!_this.rootContext.data.currentUser) {
47772
+ _this.rootContext.data.currentUser = {};
47773
+ }
47774
+ _this.rootContext.replaySubscribeOnce(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
47775
+ _this.currentUser = _this._userService.getCurrentUser();
47776
+ _this.loadMenuMetadata();
47777
+ });
47778
+ if (_this.rootModel.allowAnonymous) {
47779
+ _this.loadMenuMetadata();
47780
+ }
47781
+ return _this;
47782
+ }
47783
+ AppTopBarV3Component.prototype.loadMenuMetadata = function () {
47784
+ var _this = this;
47785
+ var prmsAppSwicherItem = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
47786
+ var arr, _b, _c, _i, ind, element, clientId, isAuthorized;
47787
+ return __generator(this, function (_d) {
47788
+ switch (_d.label) {
47789
+ case 0:
47790
+ arr = [];
47791
+ _b = [];
47792
+ for (_c in this.environment.appMetadata.appSwitcher)
47793
+ _b.push(_c);
47794
+ _i = 0;
47795
+ _d.label = 1;
47796
+ case 1:
47797
+ if (!(_i < _b.length)) return [3 /*break*/, 5];
47798
+ ind = _b[_i];
47799
+ element = this.environment.appMetadata.appSwitcher[ind];
47800
+ clientId = this.environment.authenticationSettings.clientId;
47801
+ if (!(this.rootContext.data.allowAnonymous && element.allowAnonymous)) return [3 /*break*/, 2];
47802
+ arr.push(element);
47803
+ return [3 /*break*/, 4];
47804
+ case 2:
47805
+ if (!this.currentUser) return [3 /*break*/, 4];
47806
+ return [4 /*yield*/, this._permissionService.isAuthorized(element.code, (element.code + ".MODULE." + element.code).toUpperCase(), true)];
47807
+ case 3:
47808
+ isAuthorized = _d.sent();
47809
+ if (isAuthorized) {
47810
+ arr.push(element);
47811
+ }
47812
+ _d.label = 4;
47813
+ case 4:
47814
+ _i++;
47815
+ return [3 /*break*/, 1];
47816
+ case 5:
47817
+ resolve(arr);
47818
+ return [2 /*return*/];
47819
+ }
47820
+ });
47821
+ }); });
47822
+ prmsAppSwicherItem.then(function (rs) {
47823
+ if (rs) {
47824
+ var currentUser_1 = _this._userService.getCurrentUser();
47825
+ _this.appSwitcherItems.length = 0;
47826
+ rs.forEach(function (element) {
47827
+ if (element.visible) {
47828
+ if (element.allowAnonymous) {
47829
+ _this.appSwitcherItems.push(element);
47830
+ }
47831
+ else {
47832
+ if (currentUser_1.maNguoiHoc && currentUser_1.issuperuser && currentUser_1.issuperuser.toLowerCase() != 'true') {
47833
+ if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
47834
+ _this.appSwitcherItems.push(element);
47835
+ }
47836
+ }
47837
+ else {
47838
+ _this.appSwitcherItems.push(element);
47839
+ }
47840
+ }
47841
+ }
47842
+ });
47843
+ }
47844
+ });
47845
+ };
47846
+ AppTopBarV3Component.prototype.ngOnInit = function () {
47847
+ var _this = this;
47848
+ if (this.rootContext.data.currentUser) {
47849
+ if (this.rootContext.data.currentUser.gender == 0) {
47850
+ this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
47851
+ }
47852
+ else {
47853
+ this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
47854
+ }
47855
+ this.userProfile = this._userService.getProfileInfo();
47856
+ }
47857
+ this.rootContext.subscribe(ComCtxConstants.ROOT.BODY_MOUSE_DOWN, function (e) {
47858
+ setTimeout(function () {
47859
+ _this.hideAdvanceSearch(e);
47860
+ });
47861
+ });
47862
+ this.rootContext.subscribe(ComCtxConstants.ROOT.KEY_DOWN_CTRL_F, function (e) {
47863
+ _this.focusToSearchBox();
47864
+ });
47865
+ this.rootContext.subscribe(ComCtxConstants.COMMON.FORCE_RELOAD, function (e) {
47866
+ _this.showNotificationReload();
47867
+ });
47868
+ this.rootContext.subscribe(ComCtxConstants.COMMON.SHOW_NOTIFY, function (e) {
47869
+ _this.setNotify(e.message);
47870
+ });
47871
+ this.allSubscriptions.push(this.rootContext.subscribe(ComCtxConstants.ROOT_USMART.SHOW_CONFIG_DATA_DEFAULT, function (e) {
47872
+ _this.model.dataModelSetting.showSettings = true;
47873
+ }));
47874
+ this.model.dataModelSetting = {
47875
+ data: {},
47876
+ showSettings: false
47877
+ };
47878
+ this.subscribe(ComCtxConstants.COMMON.SAVE_DATA_DEFAULT, function (data) {
47879
+ _this.formatDefaultDataSetting(data);
47880
+ _this.reloadWindow();
47881
+ });
47882
+ var stringDataDefault = localStorage.getItem(ComCtxConstants.LOCALSTORAGE_KEY.DEFAULT_DATA);
47883
+ if (stringDataDefault) {
47884
+ var dataCacheDefault = JSON.parse(stringDataDefault);
47885
+ this.formatDefaultDataSetting(dataCacheDefault);
47886
+ }
47887
+ else {
47888
+ this.defaultDataSetting = 'Thiết lập tham số mặc định';
47889
+ }
47890
+ };
47891
+ AppTopBarV3Component.prototype.ngOnDestroy = function () {
47450
47892
  this.allSubscriptions.forEach(function (element) {
47451
47893
  element.unsubscribe();
47452
47894
  });
@@ -47455,7 +47897,7 @@
47455
47897
  }
47456
47898
  _super.prototype.ngOnDestroy.call(this);
47457
47899
  };
47458
- AppTopBarV2Component.prototype.formatDefaultDataSetting = function (data) {
47900
+ AppTopBarV3Component.prototype.formatDefaultDataSetting = function (data) {
47459
47901
  var _this = this;
47460
47902
  var dataSetting = '';
47461
47903
  var fields = ['instanceIdHeDaoTao', 'heDaoTao', 'namHoc', 'hocKy', 'instanceIdNamHoc', 'instanceIdHocKy', 'idDotThi'];
@@ -47473,16 +47915,16 @@
47473
47915
  }
47474
47916
  this.defaultDataSetting = dataSetting;
47475
47917
  };
47476
- AppTopBarV2Component.prototype.checkHidden = function (field) {
47918
+ AppTopBarV3Component.prototype.checkHidden = function (field) {
47477
47919
  return this.rootModel.currentAppMetadata.configDefaultSetting && !this.rootModel.currentAppMetadata.configDefaultSetting.column.some(function (p) { return p.field == field; });
47478
47920
  };
47479
- AppTopBarV2Component.prototype.getCurrentUserFullName = function () {
47921
+ AppTopBarV3Component.prototype.getCurrentUserFullName = function () {
47480
47922
  return this.rootContext.data.currentUser && this.rootContext.data.currentUser.fullName ? this.rootContext.data.currentUser.fullName : 'Khách';
47481
47923
  };
47482
- AppTopBarV2Component.prototype.getCurrentUserPosition = function () {
47924
+ AppTopBarV3Component.prototype.getCurrentUserPosition = function () {
47483
47925
  return this.userProfile ? this.userProfile.tenDonVi : null;
47484
47926
  };
47485
- AppTopBarV2Component.prototype.getCurrentUserAvatar = function () {
47927
+ AppTopBarV3Component.prototype.getCurrentUserAvatar = function () {
47486
47928
  if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
47487
47929
  return this.fileApi + "/public/" + this.rootContext.data.currentUser.avatar + "/Download";
47488
47930
  }
@@ -47490,7 +47932,7 @@
47490
47932
  return this.defaultAvatar;
47491
47933
  }
47492
47934
  };
47493
- AppTopBarV2Component.prototype.clearFilter = function (input) {
47935
+ AppTopBarV3Component.prototype.clearFilter = function (input) {
47494
47936
  var _this = this;
47495
47937
  setTimeout(function () {
47496
47938
  _this.model.searchModel[_this.model.fieldKey] = '';
@@ -47502,12 +47944,12 @@
47502
47944
  _this._cd.detectChanges();
47503
47945
  });
47504
47946
  };
47505
- AppTopBarV2Component.prototype.toggleAdvanceSearch = function (evt) {
47947
+ AppTopBarV3Component.prototype.toggleAdvanceSearch = function (evt) {
47506
47948
  this.rootContext.fireEvent(ComCtxConstants.ROOT.ADVANCE_SEARCH_TOGGLE_BOX, { event: evt });
47507
47949
  evt.preventDefault();
47508
47950
  evt.cancelBubble = true;
47509
47951
  };
47510
- AppTopBarV2Component.prototype.hideAdvanceSearch = function (evt) {
47952
+ AppTopBarV3Component.prototype.hideAdvanceSearch = function (evt) {
47511
47953
  if (document.getElementById('advance-search-box')) {
47512
47954
  var mask = document.body.querySelectorAll('div[class~="ui-dialog-mask"]');
47513
47955
  if (!mask.length) {
@@ -47518,12 +47960,12 @@
47518
47960
  }
47519
47961
  }
47520
47962
  };
47521
- AppTopBarV2Component.prototype.focusToSearchBox = function () {
47963
+ AppTopBarV3Component.prototype.focusToSearchBox = function () {
47522
47964
  if (!document.body.querySelector('div[class~="ui-dialog-mask"]')) {
47523
47965
  this.input.nativeElement.focus();
47524
47966
  }
47525
47967
  };
47526
- AppTopBarV2Component.prototype.onTopbarSearchClick = function (event, input) {
47968
+ AppTopBarV3Component.prototype.onTopbarSearchClick = function (event, input) {
47527
47969
  var _this = this;
47528
47970
  if (!this.model.fieldKey) {
47529
47971
  return;
@@ -47535,13 +47977,14 @@
47535
47977
  input.focus();
47536
47978
  });
47537
47979
  };
47538
- AppTopBarV2Component.prototype.onEsc = function (event, input) {
47980
+ AppTopBarV3Component.prototype.onEsc = function (event, input) {
47539
47981
  this.clearFilter(input);
47540
47982
  };
47541
- AppTopBarV2Component.prototype.onEnter = function (event, input) {
47983
+ AppTopBarV3Component.prototype.onEnter = function (event, input) {
47542
47984
  this.onTopbarSearchClick(event, input);
47543
47985
  };
47544
- AppTopBarV2Component.prototype.switchApp = function (item) {
47986
+ AppTopBarV3Component.prototype.switchApp = function (item, redirectType) {
47987
+ if (redirectType === void 0) { redirectType = UserRedirectType.DEFAULT; }
47545
47988
  if (item.target == '_blank') {
47546
47989
  if (!item.defaultRedirect) {
47547
47990
  item.defaultRedirect = '';
@@ -47559,7 +48002,12 @@
47559
48002
  }
47560
48003
  else {
47561
48004
  if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
47562
- this._router.navigateByUrl(item.defaultRedirect);
48005
+ if (redirectType != null && redirectType == UserRedirectType.PERSONAL_INFO) {
48006
+ this._router.navigateByUrl(item.userProfileUrl);
48007
+ }
48008
+ else {
48009
+ this._router.navigateByUrl(item.defaultRedirect);
48010
+ }
47563
48011
  this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
47564
48012
  if (this.rootContext.data.currentAppMetadata
47565
48013
  && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined
@@ -47569,13 +48017,13 @@
47569
48017
  }
47570
48018
  }
47571
48019
  };
47572
- AppTopBarV2Component.prototype.hasAdvanceSearchBox = function () {
48020
+ AppTopBarV3Component.prototype.hasAdvanceSearchBox = function () {
47573
48021
  return this.model.searchModel.hasAdvanceSearch;
47574
48022
  };
47575
- AppTopBarV2Component.prototype.isAdvanceSearching = function () {
48023
+ AppTopBarV3Component.prototype.isAdvanceSearching = function () {
47576
48024
  return this.hasAdvanceSearchValue(this.model.searchModel);
47577
48025
  };
47578
- AppTopBarV2Component.prototype.hasAdvanceSearchValue = function (obj) {
48026
+ AppTopBarV3Component.prototype.hasAdvanceSearchValue = function (obj) {
47579
48027
  for (var key in obj) {
47580
48028
  if (key === '_k' || key === 'hasAdvanceSearch') {
47581
48029
  continue;
@@ -47586,63 +48034,70 @@
47586
48034
  }
47587
48035
  return true;
47588
48036
  };
47589
- AppTopBarV2Component.prototype.getComponentId = function () {
48037
+ AppTopBarV3Component.prototype.getComponentId = function () {
47590
48038
  return 'TOPBAR';
47591
48039
  };
47592
- AppTopBarV2Component.prototype.goToHome = function () {
48040
+ AppTopBarV3Component.prototype.goToHome = function () {
47593
48041
  this.rootContext.fireEvent('GO_HOME');
47594
48042
  };
47595
- AppTopBarV2Component.prototype.onEditInfo = function (event) {
48043
+ AppTopBarV3Component.prototype.onEditInfo = function (event, redirectType) {
48044
+ if (redirectType === void 0) { redirectType = UserRedirectType.DEFAULT; }
47596
48045
  event.preventDefault();
47597
48046
  var currentAppSetting = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
47598
48047
  if (currentAppSetting) {
47599
- this.switchApp(currentAppSetting);
48048
+ this.switchApp(currentAppSetting, redirectType);
47600
48049
  }
47601
48050
  else {
47602
48051
  console.error('Bạn chưa thiết lập metadata cho trang cá nhân');
47603
48052
  }
47604
48053
  };
47605
- AppTopBarV2Component.prototype.onChangePassword = function (event) {
48054
+ AppTopBarV3Component.prototype.onChangePassword = function (event) {
47606
48055
  event.preventDefault();
47607
- // this.changePassword.showPopup(this._userService.getId());
48056
+ var domain = this.environment.clientDomain.appDomain;
48057
+ var subPath = 'user';
48058
+ // vì DHGTVT dùng đồng thời userv5 và userv4
48059
+ if (this.environment.maTruong == 'DHGTVT') {
48060
+ subPath = 'userv5';
48061
+ }
48062
+ this.document.location.href = domain + "/" + subPath + "/change-password";
47608
48063
  };
47609
- AppTopBarV2Component.prototype.onTopbarLogout = function () {
48064
+ AppTopBarV3Component.prototype.onTopbarLogout = function () {
47610
48065
  if (!localStorage.getItem('currentUrl')) {
47611
48066
  localStorage.setItem('currentUrl', top.location.href);
47612
48067
  }
47613
48068
  this._authenService.logout();
47614
48069
  };
47615
- AppTopBarV2Component.prototype.settingDefault = function () {
48070
+ AppTopBarV3Component.prototype.settingDefault = function () {
47616
48071
  this.model.dataModelSetting = {
47617
48072
  data: {},
47618
48073
  showSettings: true
47619
48074
  };
47620
48075
  };
47621
- AppTopBarV2Component.prototype.onShowSettings = function (ev) {
48076
+ AppTopBarV3Component.prototype.onShowSettings = function (ev) {
47622
48077
  this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_OPENED);
47623
48078
  };
47624
- AppTopBarV2Component.prototype.onCloseSettings = function (ev) {
48079
+ AppTopBarV3Component.prototype.onCloseSettings = function (ev) {
47625
48080
  this.rootContext.fireEvent(ComCtxConstants.ROOT_USMART.CONFIG_DATA_DEFAULT_CLOSED);
47626
48081
  };
47627
- AppTopBarV2Component.prototype.showProfilePage = function () {
48082
+ AppTopBarV3Component.prototype.showProfilePage = function () {
47628
48083
  if (this._userService.isSinhVienAccount()) {
47629
48084
  return false;
47630
48085
  }
47631
48086
  return true;
47632
48087
  };
47633
- AppTopBarV2Component.prototype.login = function () {
48088
+ AppTopBarV3Component.prototype.login = function () {
47634
48089
  this.rootContext.fireEvent('LOGIN');
47635
48090
  };
47636
- AppTopBarV2Component.prototype.setNotify = function (message) {
48091
+ AppTopBarV3Component.prototype.setNotify = function (message) {
47637
48092
  this.message = message;
47638
48093
  };
47639
- AppTopBarV2Component.prototype.handleMouseOver = function (evt) {
48094
+ AppTopBarV3Component.prototype.handleMouseOver = function (evt) {
47640
48095
  evt.target.stop();
47641
48096
  };
47642
- AppTopBarV2Component.prototype.handleMouseOut = function (evt) {
48097
+ AppTopBarV3Component.prototype.handleMouseOut = function (evt) {
47643
48098
  evt.target.start();
47644
48099
  };
47645
- AppTopBarV2Component.prototype.showNotificationReload = function () {
48100
+ AppTopBarV3Component.prototype.showNotificationReload = function () {
47646
48101
  var _this = this;
47647
48102
  this.message = 'Hệ thống có phiên bản mới, hãy refresh trình duyệt để cập nhật';
47648
48103
  this.rootContext.fireEvent(ComCtxConstants.ROOT.SHOW_REJECT_CONFIRM, false);
@@ -47677,31 +48132,33 @@
47677
48132
  // });
47678
48133
  // }, 1000);
47679
48134
  };
47680
- AppTopBarV2Component.prototype.getOwner = function () {
48135
+ AppTopBarV3Component.prototype.getOwner = function () {
47681
48136
  // đổi ngược title và owner theo application.json
47682
48137
  return this.environment.appMetadata.main.reverseTopbarTitle == null || this.environment.appMetadata.main.reverseTopbarTitle == false
47683
48138
  ? this.environment.appMetadata.main.owner
47684
48139
  : this.environment.appMetadata.main.titleShort;
47685
48140
  };
47686
- AppTopBarV2Component.prototype.getTitle = function () {
48141
+ AppTopBarV3Component.prototype.getTitle = function () {
48142
+ // đổi ngược title và owner theo application.json
47687
48143
  return this.environment.appMetadata.main.reverseTopbarTitle == null || this.environment.appMetadata.main.reverseTopbarTitle == false
47688
48144
  ? this.environment.appMetadata.main.titleShort
47689
48145
  : this.environment.appMetadata.main.owner;
47690
48146
  };
47691
- AppTopBarV2Component.prototype.reloadWindow = function () {
48147
+ AppTopBarV3Component.prototype.reloadWindow = function () {
47692
48148
  top.location.reload();
47693
48149
  };
47694
- return AppTopBarV2Component;
48150
+ return AppTopBarV3Component;
47695
48151
  }(ComponentBase));
47696
- AppTopBarV2Component.decorators = [
48152
+ AppTopBarV3Component.decorators = [
47697
48153
  { type: i0.Component, args: [{
47698
- selector: 'app-topbar-v2',
47699
- template: "<div class=\"topbar clearfix tn-l-top-bar\">\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\n <div class=\"tn-l-left-menu-toggle-block\">\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\n (click)=\"_commonService.onMenuButtonClick($event)\">\n <i class=\"pi pi-chevron-left\"></i>\n </a>\n </div>\n\n <div class=\"topbar-logo tn-l-logo-wrapper\">\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\" (click)=\"goToHome()\" /></a>\n </div>\n <div class=\"topbar-title tn-l-logo-title-block\">\n <div class=\"topbar-owner\">\n {{getTitle()}}\n </div>\n <div class=\"topbar-description\">\n {{getOwner()}}\n </div>\n </div>\n </div>\n <div class=\"setting-default-container\">\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\n (click)=\"settingDefault()\">\n </a>\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\n </ng-container>\n </div>\n <div #notify class=\"notify-message\">\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\n </div>\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\n oncontextmenu=\"return false\">\n <div class=\"tn-l-top-bar-right-block-1\">\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <span *ngIf=\"messages && messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\n </a>\n </div>\n\n <div class=\"tn-l-top-bar-right-block-2\">\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\n\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\n <div class=\"profile-image-wrapper topbar-icon-left\">\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\n [src]=\"getCurrentUserAvatar()\" />\n </div>\n <div class=\"profile-info-wrapper\">\n <div class=\"topbar-item-name-wrapper\"\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\n </div>\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\n </div>\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\n </a>\n\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\n <li *ngIf=\"currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\n <i class=\"pi pi-sign-out\"></i>\n <span>\u0110\u0103ng xu\u1EA5t</span>\n </a>\n </li>\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"login()\">\n <i class=\"pi pi-sign-in\"></i>\n <span>\u0110\u0103ng nh\u1EADp</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"_customizeUiService.isShowHelp()\" #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help>\n </li>\n <li *ngIf=\"_customizeUiService.isShowNotification()\" id=\"li-notifications\"\n class=\"tn-l-top-bar-menu-item\" #messages\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <!-- <i class=\"pi pi-microsoft\"></i> -->\n </span>\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\n </a>\n <ul class=\"app-switcher layout-menu fadeInDown\">\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\n (click)=\"switchApp(item)\">\n <span class=\"tn-l-switcher-item-inner\">\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\n <div class=\"tn-l-switcher-item-label\">\n {{ item.title | translate}}\n </div>\n </span>\n </a>\n </ng-container>\n </li>\n </tn-custom-scrollbar>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</div>",
48154
+ selector: 'app-topbar-v3',
48155
+ template: "<div class=\"topbar clearfix tn-l-top-bar\">\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\n <div class=\"tn-l-left-menu-toggle-block\">\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\n (click)=\"_commonService.onMenuButtonClick($event)\">\n <i class=\"pi pi-chevron-left\"></i>\n </a>\n </div>\n\n <div class=\"topbar-logo tn-l-logo-wrapper\">\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logoInside\"\n (click)=\"goToHome()\" /></a>\n </div>\n </div>\n <div class=\"setting-default-container\">\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\n (click)=\"settingDefault()\">\n </a>\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\n </ng-container>\n </div>\n <div #notify class=\"notify-message\">\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\n </div>\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\n oncontextmenu=\"return false\">\n <div class=\"tn-l-top-bar-right-block-1\">\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <span *ngIf=\"messages && messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\n </a>\n </div>\n\n <div class=\"tn-l-top-bar-right-block-2\">\n <ul class=\"topbar-items fadeInDown\" [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\n <li *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\" #profile\n class=\"profile-item tn-l-top-bar-menu-item\"\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\n\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\n <div class=\"profile-image-wrapper topbar-icon-left\">\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\n [src]=\"getCurrentUserAvatar()\" />\n </div>\n <div class=\"profile-info-wrapper\">\n <div class=\"topbar-item-name-wrapper\"\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\n </div>\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\n </div>\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\n </a>\n\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\n <ng-container *ngIf=\"currentUser\">\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-inbox\"></i>\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event, UserRedirectType.PERSONAL_INFO)\">\n <i class=\"pi pi-user-edit\"></i>\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"#\" (click)=\"onChangePassword($event)\">\n <i class=\"pi pi-key\"></i>\n <span>\u0110\u1ED5i m\u1EADt kh\u1EA9u</span>\n </a>\n </li>\n <li role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\n <i class=\"pi pi-sign-out\"></i>\n <span>\u0110\u0103ng xu\u1EA5t</span>\n </a>\n </li>\n </ng-container>\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"login()\">\n <i class=\"pi pi-sign-in\"></i>\n <span>\u0110\u0103ng nh\u1EADp</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"_customizeUiService.isShowHelp()\" #help class=\"menu-help tn-l-top-bar-menu-item\" tn-app-help>\n </li>\n <li *ngIf=\"_customizeUiService.isShowNotification()\" id=\"li-notifications\"\n class=\"tn-l-top-bar-menu-item\" #messages\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\n <a href=\"#\" tabindex=\"7\" class=\"tn-l-top-bar-menu-item-inner\" style=\"height: 30px;\"\n pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\n (click)=\"_commonService.onTopbarItemClick($event,modules)\">\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <!-- <i class=\"pi pi-microsoft\"></i> -->\n </span>\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\n </a>\n <ul class=\"app-switcher layout-menu fadeInDown\">\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\n <li role=\"menuitem\" class=\"wrapper-appswitch\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\n (click)=\"switchApp(item)\">\n <span class=\"tn-l-switcher-item-inner\">\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"></i>\n <div class=\"tn-l-switcher-item-label\">\n {{ item.title | translate}}\n </div>\n </span>\n </a>\n </ng-container>\n </li>\n </tn-custom-scrollbar>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n</div>",
47700
48156
  providers: [ComponentContextService],
47701
- styles: [".topBarSearchButton:disabled{opacity:1;background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{margin-top:0;float:none}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;justify-content:center;order:0;text-align:right;float:none}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{align-self:stretch;display:flex;align-items:center;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941)}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{width:auto;height:40px;margin:0}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{margin:0;font-size:0;width:auto;height:auto;padding-left:8px;padding-right:8px}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{float:none;width:auto;display:flex}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{width:30px;height:28px;margin:auto;display:block}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{display:flex;align-items:center;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{white-space:nowrap;color:#ff0;font-size:500}.search-item{margin-right:10px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{background:#fff}.tn-l-switcher-item-label{text-shadow:none;color:#52abff;text-align:center}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{font-size:38px;margin:5px auto;text-shadow:none;color:#52abff}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{width:unset;margin-top:0}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+0){border-left:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1){border-right:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2){border:none}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a span{line-height:1.2}::ng-deep .layout-wrapper app-topbar-v2 .topbar .topbar-left{box-shadow:none}::ng-deep .layout-wrapper app-topbar-v2 .wrapper-appswitch{text-align:center;display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}@media (max-width:1024px){::ng-deep .layout-wrapper app-topbar-v2 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{display:flex;justify-content:space-between;align-items:center}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{margin:0;display:flex;justify-content:flex-start;flex-direction:row-reverse;align-items:center}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{display:flex;align-items:center;justify-content:center;height:36px;font-size:28px;width:36px;color:#fff}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{display:flex;align-items:center;width:36px;justify-content:center}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{display:flex;padding:0 .5em;align-items:center;justify-content:flex-end}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{position:relative;margin-left:.5em;top:0;right:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{width:220px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{display:flex;justify-content:center;align-items:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
48157
+ styles: [".topBarSearchButton:disabled{opacity:1;background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{margin-top:0;float:none}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;justify-content:center;order:0;text-align:right;float:none}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{align-self:stretch;display:flex;align-items:center;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941)}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{width:auto;height:40px;margin:0}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{margin:0;font-size:0;width:auto;height:auto;padding-left:8px;padding-right:8px}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{float:none;width:auto;display:flex}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{width:30px;height:28px;margin:auto;display:block}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{display:flex;align-items:center;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{white-space:nowrap;color:#ff0;font-size:500}.search-item{margin-right:10px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{background:#fff}.tn-l-switcher-item-label{text-shadow:none;color:#52abff;text-align:center}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{font-size:38px;margin:5px auto;text-shadow:none;color:#52abff}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}::ng-deep .layout-wrapper app-topbar-v3 .layout-menu li a.switcher-item{width:unset;margin-top:0}::ng-deep .layout-wrapper app-topbar-v3 .layout-menu li a.switcher-item:nth-child(3n+0){border-left:none}::ng-deep .layout-wrapper app-topbar-v3 .layout-menu li a.switcher-item:nth-child(3n+1){border-right:none}::ng-deep .layout-wrapper app-topbar-v3 .layout-menu li a.switcher-item:nth-child(3n+2){border:none}::ng-deep .layout-wrapper app-topbar-v3 .layout-menu li a.switcher-item:nth-child(3n+1):last-child,::ng-deep .layout-wrapper app-topbar-v3 .layout-menu li a.switcher-item:nth-child(3n+2):last-child{width:unset}::ng-deep .layout-wrapper app-topbar-v3 .layout-menu li a span{line-height:1.2}::ng-deep .layout-wrapper app-topbar-v3 .topbar{background:#fff;border-bottom:1px solid red}::ng-deep .layout-wrapper app-topbar-v3 .topbar .topbar-left{box-shadow:none;background:#fff;border-bottom:1px solid red}::ng-deep .layout-wrapper app-topbar-v3 .topbar .topbar-left .tn-l-left-menu-toggle-block{background:red}::ng-deep .layout-wrapper app-topbar-v3 .topbar .topbar-left .topbar-logo.tn-l-logo-wrapper img.topbar-logo.tn-l-logo{height:46px}::ng-deep .layout-wrapper app-topbar-v3 .topbar .topbar-right{background:#fff;border-bottom:1px solid red}::ng-deep .layout-wrapper app-topbar-v3 .topbar .topbar-right .topbar-items>li .topbar-icon{color:#000}::ng-deep .layout-wrapper app-topbar-v3 .topbar .topbar-right .topbar-items>li .topbar-icon:hover{color:#777}::ng-deep .layout-wrapper app-topbar-v3 .topbar .topbar-right .topbar-items>li.profile-item a .topbar-item-name{color:#000}::ng-deep .layout-wrapper app-topbar-v3 .topbar .topbar-right .topbar-items>li.profile-item a .topbar-item-name:hover{color:#777}::ng-deep .layout-wrapper app-topbar-v3 .wrapper-appswitch{text-align:center;display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}@media (max-width:1024px){::ng-deep .layout-wrapper app-topbar-v3 .layout-menu li a.switcher-item{width:unset}}@media (min-width:1025px){.tn-l-top-bar-right{display:flex;justify-content:space-between;align-items:center}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{margin:0;display:flex;justify-content:flex-start;flex-direction:row-reverse;align-items:center}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{display:flex;align-items:center;justify-content:center;height:36px;font-size:28px;width:36px;color:#fff}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{display:flex;align-items:center;width:36px;justify-content:center}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{display:flex;padding:0 .5em;align-items:center;justify-content:flex-end}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{position:relative;margin-left:.5em;top:0;right:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{width:220px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{display:flex;justify-content:center;align-items:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
47702
48158
  },] }
47703
48159
  ];
47704
- AppTopBarV2Component.ctorParameters = function () { return [
48160
+ AppTopBarV3Component.ctorParameters = function () { return [
48161
+ { type: undefined, decorators: [{ type: i0.Inject, args: [i4$1.DOCUMENT,] }] },
47705
48162
  { type: CustomRouterService },
47706
48163
  { type: i3.Router },
47707
48164
  { type: CommonService },
@@ -47712,14 +48169,18 @@
47712
48169
  { type: ModuleConfigService },
47713
48170
  { type: UserService },
47714
48171
  { type: NotifierService },
47715
- { type: i2.TranslateService },
47716
48172
  { type: CustomizeUiService }
47717
48173
  ]; };
47718
- AppTopBarV2Component.propDecorators = {
48174
+ AppTopBarV3Component.propDecorators = {
47719
48175
  input: [{ type: i0.ViewChild, args: ['input',] }],
47720
48176
  notify: [{ type: i0.ViewChild, args: ['notify', { static: true },] }],
47721
48177
  messages: [{ type: i0.ViewChild, args: ['messages', { static: true },] }]
47722
48178
  };
48179
+ var UserRedirectType;
48180
+ (function (UserRedirectType) {
48181
+ UserRedirectType[UserRedirectType["PERSONAL_INFO"] = 0] = "PERSONAL_INFO";
48182
+ UserRedirectType[UserRedirectType["DEFAULT"] = 1] = "DEFAULT";
48183
+ })(UserRedirectType || (UserRedirectType = {}));
47723
48184
 
47724
48185
  var AppSubMenuComponent = /** @class */ (function (_super) {
47725
48186
  __extends(AppSubMenuComponent, _super);
@@ -48461,7 +48922,7 @@
48461
48922
  { type: i0.Component, args: [{
48462
48923
  // tslint:disable-next-line: component-selector
48463
48924
  selector: 'app-topbar',
48464
- template: "<ng-container [ngSwitch]=\"layoutAppSwitcher\">\n <ng-container *ngSwitchDefault>\n <ng-container [ngTemplateOutlet]=\"appSwitcherDefault\">\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V1\">\n <app-topbar-v1></app-topbar-v1>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V2\">\n <app-topbar-v2></app-topbar-v2>\n </ng-container>\n</ng-container>\n\n\n<ng-template #appSwitcherDefault>\n <div class=\"topbar clearfix tn-l-top-bar\">\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\n <div class=\"tn-l-left-menu-toggle-block\">\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\n (click)=\"_commonService.onMenuButtonClick($event)\">\n <i class=\"pi pi-chevron-left\"></i>\n </a>\n </div>\n\n <div class=\"topbar-logo tn-l-logo-wrapper\">\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\"\n (click)=\"goToHome()\" /></a>\n </div>\n <div class=\"topbar-title tn-l-logo-title-block\">\n <div class=\"topbar-owner\">\n {{getTitle()}}\n </div>\n <div class=\"topbar-description\">\n {{getOwner()}}\n </div>\n </div>\n </div>\n <div class=\"setting-default-container\">\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\n (click)=\"settingDefault()\">\n </a>\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\n </ng-container>\n </div>\n <div #notify class=\"notify-message\">\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\n </div>\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\n oncontextmenu=\"return false\">\n <div class=\"tn-l-top-bar-right-block-1\">\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <span *ngIf=\"messages && messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\n </a>\n </div>\n\n <div class=\"tn-l-top-bar-right-block-2\">\n <ul class=\"topbar-items fadeInDown\"\n [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\n\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\n <div class=\"profile-image-wrapper topbar-icon-left\">\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\n [src]=\"getCurrentUserAvatar()\" />\n </div>\n <div class=\"profile-info-wrapper\">\n <div class=\"topbar-item-name-wrapper\"\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\n </div>\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\n </div>\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\n </a>\n\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\n <li *ngIf=\"currentUser\" role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-inbox\"></i>\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\n </a>\n </li>\n <li *ngIf=\"currentUser\" role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-user-edit\"></i>\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\n </a>\n </li>\n <li *ngIf=\"currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\n <i class=\"pi pi-sign-out\"></i>\n <span>\u0110\u0103ng xu\u1EA5t</span>\n </a>\n </li>\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"login()\">\n <i class=\"pi pi-sign-in\"></i>\n <span>\u0110\u0103ng nh\u1EADp</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"_customizeUiService.isShowHelp()\" #help class=\"menu-help tn-l-top-bar-menu-item\"\n tn-app-help></li>\n <li *ngIf=\"_customizeUiService.isShowNotification()\" id=\"li-notifications\"\n class=\"tn-l-top-bar-menu-item\" #messages\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\n <a href=\"#\" tabindex=\"7\" (click)=\"_commonService.onTopbarItemClick($event,modules)\"\n style=\"height: 30px;\" pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\n class=\"tn-l-top-bar-menu-item-inner\">\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <!-- <i class=\"pi pi-microsoft\"></i> -->\n </span>\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\n </a>\n <ul class=\"app-switcher layout-menu fadeInDown\">\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\n <li role=\"menuitem\" style=\"text-align: center;\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\n [style.background]=\"item.background\" (click)=\"switchApp(item)\">\n <span class=\"tn-l-switcher-item-inner\" [style.color]=\"item.colorTitle\">\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"\n [style.color]=\"item.colorIcon\"></i>\n <div class=\"tn-l-switcher-item-label\">\n {{ item.title | translate}}\n </div>\n </span>\n </a>\n </ng-container>\n </li>\n </tn-custom-scrollbar>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</ng-template>",
48925
+ template: "<ng-container [ngSwitch]=\"layoutAppSwitcher\">\n <ng-container *ngSwitchDefault>\n <ng-container [ngTemplateOutlet]=\"appSwitcherDefault\">\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V1\">\n <app-topbar-v1></app-topbar-v1>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V2\">\n <app-topbar-v2></app-topbar-v2>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"EnumTypeSplash.NEW_V3\">\n <app-topbar-v3></app-topbar-v3>\n </ng-container>\n</ng-container>\n\n\n<ng-template #appSwitcherDefault>\n <div class=\"topbar clearfix tn-l-top-bar\">\n <div class=\"topbar-left tn-l-top-bar-left\" [ngClass]=\"{'beta-version': !environment.isProduction }\">\n <div class=\"tn-l-left-menu-toggle-block\">\n <a tabindex=\"1\" id=\"menu-button\" class=\"tn-l-left-menu-toggle\" href=\"#\"\n (click)=\"_commonService.onMenuButtonClick($event)\">\n <i class=\"pi pi-chevron-left\"></i>\n </a>\n </div>\n\n <div class=\"topbar-logo tn-l-logo-wrapper\">\n <a tabindex=\"2\" href=\"javascript:\" style=\"display: inline-block;\">\n <img class=\"topbar-logo tn-l-logo\" [src]=\"environment.appMetadata.main.logo\"\n (click)=\"goToHome()\" /></a>\n </div>\n <div class=\"topbar-title tn-l-logo-title-block\">\n <div class=\"topbar-owner\">\n {{getTitle()}}\n </div>\n <div class=\"topbar-description\">\n {{getOwner()}}\n </div>\n </div>\n </div>\n <div class=\"setting-default-container\">\n <ng-container *ngIf=\"showDefaultSetting && currentUser\">\n <a tabindex=\"3\" href=\"javascript:void(0)\" class=\"tn-l-m-default-setting pi pi-cog\"\n (click)=\"settingDefault()\">\n </a>\n <h3 class=\"tn-l-default-detting\" (click)=\"settingDefault()\">\n {{defaultDataSetting}} <i class=\"pi pi-pencil\" style=\"margin-left:10px\"></i></h3>\n </ng-container>\n </div>\n <div #notify class=\"notify-message\">\n <marquee (mouseover)=\"handleMouseOver($event)\" (mouseout)=\"handleMouseOut($event)\">{{message}}</marquee>\n </div>\n <div class=\"topbar-right tn-l-top-bar-right\" [ngClass]=\"{'beta-version': !environment.isProduction}\"\n oncontextmenu=\"return false\">\n <div class=\"tn-l-top-bar-right-block-1\">\n <a tabindex=\"4\" class=\"topbar-menu-button\" id=\"topbar-menu-button\" href=\"#\"\n (click)=\"_commonService.onTopbarMenuButtonClick($event)\">\n <svg focusable=\"false\" class=\"tn-m-topbar-menu-toggle\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <span *ngIf=\"messages && messages.totalUnRead > 0\" class=\"topbar-badge animated rubberBand\"\n [ngClass]=\"{'topbar-badge-bounce': messages.bounceNoti}\">{{messages.totalUnRead}}</span>\n </a>\n </div>\n\n <div class=\"tn-l-top-bar-right-block-2\">\n <ul class=\"topbar-items fadeInDown\"\n [ngClass]=\"{'topbar-items-visible': _commonService.topbarMenuActive}\">\n <li #profile class=\"profile-item tn-l-top-bar-menu-item\"\n *ngIf=\"_commonService.profileMode==='top'||_commonService.isHorizontal()\"\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === profile}\">\n\n <a href=\"#\" tabindex=\"10\" class=\"UserPane tn-l-top-bar-menu-item-inner\"\n (click)=\"_commonService.onTopbarItemClick($event,profile)\">\n <div class=\"profile-image-wrapper topbar-icon-left\">\n <img class=\"profile-image tn-l-profile-img\" [src-fallback]=\"defaultAvatar\"\n [src]=\"getCurrentUserAvatar()\" />\n </div>\n <div class=\"profile-info-wrapper\">\n <div class=\"topbar-item-name-wrapper\"\n [ngClass]=\"{'not-show-position': !getCurrentUserPosition()}\">\n <span class=\"topbar-item-name tn-l-user-name\">{{getCurrentUserFullName()}}</span>\n </div>\n <div class=\"topbar-item-role-wrapper tn-l-topbar-item-role-wrapper\"><span\n class=\"topbar-item-role\">{{getCurrentUserPosition()}}</span></div>\n </div>\n <i class=\"pi pi-user\" style=\"opacity: 0; position: absolute;\"></i>\n </a>\n\n <ul class=\"layout-menu fadeInDown tn-l-switcher\">\n <li *ngIf=\"currentUser\" role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-inbox\"></i>\n <span>Th\u01B0 m\u1EE5c c\u00E1 nh\u00E2n</span>\n </a>\n </li>\n <li *ngIf=\"currentUser\" role=\"menuitem\">\n <a href=\"#\" (click)=\"onEditInfo($event)\">\n <i class=\"pi pi-user-edit\"></i>\n <span>C\u1EADp nh\u1EADt th\u00F4ng tin</span>\n </a>\n </li>\n <li *ngIf=\"currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"onTopbarLogout()\">\n <i class=\"pi pi-sign-out\"></i>\n <span>\u0110\u0103ng xu\u1EA5t</span>\n </a>\n </li>\n <li *ngIf=\"!currentUser\" role=\"menuitem\">\n <a href=\"javascript:;\" (click)=\"login()\">\n <i class=\"pi pi-sign-in\"></i>\n <span>\u0110\u0103ng nh\u1EADp</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"_customizeUiService.isShowHelp()\" #help class=\"menu-help tn-l-top-bar-menu-item\"\n tn-app-help></li>\n <li *ngIf=\"_customizeUiService.isShowNotification()\" id=\"li-notifications\"\n class=\"tn-l-top-bar-menu-item\" #messages\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === messages || _commonService.activeTopbarItem === 0}\"\n tn-app-notification (openMenu)=\"_commonService.onTopbarItemClick($event,messages)\"></li>\n <li id=\"li-app-switcher\" class=\"tn-l-top-bar-menu-item\" #modules\n [ngClass]=\"{'active-top-menu':_commonService.activeTopbarItem === modules || _commonService.activeTopbarItem === 1}\">\n <a href=\"#\" tabindex=\"7\" (click)=\"_commonService.onTopbarItemClick($event,modules)\"\n style=\"height: 30px;\" pTooltip=\"Danh s\u00E1ch ph\u00E2n h\u1EC7\" tooltipPosition=\"bottom\"\n class=\"tn-l-top-bar-menu-item-inner\">\n <span class=\"topbar-icon-left tn-l-topbar-icon-left\">\n <svg focusable=\"false\" class=\"topbar-icon animated swing svgmodule\" role=\"img\"\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\n <path fill=\"currentColor\"\n d=\"M0 224h192V32H0v192zm256-192v192h192V32H256zM0 480h192V288H0v192zm256-192v192h192V288H256z\">\n </path>\n </svg>\n <!-- <i class=\"pi pi-microsoft\"></i> -->\n </span>\n <span class=\"topbar-item-name\">{{ 'Danh s\u00E1ch ph\u00E2n h\u1EC7' | translate}}</span>\n </a>\n <ul class=\"app-switcher layout-menu fadeInDown\">\n <tn-custom-scrollbar #scrollbar class=\"app-switcher-holder\">\n <li role=\"menuitem\" style=\"text-align: center;\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <a class=\"switcher-item tn-l-switcher-item\" href=\"javascript:\"\n [style.background]=\"item.background\" (click)=\"switchApp(item)\">\n <span class=\"tn-l-switcher-item-inner\" [style.color]=\"item.colorTitle\">\n <i class=\"{{item.icon}} app-switcher-item-icon tn-l-switcher-item-icon\"\n [style.color]=\"item.colorIcon\"></i>\n <div class=\"tn-l-switcher-item-label\">\n {{ item.title | translate}}\n </div>\n </span>\n </a>\n </ng-container>\n </li>\n </tn-custom-scrollbar>\n </ul>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</ng-template>",
48465
48926
  providers: [ComponentContextService],
48466
48927
  styles: [".topBarSearchButton:disabled{opacity:1;background-color:#eee!important;border:1px solid #c8c8c8!important;border-right:none!important;color:#c1c1c1!important}::ng-deep app-topbar a{outline:none}input:disabled::-moz-placeholder{color:#b1b1b1}input:disabled::placeholder{color:#b1b1b1}.UserPane.UserPane{display:flex}.profile-image-wrapper{order:1}.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name.tn-l-user-name{margin-top:0;float:none}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{display:inline-flex;flex-direction:column;justify-content:center;order:0;text-align:right;float:none}.tn-l-logo{image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tn-l-default-detting{color:#fff;cursor:pointer;margin:0}.tn-l-left-menu-toggle-block{align-self:stretch;display:flex;align-items:center;box-shadow:0 0 5px 0 rgba(0,0,0,.3764705882352941)}.tn-l-left-menu-toggle{color:#fff;padding:8px;transition:transform .25s ease-in-out}::ng-deep .layout-menu-static-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-left:0;margin-right:30px}.topbar-logo.topbar-logo.topbar-logo{float:none}.tn-l-logo.tn-l-logo.tn-l-logo.tn-l-logo{width:auto;height:40px;margin:0}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{margin:0;font-size:0;width:auto;height:auto;padding-left:8px;padding-right:8px}.tn-l-top-bar{display:flex}.topbar-description,.topbar-owner{white-space:nowrap}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:15px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:11px;text-transform:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{float:none;width:auto;display:flex}.tn-l-top-bar-left{align-items:center}.tn-m-topbar-menu-toggle{width:30px;height:28px;margin:auto;display:block}.tn-m-topbar-menu-toggle g{stroke:#fff}.tn-m-topbar-menu-toggle path{fill:#fff}.tn-l-m-default-setting{display:none}.setting-default-container{justify-content:center}.notify-message,.setting-default-container{display:flex;align-items:center;margin-left:30px}.notify-message{flex:1 1;overflow:hidden}.notify-message>marquee{white-space:nowrap;color:#ff0;font-size:500}.search-item{margin-right:10px}.tn-l-switcher-item-inner{padding-top:4px}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{display:inline-flex;align-items:center;justify-content:center}.tn-l-switcher-item-label{margin-top:4px}.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon.tn-l-switcher-item-icon{font-size:38px;margin:0 auto}.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item.tn-l-switcher-item{padding:8px}.tn-l-switcher.tn-l-switcher{margin-bottom:0}@media (min-width:1025px){.tn-l-top-bar-right{display:flex;justify-content:space-between;align-items:center}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding:0 15px}.topbar-items.topbar-items.topbar-items{margin:0;display:flex;justify-content:flex-start;flex-direction:row-reverse;align-items:center}.topbar-items.topbar-items.topbar-items,.topbar-items.topbar-items.topbar-items>li{float:none}::ng-deep .topbar .topbar-items>li>a{margin-top:0}::ng-deep .topbar .topbar-items>li>a>span>i{color:#fff;font-size:24px}.topbar .topbar-items>li>a.UserPane{height:auto;line-height:inherit;top:0}a.UserPane .profile-image.profile-image.profile-image.profile-image{margin-top:0}}@media (min-width:1025px) and (max-width:1400px){.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block.tn-l-logo-title-block{margin-right:19px}.search-item{margin-right:0}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{padding-left:15px}.topbar-items>li.profile-item{margin-left:14px}}@media (max-width:1024px){.tn-l-m-default-setting{display:flex;align-items:center;justify-content:center;height:36px;font-size:28px;width:36px;color:#fff}.tn-l-default-detting{display:none}::ng-deep .layout-menu-static-mobile-inactive app-topbar .tn-l-left-menu-toggle{transform:rotate(180deg)}.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper.profile-info-wrapper{text-align:left}.topbar .topbar-right #topbar-menu-button{display:flex;align-items:center;width:36px;justify-content:center}.tn-l-top-bar-right-block-1{display:flex}.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper.tn-l-logo-wrapper{padding-left:5px;padding-right:5px}.tn-l-logo-title-block,.tn-l-top-bar-left,.topbar-description,.topbar-owner{overflow:hidden}.topbar-description,.topbar-owner{text-overflow:ellipsis}.tn-l-top-bar-menu-item:empty{display:none}.tn-l-top-bar-left.tn-l-top-bar-left.tn-l-top-bar-left{padding-left:0;padding-right:0}.topbar-title.topbar-title.topbar-title.topbar-title{margin:0}.topbar-owner.topbar-owner.topbar-owner.topbar-owner.topbar-owner{font-size:14px}.topbar-description.topbar-description.topbar-description.topbar-description.topbar-description{font-size:10px}.tn-l-top-bar-right{flex:1;position:relative}.topbar-menu-button span.topbar-badge{right:-4px}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right{display:flex;padding:0 .5em;align-items:center;justify-content:flex-end}.tn-l-top-bar-right.tn-l-top-bar-right.tn-l-top-bar-right #topbar-menu-button{position:relative;margin-left:.5em;top:0;right:0}.app-switcher.layout-menu.layout-menu.layout-menu.layout-menu{width:270px}.profile-image-wrapper{order:0}.tn-l-user-name{width:220px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep app-topbar .tn-l-top-bar-menu-item .topbar-icon-left{display:flex;justify-content:center;align-items:center}.tn-l-topbar-item-role-wrapper{display:none}}"]
48467
48928
  },] }
@@ -55295,6 +55756,215 @@
55295
55756
  { type: GlobalService }
55296
55757
  ]; };
55297
55758
 
55759
+ var SplashComponentV3Component = /** @class */ (function (_super) {
55760
+ __extends(SplashComponentV3Component, _super);
55761
+ function SplashComponentV3Component(injector, _moduleConfigService, _permissionService, _deviceDetectorService, _userService, _router, _authenService, _globalService) {
55762
+ var _this = _super.call(this, injector) || this;
55763
+ _this._moduleConfigService = _moduleConfigService;
55764
+ _this._permissionService = _permissionService;
55765
+ _this._deviceDetectorService = _deviceDetectorService;
55766
+ _this._userService = _userService;
55767
+ _this._router = _router;
55768
+ _this._authenService = _authenService;
55769
+ _this._globalService = _globalService;
55770
+ _this.defaultAvatar = '';
55771
+ _this.appSwitcherItems = [];
55772
+ _this.loaded = false;
55773
+ _this.currentDate = new Date();
55774
+ _this.showDefaultSetting = false;
55775
+ _this.fileApi = '';
55776
+ _this.isOnMobile = false;
55777
+ _this.daysInWeek = ['Chủ nhật', 'Thứ 2', 'Thứ 3', 'Thứ 4', 'Thứ 5', 'Thứ 6', 'Thứ 7'];
55778
+ _this.rootContext.fireEvent('MAIN_CONTENT_ONLY', true);
55779
+ _this.environment = _this._moduleConfigService.getConfig().environment;
55780
+ _this.defaultAvatar = _this.environment.appMetadata.main.defaultMaleAvatar;
55781
+ _this.fileApi = _this.environment.apiDomain.fileEndpoint + "/" + _this.environment.apiVersion + "/FileObject";
55782
+ setInterval(function () {
55783
+ _this.currentDate = new Date();
55784
+ }, 1000);
55785
+ if (_this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata && _this.rootContext.data.currentAppMetadata.showDefaultSetting != null && _this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined) {
55786
+ _this.showDefaultSetting = _this.rootContext.data.currentAppMetadata.showDefaultSetting;
55787
+ }
55788
+ else {
55789
+ if (_this.environment.appMetadata.main.showDefaultSetting != null && _this.environment.appMetadata.main.showDefaultSetting != undefined) {
55790
+ _this.showDefaultSetting = _this.environment.appMetadata.main.showDefaultSetting;
55791
+ }
55792
+ else {
55793
+ _this.showDefaultSetting = false;
55794
+ }
55795
+ }
55796
+ // Config for authentication
55797
+ _this._globalService.setHeaderState(false);
55798
+ _this._globalService.setMenuState(false);
55799
+ _this.underconstruction = _this.environment.underconstruction;
55800
+ return _this;
55801
+ }
55802
+ SplashComponentV3Component.prototype.ngOnInit = function () {
55803
+ var _this = this;
55804
+ if (this._deviceDetectorService.isMobile()) {
55805
+ this.isOnMobile = true;
55806
+ }
55807
+ if (this.rootContext.data.currentUser) {
55808
+ if (this.rootContext.data.currentUser.gender == 0) {
55809
+ this.defaultAvatar = this.environment.appMetadata.main.defaultFemaleAvatar;
55810
+ }
55811
+ else {
55812
+ this.defaultAvatar = this.environment.appMetadata.main.defaultMaleAvatar;
55813
+ }
55814
+ }
55815
+ this.rootContext.replaySubscribe(ComCtxConstants.ROOT.USER_LOADED, function (rs) {
55816
+ _this.currentUser = _this._userService.getCurrentUser();
55817
+ _this.loadAppMetadata();
55818
+ _this.loaded = true;
55819
+ });
55820
+ if (this.rootModel.allowAnonymous) {
55821
+ this.loaded = true;
55822
+ this.loadAppMetadata();
55823
+ }
55824
+ };
55825
+ SplashComponentV3Component.prototype.loadAppMetadata = function () {
55826
+ var _this = this;
55827
+ var prmsAppSwicherItem = new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
55828
+ var arr, _a, _b, _i, ind, element, isAuthorized;
55829
+ return __generator(this, function (_c) {
55830
+ switch (_c.label) {
55831
+ case 0:
55832
+ arr = [];
55833
+ _a = [];
55834
+ for (_b in this.environment.appMetadata.appSwitcher)
55835
+ _a.push(_b);
55836
+ _i = 0;
55837
+ _c.label = 1;
55838
+ case 1:
55839
+ if (!(_i < _a.length)) return [3 /*break*/, 5];
55840
+ ind = _a[_i];
55841
+ element = this.environment.appMetadata.appSwitcher[ind];
55842
+ if (!(this.rootModel.allowAnonymous && element.allowAnonymous)) return [3 /*break*/, 2];
55843
+ arr.push(element);
55844
+ return [3 /*break*/, 4];
55845
+ case 2:
55846
+ if (!this.currentUser) return [3 /*break*/, 4];
55847
+ return [4 /*yield*/, this._permissionService.isAuthorized(element.code, (element.code + ".MODULE." + element.code).toUpperCase(), true)];
55848
+ case 3:
55849
+ isAuthorized = _c.sent();
55850
+ if (isAuthorized) {
55851
+ arr.push(element);
55852
+ }
55853
+ _c.label = 4;
55854
+ case 4:
55855
+ _i++;
55856
+ return [3 /*break*/, 1];
55857
+ case 5:
55858
+ resolve(arr);
55859
+ return [2 /*return*/];
55860
+ }
55861
+ });
55862
+ }); });
55863
+ prmsAppSwicherItem.then(function (rs) {
55864
+ _this.appSwitcherItems.length = 0;
55865
+ if (rs) {
55866
+ rs.forEach(function (element) {
55867
+ if (element.visible) {
55868
+ if (!_this.currentUser) { // allow anonymous
55869
+ _this.appSwitcherItems.push(element);
55870
+ }
55871
+ else {
55872
+ if (_this.currentUser.maNguoiHoc && _this.currentUser.issuperuser.toLowerCase() != 'true') {
55873
+ if (element.code.toLowerCase() == 'sv' || element.code.toLowerCase() == 'user') {
55874
+ _this.appSwitcherItems.push(element);
55875
+ }
55876
+ }
55877
+ else {
55878
+ _this.appSwitcherItems.push(element);
55879
+ }
55880
+ }
55881
+ }
55882
+ });
55883
+ if (_this.appSwitcherItems.length === 1) {
55884
+ setTimeout(function (x) { return _this.switchApp(_this.appSwitcherItems[0]); }, 100);
55885
+ }
55886
+ }
55887
+ });
55888
+ };
55889
+ SplashComponentV3Component.prototype.switchApp = function (item) {
55890
+ this.loaded = false;
55891
+ if (item.target == '_blank') {
55892
+ if (!item.defaultRedirect) {
55893
+ item.defaultRedirect = '';
55894
+ }
55895
+ // NamNH tip trick cho mot so may bi loi item.url = 'main' -> redirect sai khi click vao cac phan he
55896
+ if (item.url == item.defaultRedirect) {
55897
+ item.url = '/' + item.code.toLowerCase();
55898
+ }
55899
+ var link = item.url + "/" + item.defaultRedirect;
55900
+ if (!link.startsWith('/') && !link.startsWith('http')) {
55901
+ link = '/' + link;
55902
+ }
55903
+ top.location.href = link;
55904
+ }
55905
+ else {
55906
+ if (item.defaultRedirect != '' && !this.rootContext.data.flags.menuTopOpenning) {
55907
+ this._router.navigateByUrl(item.defaultRedirect);
55908
+ this.rootContext.data.currentAppMetadata = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == item.code; });
55909
+ if (this.rootContext.data.currentAppMetadata && this.rootContext.data.currentAppMetadata.showDefaultSetting != undefined && this.rootContext.data.currentAppMetadata.showDefaultSetting != null) {
55910
+ this.showDefaultSetting = this.rootContext.data.currentAppMetadata.showDefaultSetting && this.showDefaultSetting;
55911
+ }
55912
+ }
55913
+ }
55914
+ };
55915
+ SplashComponentV3Component.prototype.logout = function () {
55916
+ this._authenService.logout();
55917
+ };
55918
+ SplashComponentV3Component.prototype.goToPersonal = function () {
55919
+ var userMenu = this.environment.appMetadata.appSwitcher.find(function (x) { return x.code == 'USER'; });
55920
+ this.switchApp(userMenu);
55921
+ };
55922
+ SplashComponentV3Component.prototype.getCurrentUserAvatar = function () {
55923
+ if (this.rootContext.data.currentUser && this.rootContext.data.currentUser.avatar) {
55924
+ return this.fileApi + "/public/" + this.rootContext.data.currentUser.avatar + "/Download";
55925
+ }
55926
+ else {
55927
+ return this.defaultAvatar;
55928
+ }
55929
+ };
55930
+ SplashComponentV3Component.prototype.getNgayTrongTuan = function () {
55931
+ return this.daysInWeek[this.currentDate.getDay()];
55932
+ };
55933
+ SplashComponentV3Component.prototype.showProfilePage = function () {
55934
+ if (this._userService.isSinhVienAccount()) {
55935
+ return false;
55936
+ }
55937
+ return true;
55938
+ };
55939
+ SplashComponentV3Component.prototype.ngOnDestroy = function () {
55940
+ _super.prototype.ngOnDestroy.call(this);
55941
+ this._globalService.setHeaderState(true);
55942
+ this._globalService.setMenuState(true);
55943
+ };
55944
+ SplashComponentV3Component.prototype.login = function () {
55945
+ this.rootContext.fireEvent('LOGIN');
55946
+ };
55947
+ return SplashComponentV3Component;
55948
+ }(ComponentBase));
55949
+ SplashComponentV3Component.decorators = [
55950
+ { type: i0.Component, args: [{
55951
+ selector: 'splash-component-v3',
55952
+ template: "<div *ngIf=\"!loaded\" class=\"wrp-loader\">\n <div class=\"loader\"></div>\n</div>\n<div *ngIf=\"loaded\" class=\"modules-v1\">\n <div class=\"welcome-user\">\n <div class=\"profile-image\">\n <img class=\"custom-avatar\" [src-fallback]=\"defaultAvatar\" [src]=\"getCurrentUserAvatar()\" />\n </div>\n\n <div class=\"wrp-login\">\n <h2>Xin ch\u00E0o!</h2>\n <b>{{currentUser.fullName}}</b>\n <div *ngIf=\"currentUser\" class=\"login\">\n <a (click)=\"goToPersonal()\"><i class=\"far fa-folder-open\"></i>Trang c\u00E1 nh\u00E2n</a>\n <a style=\"background: #fabc01;\" (click)=\"logout()\"><i class=\"far fa-arrow-alt-circle-right\"></i>\u0110\u0103ng\n xu\u1EA5t</a>\n </div>\n <div *ngIf=\"!currentUser\" class=\"login\"><a style=\"background: #fabc01;\" (click)=\"login()\"><i\n class=\"fas fa-sign-out-alt\"></i>\u0110\u0103ng nh\u1EADp</a></div>\n </div>\n\n <div class=\"clock-wrapper\">\n <h1 class=\"clock\">{{currentDate | date:'HH:mm:ss'}}</h1>\n <h4 class=\"data-time\">{{getNgayTrongTuan()}}, ng\u00E0y {{currentDate | date:'dd/MM/yyyy'}}</h4>\n </div>\n </div>\n\n <div class=\"module-icons\">\n <div class=\"img-title\">\n <img class=\"tn-custom-logo\" [src]=\"environment.appMetadata.main.logo\"\n [alt]=\"environment.appMetadata.main.owner\">\n <div class=\"title\">\n <h2>{{environment.appMetadata.main.title}}</h2>\n <h1>{{environment.appMetadata.main.owner}}</h1>\n </div>\n </div>\n\n <div class=\"div1111-wrapper\">\n <tn-custom-scrollbar *ngIf=\"!isOnMobile\">\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\n </tn-custom-scrollbar>\n\n <ng-container *ngIf=\"isOnMobile\">\n <ng-container *ngTemplateOutlet=\"appSwitcher\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #appSwitcher>\n <div class=\"div1111\">\n <ng-container *ngFor=\"let item of appSwitcherItems; let ind = index;\">\n <span>\n <a class=\"bg-switcher\" (click)=\"switchApp(item)\">\n <i class=\"{{item.icon}} app-switcher-item-icon\"></i>\n <span>{{ item.title | translate}}</span>\n </a>\n </span>\n </ng-container>\n </div>\n</ng-template>",
55953
+ providers: [ComponentContextService],
55954
+ styles: ["body{background-color:#fff;font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.wrp-loader{position:absolute;display:inline-block;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101}.wrp-loader .loader{border-radius:50%;border:2px solid #bcdbf5;border-top-color:#3192e1;width:10px;height:10px;color:#607d8b;font-size:10px;animation:load4 1.3s linear infinite;display:block}.modules-v1{position:fixed;top:0;left:0;z-index:100;display:flex;justify-content:center;align-items:center;width:100vw;height:100vh;background-image:url(/assets/images/background-splash.png);background-repeat:no-repeat;background-position:50%;background-size:cover}.modules-v1 div>span{display:inline-block;min-width:100px;height:120px;width:120px;margin:10px;box-shadow:1px 2px 9px 1px #dadada;border-radius:5px;white-space:normal}.modules-v1 div>span>a{height:100%;display:inline-block;position:relative;font-weight:700;cursor:pointer;border-radius:5px;display:flex;flex-direction:column;justify-content:space-evenly}.modules-v1 div>span>a,.modules-v1 div>span>a>span{width:100%;color:#fff;text-decoration:unset;text-align:center}.modules-v1 div>span>a>span{display:inline-block;line-height:1.2}.modules-v1 div>span>a>i{font-size:3.5em;width:100%}.modules-v1 .div1111-wrapper{overflow:auto;height:420px;margin:0 auto;max-width:700px}.modules-v1 .div1111-wrapper .div1111{white-space:nowrap;width:100%;display:flex;flex-wrap:wrap}.modules-v1 .div1111-wrapper .div1111 .bg-switcher{background:#fff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher .app-switcher-item-icon{color:#52abff;transition:.3s}.modules-v1 .div1111-wrapper .div1111 .bg-switcher span{color:#2f70ac;font-weight:500;text-shadow:none;transition:.3s;padding:0 5px}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover{background:#fabc01;box-shadow:1px 2px 9px 1px rgba(39,23,86,.5215686274509804)}.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover .app-switcher-item-icon,.modules-v1 .div1111-wrapper .div1111 .bg-switcher:hover span{color:#2f70ac}.modules-v1 .module-icons{text-align:center;color:#666;width:65%;align-self:stretch;background-color:rgba(249,244,244,.9215686274509803);display:flex;flex-direction:column;justify-content:center}.modules-v1 .module-icons .img-title{padding:20px}.modules-v1 .module-icons .img-title .tn-custom-logo{max-height:125px}.modules-v1 .module-icons .img-title .title{margin:24px 0}.modules-v1 .module-icons h2{font-size:25px;color:#271756;margin-bottom:15px;margin-top:15px}.modules-v1 .module-icons h1{color:#2f70ac;font-size:35px;margin-top:0;margin-bottom:0}.modules-v1 .welcome-user{text-align:center;width:35%;align-self:stretch;background-color:rgba(47,112,172,.9215686274509803);display:flex;flex-direction:column}.modules-v1 .welcome-user .wrp-login{margin:20px auto auto;color:#fff;display:flex;flex-direction:column;align-items:center}.modules-v1 .welcome-user .wrp-login h2{font-size:20px;margin-top:0;margin-bottom:5px;font-weight:500}.modules-v1 .welcome-user .wrp-login b{font-size:25px;text-transform:uppercase;display:block}.modules-v1 .welcome-user .wrp-login .login{display:grid;grid-template-columns:repeat(2,150px);grid-gap:10px;margin-top:30px}.modules-v1 .welcome-user .wrp-login .login a{background:#fff;padding:6px;border-radius:5px;cursor:pointer;display:inline-block;color:#5d5d5d}.modules-v1 .welcome-user .wrp-login .login a i{margin-right:10px}.modules-v1 .welcome-user .profile-image{margin:auto auto 0}.modules-v1 .welcome-user .profile-image img{border-radius:50%;height:200px;width:200px;-o-object-fit:contain;object-fit:contain;box-shadow:1px 1px 11px 6px #2a659b;background:#fff}.modules-v1 .welcome-user .clock-wrapper{color:#fff;text-align:center;margin-top:auto;margin-bottom:auto}.modules-v1 .welcome-user .clock-wrapper h4{font-size:18px;font-weight:500;margin-top:10px}.modules-v1 .welcome-user .clock-wrapper h1{margin-bottom:0;font-size:40px}.modules-v1 .underconstruction{text-transform:uppercase;color:red;font-weight:700;font-size:4em}@media (max-width:1368px){.modules-v1 .clock{margin:0 20px;font-size:1.5em}.modules-v1 .data-time{margin:10px 0 20px;font-size:1em}}@media (max-width:1100px){.modules-v1 .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr))}}@media (max-width:991px){.modules-v1 .welcome-user .wrp-login .login{grid-template-columns:1fr}}@media (max-width:768px){.modules-v1{flex-direction:column}.modules-v1 .welcome-user{width:100%;height:270px;flex-direction:row;align-items:center;padding-bottom:87px}.modules-v1 .welcome-user .profile-image{margin-bottom:auto}.modules-v1 .welcome-user .profile-image img{height:150px;width:150px}.modules-v1 .welcome-user .wrp-login{margin-top:auto}.modules-v1 .welcome-user .wrp-login .login{margin-top:20px}.modules-v1 .welcome-user .clock-wrapper{padding-right:15px}.modules-v1 .module-icons{width:100%;height:calc(100% - 270px)}.modules-v1 .module-icons .img-title{background-image:url(/assets/images/logo.png);background-repeat:no-repeat;background-position:50%;z-index:9}.modules-v1 .module-icons .img-title img{display:none}.modules-v1 .module-icons .img-title .title{background:hsla(0,0%,100%,.9019607843137255);box-shadow:1px 4px 9px 2px #67a0d4;padding:20px 10px;position:absolute;width:calc(100% - 40px);left:20px;right:20px;top:200px}.modules-v1 .module-icons .img-title .title h2{font-size:30px}.modules-v1 .module-icons .img-title .title h1{font-size:34px}}@media (max-width:640px){.modules-v1 .welcome-user{display:block;padding-top:20px}.modules-v1 .welcome-user .wrp-login{width:50%;padding:0 20px 0 0;float:right}.modules-v1 .welcome-user .wrp-login h2{margin-bottom:3px;font-size:14px}.modules-v1 .welcome-user .wrp-login b{font-size:14px}.modules-v1 .welcome-user .wrp-login .login{margin-top:10px;display:flex;flex-direction:column;padding:0 15px;text-align:left}.modules-v1 .welcome-user .wrp-login .login a{font-size:14px}.modules-v1 .welcome-user .profile-image{width:50%;float:left}.modules-v1 .welcome-user .profile-image img{height:130px;width:130px;margin-left:35px;display:block}.modules-v1 .welcome-user .clock-wrapper{clear:both;padding-top:10px;padding-right:0}.modules-v1 .welcome-user .clock-wrapper h4{font-size:14px;margin-top:5px}.modules-v1 .welcome-user .clock-wrapper h1{font-size:1.3em}.modules-v1 .module-icons .img-title{background-size:80px 80px}.modules-v1 .module-icons .img-title .title{top:230px}.modules-v1 .module-icons .img-title .title h1{font-size:16px}.modules-v1 .module-icons .img-title .title h2{font-size:16px;margin-top:0}.modules-v1 .module-icons .div1111-wrapper{margin-top:0;height:360px}.modules-v1 .module-icons .div1111-wrapper .div1111 .bg-switcher span{font-size:14px}.modules-v1 .module-icons div>span{width:100px;height:100px}.modules-v1 .module-icons div>span>a>i{font-size:2.5em;top:10px}}@media (max-width:425px){.modules-v1 .module-icons .img-title .title{top:225px}.modules-v1 .module-icons .div1111-wrapper .div1111{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr))}}@media (max-width:375px){.modules-v1 .module-icons{height:calc(100% - 250px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{padding:10px;top:220px}.modules-v1 .module-icons .img-title .title h2{margin-bottom:10px}.modules-v1 .module-icons .img-title .title h1,.modules-v1 .module-icons .img-title .title h2{font-size:14px}.modules-v1 .welcome-user{height:250px}}@media (max-width:360px){.modules-v1 .module-icons{height:calc(100% - 240px)}.modules-v1 .module-icons .img-title{background-size:60px 60px}.modules-v1 .module-icons .img-title .title{top:205px;width:calc(100% - 20px);left:10px;right:10px}.modules-v1 .welcome-user{height:240px}.modules-v1 .welcome-user .clock-wrapper{padding-top:0}}@keyframes load4{0%,to{box-shadow:0 -3em 0 .2em,2em -2em 0 0,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 0}12.5%{box-shadow:0 -3em 0 0,2em -2em 0 .2em,3em 0 0 0,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}25%{box-shadow:0 -3em 0 -.5em,2em -2em 0 0,3em 0 0 .2em,2em 2em 0 0,0 3em 0 -1em,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}37.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 0,2em 2em 0 .2em,0 3em 0 0,-2em 2em 0 -1em,-3em 0 0 -1em,-2em -2em 0 -1em}50%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 0,0 3em 0 .2em,-2em 2em 0 0,-3em 0 0 -1em,-2em -2em 0 -1em}62.5%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 0,-2em 2em 0 .2em,-3em 0 0 0,-2em -2em 0 -1em}75%{box-shadow:0 -3em 0 -1em,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 .2em,-2em -2em 0 0}87.5%{box-shadow:0 -3em 0 0,2em -2em 0 -1em,3em 0 0 -1em,2em 2em 0 -1em,0 3em 0 -1em,-2em 2em 0 0,-3em 0 0 0,-2em -2em 0 .2em}}"]
55955
+ },] }
55956
+ ];
55957
+ SplashComponentV3Component.ctorParameters = function () { return [
55958
+ { type: i0.Injector },
55959
+ { type: ModuleConfigService },
55960
+ { type: PermissionService },
55961
+ { type: ngxDeviceDetector.DeviceDetectorService },
55962
+ { type: UserService },
55963
+ { type: i3.Router },
55964
+ { type: AuthenService },
55965
+ { type: GlobalService }
55966
+ ]; };
55967
+
55298
55968
  var DmChucVuService = /** @class */ (function (_super) {
55299
55969
  __extends(DmChucVuService, _super);
55300
55970
  function DmChucVuService(http, injector, _moduleConfigService) {
@@ -62889,6 +63559,7 @@
62889
63559
  AppTopBarComponent,
62890
63560
  AppTopBarV1Component,
62891
63561
  AppTopBarV2Component,
63562
+ AppTopBarV3Component,
62892
63563
  AppProfileComponent,
62893
63564
  AppMenuComponent,
62894
63565
  AppSubMenuComponent,
@@ -62954,6 +63625,7 @@
62954
63625
  SplashComponentComponent,
62955
63626
  SplashComponentV1Component,
62956
63627
  SplashComponentV2Component,
63628
+ SplashComponentV3Component,
62957
63629
  StateComponent,
62958
63630
  StateMetadataComponent,
62959
63631
  StateMachinesConnectionMetadataComponent,
@@ -63689,124 +64361,126 @@
63689
64361
  exports["ɵbj"] = AppTopBarComponent;
63690
64362
  exports["ɵbk"] = AppTopBarV1Component;
63691
64363
  exports["ɵbl"] = AppTopBarV2Component;
63692
- exports["ɵbm"] = AppProfileComponent;
63693
- exports["ɵbn"] = AppSubMenuComponent;
63694
- exports["ɵbo"] = AppMenuComponent;
63695
- exports["ɵbp"] = AutoCompletePickerComponent;
63696
- exports["ɵbq"] = ImageUploaderComponent;
63697
- exports["ɵbr"] = CheckBoxListComponent;
63698
- exports["ɵbs"] = CoCauToChucPickerListComponent;
63699
- exports["ɵbt"] = CoCauToChucPickerListNewComponent;
63700
- exports["ɵbu"] = CoCauToChucNewService;
63701
- exports["ɵbv"] = FormBuilderComponent;
63702
- exports["ɵbw"] = BaseCongViecTestComponent;
63703
- exports["ɵbx"] = BaseCauHinhWorkflowDetailComponent;
63704
- exports["ɵby"] = BaseDmLoaiCongViecFormComponent;
63705
- exports["ɵbz"] = BaseDmLinhVucCongViecFormComponent;
64364
+ exports["ɵbm"] = AppTopBarV3Component;
64365
+ exports["ɵbn"] = AppProfileComponent;
64366
+ exports["ɵbo"] = AppSubMenuComponent;
64367
+ exports["ɵbp"] = AppMenuComponent;
64368
+ exports["ɵbq"] = AutoCompletePickerComponent;
64369
+ exports["ɵbr"] = ImageUploaderComponent;
64370
+ exports["ɵbs"] = CheckBoxListComponent;
64371
+ exports["ɵbt"] = CoCauToChucPickerListComponent;
64372
+ exports["ɵbu"] = CoCauToChucPickerListNewComponent;
64373
+ exports["ɵbv"] = CoCauToChucNewService;
64374
+ exports["ɵbw"] = FormBuilderComponent;
64375
+ exports["ɵbx"] = BaseCongViecTestComponent;
64376
+ exports["ɵby"] = BaseCauHinhWorkflowDetailComponent;
64377
+ exports["ɵbz"] = BaseDmLoaiCongViecFormComponent;
63706
64378
  exports["ɵc"] = EntityPickerService;
63707
- exports["ɵca"] = BaseDmPriorityFormComponent;
63708
- exports["ɵcb"] = BaseCongviecDinhkemComponent;
63709
- exports["ɵcc"] = BaseCongviecDinhkemFormComponent;
63710
- exports["ɵcd"] = DatetimePickerComponent;
63711
- exports["ɵce"] = DatetimePickerRangeComponent;
63712
- exports["ɵcf"] = DynamicNodeComponent;
63713
- exports["ɵcg"] = CommonSearchFormComponent;
63714
- exports["ɵch"] = EntityPickerBoxComponent;
63715
- exports["ɵci"] = EntityPickerDataComponent;
63716
- exports["ɵcj"] = EntityPickerSelectedComponent;
63717
- exports["ɵck"] = EntityPickerComponent;
63718
- exports["ɵcl"] = EntityPickerDialogComponent;
63719
- exports["ɵcm"] = EntityPickerTreeDataComponent;
63720
- exports["ɵcn"] = EntityPickerTreeSelectedComponent;
63721
- exports["ɵco"] = EntityPermissionComponent;
63722
- exports["ɵcp"] = EquationEditorComponent;
63723
- exports["ɵcq"] = MaskComponent;
63724
- exports["ɵcr"] = NumberPickerRangeComponent;
63725
- exports["ɵcs"] = PagingNextBackOnlyComponent;
63726
- exports["ɵct"] = RadioButtonListComponent;
63727
- exports["ɵcu"] = VanBanPickerComponent;
63728
- exports["ɵcv"] = VanBanDenService;
63729
- exports["ɵcw"] = VanBanDiService;
63730
- exports["ɵcx"] = VanBanPickerDialogComponent;
63731
- exports["ɵcy"] = VanbanDiPickerComponent;
63732
- exports["ɵcz"] = VanbanDenPickerComponent;
64379
+ exports["ɵca"] = BaseDmLinhVucCongViecFormComponent;
64380
+ exports["ɵcb"] = BaseDmPriorityFormComponent;
64381
+ exports["ɵcc"] = BaseCongviecDinhkemComponent;
64382
+ exports["ɵcd"] = BaseCongviecDinhkemFormComponent;
64383
+ exports["ɵce"] = DatetimePickerComponent;
64384
+ exports["ɵcf"] = DatetimePickerRangeComponent;
64385
+ exports["ɵcg"] = DynamicNodeComponent;
64386
+ exports["ɵch"] = CommonSearchFormComponent;
64387
+ exports["ɵci"] = EntityPickerBoxComponent;
64388
+ exports["ɵcj"] = EntityPickerDataComponent;
64389
+ exports["ɵck"] = EntityPickerSelectedComponent;
64390
+ exports["ɵcl"] = EntityPickerComponent;
64391
+ exports["ɵcm"] = EntityPickerDialogComponent;
64392
+ exports["ɵcn"] = EntityPickerTreeDataComponent;
64393
+ exports["ɵco"] = EntityPickerTreeSelectedComponent;
64394
+ exports["ɵcp"] = EntityPermissionComponent;
64395
+ exports["ɵcq"] = EquationEditorComponent;
64396
+ exports["ɵcr"] = MaskComponent;
64397
+ exports["ɵcs"] = NumberPickerRangeComponent;
64398
+ exports["ɵct"] = PagingNextBackOnlyComponent;
64399
+ exports["ɵcu"] = RadioButtonListComponent;
64400
+ exports["ɵcv"] = VanBanPickerComponent;
64401
+ exports["ɵcw"] = VanBanDenService;
64402
+ exports["ɵcx"] = VanBanDiService;
64403
+ exports["ɵcy"] = VanBanPickerDialogComponent;
64404
+ exports["ɵcz"] = VanbanDiPickerComponent;
63733
64405
  exports["ɵd"] = ExceptionHandlerService;
63734
- exports["ɵda"] = CongViecPickerComponent;
63735
- exports["ɵdb"] = SettingsComponent;
63736
- exports["ɵdc"] = SettingsRowComponent;
63737
- exports["ɵdd"] = SettingsWorkflowComponent;
63738
- exports["ɵde"] = SettingsWorkflowNo1Component;
63739
- exports["ɵdf"] = SimpleWorkflowFormComponent;
63740
- exports["ɵdg"] = ProcessWorkflowTargetComponent;
63741
- exports["ɵdh"] = DmChucVuService;
63742
- exports["ɵdi"] = ChoYKienFormComponent;
63743
- exports["ɵdj"] = SplashComponentV1Component;
63744
- exports["ɵdk"] = SplashComponentV2Component;
63745
- exports["ɵdl"] = StateMachinesConnectionReceiverComponent;
63746
- exports["ɵdm"] = StateMachinesConnectionReceiverConditionComponent;
63747
- exports["ɵdn"] = StateMachinesConnectionReceiverDepartmentComponent;
63748
- exports["ɵdo"] = StateMachinesConnectionReceiverGroupComponent;
63749
- exports["ɵdp"] = StateMachinesConnectionReceiverUserComponent;
63750
- exports["ɵdq"] = StateMachinesConnectionReceiverRoleComponent;
63751
- exports["ɵdr"] = StateMachinesConnectionSenderComponent;
63752
- exports["ɵds"] = StartWorkflowComponent;
63753
- exports["ɵdt"] = ShareLinkByPermissionComponent;
63754
- exports["ɵdu"] = WorkflowSettingNewComponent;
63755
- exports["ɵdv"] = PermissionSharingComponent;
63756
- exports["ɵdw"] = WorkflowPermissionService;
63757
- exports["ɵdx"] = TnCheckboxComponent;
63758
- exports["ɵdy"] = TnDialogComponent;
63759
- exports["ɵdz"] = TnColorPickerComponent;
64406
+ exports["ɵda"] = VanbanDenPickerComponent;
64407
+ exports["ɵdb"] = CongViecPickerComponent;
64408
+ exports["ɵdc"] = SettingsComponent;
64409
+ exports["ɵdd"] = SettingsRowComponent;
64410
+ exports["ɵde"] = SettingsWorkflowComponent;
64411
+ exports["ɵdf"] = SettingsWorkflowNo1Component;
64412
+ exports["ɵdg"] = SimpleWorkflowFormComponent;
64413
+ exports["ɵdh"] = ProcessWorkflowTargetComponent;
64414
+ exports["ɵdi"] = DmChucVuService;
64415
+ exports["ɵdj"] = ChoYKienFormComponent;
64416
+ exports["ɵdk"] = SplashComponentV1Component;
64417
+ exports["ɵdl"] = SplashComponentV2Component;
64418
+ exports["ɵdm"] = SplashComponentV3Component;
64419
+ exports["ɵdn"] = StateMachinesConnectionReceiverComponent;
64420
+ exports["ɵdo"] = StateMachinesConnectionReceiverConditionComponent;
64421
+ exports["ɵdp"] = StateMachinesConnectionReceiverDepartmentComponent;
64422
+ exports["ɵdq"] = StateMachinesConnectionReceiverGroupComponent;
64423
+ exports["ɵdr"] = StateMachinesConnectionReceiverUserComponent;
64424
+ exports["ɵds"] = StateMachinesConnectionReceiverRoleComponent;
64425
+ exports["ɵdt"] = StateMachinesConnectionSenderComponent;
64426
+ exports["ɵdu"] = StartWorkflowComponent;
64427
+ exports["ɵdv"] = ShareLinkByPermissionComponent;
64428
+ exports["ɵdw"] = WorkflowSettingNewComponent;
64429
+ exports["ɵdx"] = PermissionSharingComponent;
64430
+ exports["ɵdy"] = WorkflowPermissionService;
64431
+ exports["ɵdz"] = TnCheckboxComponent;
63760
64432
  exports["ɵe"] = CanBo_HoSoService;
63761
- exports["ɵea"] = TnTinymceComponent;
63762
- exports["ɵeb"] = TnTabViewComponent;
63763
- exports["ɵec"] = TableDetailFormComponent;
63764
- exports["ɵed"] = FileIconPipe;
63765
- exports["ɵee"] = FileSizePipe;
63766
- exports["ɵef"] = QuickAddFormComponent;
63767
- exports["ɵeg"] = PreventShiftTabDirective;
63768
- exports["ɵeh"] = TnTemplateDirective;
63769
- exports["ɵei"] = UserPickerComponent;
63770
- exports["ɵej"] = UserPickerBoxComponent;
63771
- exports["ɵek"] = CoCauToChucTestService;
63772
- exports["ɵel"] = TnAppHelpComponent;
63773
- exports["ɵem"] = PathNameService;
63774
- exports["ɵen"] = HelperCurrentPageComponent;
63775
- exports["ɵeo"] = TnAppNotificationListComponent;
63776
- exports["ɵep"] = TnAppNotificationComponent;
63777
- exports["ɵeq"] = FolderFormComponent;
63778
- exports["ɵer"] = FileFormComponent;
63779
- exports["ɵes"] = FileViewerComponent;
63780
- exports["ɵet"] = FileVersionListComponent;
63781
- exports["ɵeu"] = ViewDetailComponent;
63782
- exports["ɵev"] = WorkflowHistoryComponent;
63783
- exports["ɵew"] = WorkflowHistoryDialogComponent;
63784
- exports["ɵex"] = WorkflowHistoryNewComponent;
63785
- exports["ɵey"] = WorkflowSettingComponent;
63786
- exports["ɵez"] = WorkflowSettingDialogComponent;
64433
+ exports["ɵea"] = TnDialogComponent;
64434
+ exports["ɵeb"] = TnColorPickerComponent;
64435
+ exports["ɵec"] = TnTinymceComponent;
64436
+ exports["ɵed"] = TnTabViewComponent;
64437
+ exports["ɵee"] = TableDetailFormComponent;
64438
+ exports["ɵef"] = FileIconPipe;
64439
+ exports["ɵeg"] = FileSizePipe;
64440
+ exports["ɵeh"] = QuickAddFormComponent;
64441
+ exports["ɵei"] = PreventShiftTabDirective;
64442
+ exports["ɵej"] = TnTemplateDirective;
64443
+ exports["ɵek"] = UserPickerComponent;
64444
+ exports["ɵel"] = UserPickerBoxComponent;
64445
+ exports["ɵem"] = CoCauToChucTestService;
64446
+ exports["ɵen"] = TnAppHelpComponent;
64447
+ exports["ɵeo"] = PathNameService;
64448
+ exports["ɵep"] = HelperCurrentPageComponent;
64449
+ exports["ɵeq"] = TnAppNotificationListComponent;
64450
+ exports["ɵer"] = TnAppNotificationComponent;
64451
+ exports["ɵes"] = FolderFormComponent;
64452
+ exports["ɵet"] = FileFormComponent;
64453
+ exports["ɵeu"] = FileViewerComponent;
64454
+ exports["ɵev"] = FileVersionListComponent;
64455
+ exports["ɵew"] = ViewDetailComponent;
64456
+ exports["ɵex"] = WorkflowHistoryComponent;
64457
+ exports["ɵey"] = WorkflowHistoryDialogComponent;
64458
+ exports["ɵez"] = WorkflowHistoryNewComponent;
63787
64459
  exports["ɵf"] = ListBase;
63788
- exports["ɵfa"] = WorkflowPermissionComponent;
63789
- exports["ɵfb"] = WorkflowPermissionFormComponent;
63790
- exports["ɵfc"] = ReferenceTextBoxComponent;
63791
- exports["ɵfd"] = QrCodeGeneratorComponent;
63792
- exports["ɵfe"] = AccessDeniedV1Component;
63793
- exports["ɵff"] = AddNewsComponent;
63794
- exports["ɵfg"] = ArticleService;
63795
- exports["ɵfh"] = NewsCategoryService;
63796
- exports["ɵfi"] = SignatureDetailComponent;
63797
- exports["ɵfj"] = KySoSimDanhSachChuKyComponent;
63798
- exports["ɵfk"] = KySoSimChuKyUserService;
63799
- exports["ɵfl"] = FileKySoSimComponent;
63800
- exports["ɵfm"] = KySoSimSignPDFService;
63801
- exports["ɵfn"] = TaiLieuCuaToiComponent;
63802
- exports["ɵfo"] = KhaiThacTaiLieuDungChungComponent;
63803
- exports["ɵfp"] = DanhMucDungChungService;
63804
- exports["ɵfq"] = TnTemplateComponent;
63805
- exports["ɵfr"] = LoadingPageV1Component;
63806
- exports["ɵfs"] = DropdownSettingFormComponent;
63807
- exports["ɵft"] = CheckReadyComponent;
63808
- exports["ɵfu"] = WorkflowButtonComponent;
63809
- exports["ɵfv"] = TnAccordionTabComponent;
64460
+ exports["ɵfa"] = WorkflowSettingComponent;
64461
+ exports["ɵfb"] = WorkflowSettingDialogComponent;
64462
+ exports["ɵfc"] = WorkflowPermissionComponent;
64463
+ exports["ɵfd"] = WorkflowPermissionFormComponent;
64464
+ exports["ɵfe"] = ReferenceTextBoxComponent;
64465
+ exports["ɵff"] = QrCodeGeneratorComponent;
64466
+ exports["ɵfg"] = AccessDeniedV1Component;
64467
+ exports["ɵfh"] = AddNewsComponent;
64468
+ exports["ɵfi"] = ArticleService;
64469
+ exports["ɵfj"] = NewsCategoryService;
64470
+ exports["ɵfk"] = SignatureDetailComponent;
64471
+ exports["ɵfl"] = KySoSimDanhSachChuKyComponent;
64472
+ exports["ɵfm"] = KySoSimChuKyUserService;
64473
+ exports["ɵfn"] = FileKySoSimComponent;
64474
+ exports["ɵfo"] = KySoSimSignPDFService;
64475
+ exports["ɵfp"] = TaiLieuCuaToiComponent;
64476
+ exports["ɵfq"] = KhaiThacTaiLieuDungChungComponent;
64477
+ exports["ɵfr"] = DanhMucDungChungService;
64478
+ exports["ɵfs"] = TnTemplateComponent;
64479
+ exports["ɵft"] = LoadingPageV1Component;
64480
+ exports["ɵfu"] = DropdownSettingFormComponent;
64481
+ exports["ɵfv"] = CheckReadyComponent;
64482
+ exports["ɵfw"] = WorkflowButtonComponent;
64483
+ exports["ɵfx"] = TnAccordionTabComponent;
63810
64484
  exports["ɵg"] = ListComponentBase;
63811
64485
  exports["ɵh"] = TreeTableComponent;
63812
64486
  exports["ɵi"] = UniversalLinkProcessorComponent;