@ebuilding/runtime 2.7.3 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/auth/auth-routing.module.d.ts +7 -0
  2. package/auth/auth.tokens.d.ts +7 -0
  3. package/auth/authmodule.d.ts +10 -0
  4. package/auth/index.d.ts +2 -0
  5. package/auth/login/login.component.d.ts +48 -0
  6. package/auth/login-cust/login.component.d.ts +47 -0
  7. package/core/app-feature-config.service.d.ts +26 -0
  8. package/core/app-feature.guard.d.ts +3 -0
  9. package/core/i18n/i18n.service.d.ts +25 -0
  10. package/core/index.d.ts +7 -0
  11. package/core/net/default.interceptor.d.ts +2 -0
  12. package/core/net/helper.d.ts +11 -0
  13. package/core/net/index.d.ts +2 -0
  14. package/core/net/refresh-token.d.ts +11 -0
  15. package/core/runtime-core.tokens.d.ts +18 -0
  16. package/core/start-default.guard.d.ts +2 -0
  17. package/core/startup/startup.service.d.ts +24 -0
  18. package/exception/index.d.ts +2 -0
  19. package/exception/index.module.d.ts +8 -0
  20. package/exception/main/index.d.ts +11 -0
  21. package/fesm2022/auth.mjs +500 -0
  22. package/fesm2022/auth.mjs.map +1 -0
  23. package/fesm2022/core.mjs +615 -0
  24. package/fesm2022/core.mjs.map +1 -0
  25. package/fesm2022/exception.mjs +52 -0
  26. package/fesm2022/exception.mjs.map +1 -0
  27. package/fesm2022/home.mjs +683 -0
  28. package/fesm2022/home.mjs.map +1 -0
  29. package/fesm2022/layout.mjs +2393 -0
  30. package/fesm2022/layout.mjs.map +1 -0
  31. package/home/box-bench/index.d.ts +23 -0
  32. package/home/box-custom/index.d.ts +18 -0
  33. package/home/box-item/index.d.ts +12 -0
  34. package/home/components/item.app/index.component.d.ts +14 -0
  35. package/home/components/item.calendar/index.component.d.ts +24 -0
  36. package/home/components/item.carousel/index.component.d.ts +21 -0
  37. package/home/components/item.chart/index.component.d.ts +20 -0
  38. package/home/components/item.notice/index.component.d.ts +17 -0
  39. package/home/components/item.report/index.component.d.ts +9 -0
  40. package/home/components/item.single/index.component.d.ts +9 -0
  41. package/home/components/item.workflow/index.component.d.ts +11 -0
  42. package/home/home-routing.module.d.ts +7 -0
  43. package/home/home.module.d.ts +8 -0
  44. package/home/home.service.d.ts +14 -0
  45. package/home/home.tokens.d.ts +11 -0
  46. package/home/index.d.ts +3 -0
  47. package/home/main/index.component.d.ts +25 -0
  48. package/layout/admin/index.component.d.ts +18 -0
  49. package/layout/auth/index.component.d.ts +19 -0
  50. package/layout/base.service.d.ts +48 -0
  51. package/layout/basic/basic.component.d.ts +13 -0
  52. package/layout/basic/widgets/clear-storage.component.d.ts +8 -0
  53. package/layout/basic/widgets/fullscreen.component.d.ts +8 -0
  54. package/layout/basic/widgets/i18n.component.d.ts +18 -0
  55. package/layout/basic/widgets/icon.component.d.ts +8 -0
  56. package/layout/basic/widgets/notify.component.d.ts +16 -0
  57. package/layout/basic/widgets/rtl.component.d.ts +8 -0
  58. package/layout/basic/widgets/search.component.d.ts +23 -0
  59. package/layout/basic/widgets/task.component.d.ts +8 -0
  60. package/layout/basic/widgets/user.component.d.ts +11 -0
  61. package/layout/blank/blank.component.d.ts +5 -0
  62. package/layout/components/nav-menu/index.d.ts +16 -0
  63. package/layout/components/nav-user/index.d.ts +54 -0
  64. package/layout/components/user/user.component.d.ts +57 -0
  65. package/layout/home/index.component.d.ts +20 -0
  66. package/layout/index.d.ts +7 -0
  67. package/layout/manage/index.component.d.ts +27 -0
  68. package/layout/manage/view.component.d.ts +21 -0
  69. package/package.json +50 -27
@@ -0,0 +1,2393 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Inject, Component, ChangeDetectionStrategy, Directive, ViewChild, Input, inject, HostListener, booleanAttribute, ChangeDetectorRef, ElementRef, EventEmitter, Output, HostBinding } from '@angular/core';
3
+ import * as i4 from '@angular/common';
4
+ import { CommonModule, DOCUMENT, UpperCasePipe } from '@angular/common';
5
+ import * as i1$1 from '@angular/router';
6
+ import { RouterOutlet, NavigationEnd, RouterLink, RouterModule, Router } from '@angular/router';
7
+ import { DA_SERVICE_TOKEN } from '@delon/auth';
8
+ import * as i2 from '@delon/theme';
9
+ import { I18nPipe, SettingsService, ALAIN_I18N_TOKEN, RTLService } from '@delon/theme';
10
+ import * as i5$1 from '@delon/theme/layout-default';
11
+ import { LayoutDefaultModule } from '@delon/theme/layout-default';
12
+ import * as i8 from '@ebuilding/runtime/shared-imports';
13
+ import { RuntimeSharedImportsModule } from '@ebuilding/runtime/shared-imports';
14
+ import * as i5$2 from '@ebuilding/abc/header-user';
15
+ import { GramDeonHeaderUserModule } from '@ebuilding/abc/header-user';
16
+ import * as i5 from '@angular/forms';
17
+ import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
18
+ import * as i1 from 'ng-zorro-antd/modal';
19
+ import { NzModalModule, NzModalService } from 'ng-zorro-antd/modal';
20
+ import { ModuleAPI, globalKey, Gram_App_Module } from '@ebuilding/base/shared.var/shared.constant';
21
+ import { AppCustomerId, AppSetData, AppSetName, AppSetId } from '@ebuilding/base/shared.var/shared.variable';
22
+ import screenfull from 'screenfull';
23
+ import { base64Encode } from '@ebuilding/base/shared.util/tool';
24
+ import * as i4$1 from 'ng-zorro-antd/message';
25
+ import { NzMessageService } from 'ng-zorro-antd/message';
26
+ import * as i6 from '@ebuilding/base/shared.srv/global.event';
27
+ import * as i3 from '@delon/acl';
28
+ import * as i10 from 'ng-zorro-antd/button';
29
+ import * as i6$1 from 'ng-zorro-antd/core/transition-patch';
30
+ import * as i12 from 'ng-zorro-antd/core/wave';
31
+ import * as i1$2 from 'ng-zorro-antd/menu';
32
+ import { NzMenuModule } from 'ng-zorro-antd/menu';
33
+ import * as i2$1 from 'ng-zorro-antd/dropdown';
34
+ import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
35
+ import * as i15 from 'ng-zorro-antd/grid';
36
+ import { NzGridModule } from 'ng-zorro-antd/grid';
37
+ import * as i16 from 'ng-zorro-antd/select';
38
+ import * as i3$1 from 'ng-zorro-antd/icon';
39
+ import { NzIconModule } from 'ng-zorro-antd/icon';
40
+ import * as i2$2 from 'ng-zorro-antd/input';
41
+ import { NzInputModule } from 'ng-zorro-antd/input';
42
+ import * as i19 from 'ng-zorro-antd/form';
43
+ import * as i20 from 'ng-zorro-antd/avatar';
44
+ import { NzAvatarModule } from 'ng-zorro-antd/avatar';
45
+ import { filter } from 'rxjs/operators';
46
+ import * as i7 from '@ebuilding/runtime/core';
47
+ import { RUNTIME_CORE_ENVIRONMENT } from '@ebuilding/runtime/core';
48
+ import * as i17 from 'ng-zorro-antd/badge';
49
+ import { NzBadgeModule } from 'ng-zorro-antd/badge';
50
+ import _ from 'lodash';
51
+ import * as i10$1 from 'ng-zorro-antd/spin';
52
+ import { NzSpinModule } from 'ng-zorro-antd/spin';
53
+ import * as i6$2 from '@delon/theme/setting-drawer';
54
+ import { SettingDrawerModule } from '@delon/theme/setting-drawer';
55
+ import { ThemeBtnComponent } from '@delon/theme/theme-btn';
56
+ import * as i1$3 from '@delon/abc/notice-icon';
57
+ import { NoticeIconModule } from '@delon/abc/notice-icon';
58
+ import { parse, formatDistanceToNow, add } from 'date-fns';
59
+ import { NzI18nService } from 'ng-zorro-antd/i18n';
60
+ import * as i4$2 from 'ng-zorro-antd/auto-complete';
61
+ import { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';
62
+ import { BehaviorSubject, debounceTime, distinctUntilChanged, tap } from 'rxjs';
63
+ import * as i8$1 from 'ng-zorro-antd/card';
64
+ import { NzCardModule } from 'ng-zorro-antd/card';
65
+
66
+ class LayoutAuthComponent {
67
+ http;
68
+ tokenService;
69
+ copyrightShow = false;
70
+ copyrightName = null;
71
+ copyrightICP = null;
72
+ copyrightGAN = null;
73
+ constructor(http, tokenService) {
74
+ this.http = http;
75
+ this.tokenService = tokenService;
76
+ }
77
+ ngOnInit() {
78
+ this.tokenService.clear();
79
+ this.loadPageData();
80
+ }
81
+ loadPageData() {
82
+ this.http.get(`assets/tmp/copyright.json?rd=${Math.random()}`).subscribe((res) => {
83
+ if (res && res?.show) {
84
+ this.copyrightShow = true;
85
+ this.copyrightName = res?.name;
86
+ this.copyrightICP = res?.icp;
87
+ this.copyrightGAN = res?.ga;
88
+ }
89
+ });
90
+ }
91
+ open1() {
92
+ window.open("https://beian.miit.gov.cn/#/Integrated/index", "_blank");
93
+ }
94
+ open2() {
95
+ window.open("https://beian.mps.gov.cn/#/query/webSearch", "_blank");
96
+ }
97
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutAuthComponent, deps: [{ token: i2._HttpClient }, { token: DA_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Component });
98
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: LayoutAuthComponent, isStandalone: true, selector: "layout-auth", ngImport: i0, template: "<div class=\"log\"><img src=\"assets/images/logo3.png\" /></div>\n<div class=\"content\">\n <div class=\"left-box\">\n <img src=\"/assets/images/login/login-banner.png\">\n </div>\n <div class=\"right-box\">\n <router-outlet></router-outlet>\n </div>\n</div>\n<div class=\"copyright\" *ngIf=\"copyrightShow\">\n <ul>\n <li>Copyright &#64; {{copyrightName}}</li>\n <li> <a (click)=\"open1()\">{{copyrightICP}}</a></li>\n <ng-container *ngIf=\"copyrightGAN\">\n <li><img src=\"assets/images/110.png\"></li>\n <li><a (click)=\"open2()\">{{copyrightGAN}}</a></li>\n </ng-container>\n </ul>\n</div>", styles: [":host ::ng-deep{display:block;width:100%;min-width:1080px;height:100%;min-height:100%;background:#fff;background-image:url(/assets/images/login/login-bg.jpg);background-repeat:no-repeat;background-position:center 0;background-size:100% 100%}:host ::ng-deep .log{position:fixed;z-index:999;padding:19px}:host ::ng-deep .log img{width:62px;height:auto}:host ::ng-deep .content{position:fixed;top:50%;left:50%;display:-moz-flex;display:-ms-flexbox;display:-webkit-flex;display:flex;width:80%;min-width:1058px;max-width:1170px;height:500px;color:#fff;text-align:center;-ms-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}:host ::ng-deep .left-box{display:flex;flex:1;align-items:center;justify-content:center;height:100%;padding:20px 0 0;background:#331bcb;border-top-left-radius:12px;border-bottom-left-radius:12px}:host ::ng-deep .right-box{width:500px;background:#fff;border-top-right-radius:12px;border-bottom-right-radius:12px}:host ::ng-deep .copyright{position:absolute;bottom:5px;left:50%;transform:translate(-50%)}:host ::ng-deep .copyright ul{display:flex;flex-direction:row;align-items:center;padding:0;margin:0;font-size:14px}:host ::ng-deep .copyright ul li{display:flex;align-items:center;margin:0;padding:0;color:#000}:host ::ng-deep .copyright ul li a{color:#000}:host ::ng-deep .copyright ul li:after{padding:0 5px}:host ::ng-deep .copyright ul li:nth-child(1):after,:host ::ng-deep .copyright ul li:nth-child(2):after{content:\"|\"}:host ::ng-deep .copyright ul img{width:15px;display:block;margin-right:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutAuthComponent, decorators: [{
101
+ type: Component,
102
+ args: [{ selector: 'layout-auth', imports: [CommonModule, RouterOutlet], template: "<div class=\"log\"><img src=\"assets/images/logo3.png\" /></div>\n<div class=\"content\">\n <div class=\"left-box\">\n <img src=\"/assets/images/login/login-banner.png\">\n </div>\n <div class=\"right-box\">\n <router-outlet></router-outlet>\n </div>\n</div>\n<div class=\"copyright\" *ngIf=\"copyrightShow\">\n <ul>\n <li>Copyright &#64; {{copyrightName}}</li>\n <li> <a (click)=\"open1()\">{{copyrightICP}}</a></li>\n <ng-container *ngIf=\"copyrightGAN\">\n <li><img src=\"assets/images/110.png\"></li>\n <li><a (click)=\"open2()\">{{copyrightGAN}}</a></li>\n </ng-container>\n </ul>\n</div>", styles: [":host ::ng-deep{display:block;width:100%;min-width:1080px;height:100%;min-height:100%;background:#fff;background-image:url(/assets/images/login/login-bg.jpg);background-repeat:no-repeat;background-position:center 0;background-size:100% 100%}:host ::ng-deep .log{position:fixed;z-index:999;padding:19px}:host ::ng-deep .log img{width:62px;height:auto}:host ::ng-deep .content{position:fixed;top:50%;left:50%;display:-moz-flex;display:-ms-flexbox;display:-webkit-flex;display:flex;width:80%;min-width:1058px;max-width:1170px;height:500px;color:#fff;text-align:center;-ms-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}:host ::ng-deep .left-box{display:flex;flex:1;align-items:center;justify-content:center;height:100%;padding:20px 0 0;background:#331bcb;border-top-left-radius:12px;border-bottom-left-radius:12px}:host ::ng-deep .right-box{width:500px;background:#fff;border-top-right-radius:12px;border-bottom-right-radius:12px}:host ::ng-deep .copyright{position:absolute;bottom:5px;left:50%;transform:translate(-50%)}:host ::ng-deep .copyright ul{display:flex;flex-direction:row;align-items:center;padding:0;margin:0;font-size:14px}:host ::ng-deep .copyright ul li{display:flex;align-items:center;margin:0;padding:0;color:#000}:host ::ng-deep .copyright ul li a{color:#000}:host ::ng-deep .copyright ul li:after{padding:0 5px}:host ::ng-deep .copyright ul li:nth-child(1):after,:host ::ng-deep .copyright ul li:nth-child(2):after{content:\"|\"}:host ::ng-deep .copyright ul img{width:15px;display:block;margin-right:10px}\n"] }]
103
+ }], ctorParameters: () => [{ type: i2._HttpClient }, { type: undefined, decorators: [{
104
+ type: Inject,
105
+ args: [DA_SERVICE_TOKEN]
106
+ }] }] });
107
+
108
+ let HeaderUserComponent$1 = class HeaderUserComponent {
109
+ modalService;
110
+ settings;
111
+ router;
112
+ http;
113
+ modal;
114
+ msg;
115
+ fb;
116
+ tokenService;
117
+ globalSrv;
118
+ cdr;
119
+ get user() {
120
+ return this.settings.user;
121
+ }
122
+ get customerId() {
123
+ return this.settings.getData(AppCustomerId);
124
+ }
125
+ avatar = null;
126
+ listEId = [];
127
+ defaultEName = null;
128
+ setIdIsVisible = false;
129
+ setIdIsOkLoading = false;
130
+ validateEIdForm;
131
+ myIsVisible = false;
132
+ constructor(modalService, settings, router, http, modal, msg, fb, tokenService, globalSrv, cdr) {
133
+ this.modalService = modalService;
134
+ this.settings = settings;
135
+ this.router = router;
136
+ this.http = http;
137
+ this.modal = modal;
138
+ this.msg = msg;
139
+ this.fb = fb;
140
+ this.tokenService = tokenService;
141
+ this.globalSrv = globalSrv;
142
+ this.cdr = cdr;
143
+ this.avatar = this.user?.avatar;
144
+ if (this.avatar == null) {
145
+ this.avatar = '/assets/images/employee.png';
146
+ }
147
+ this.globalSrv.subscribe('reload-header-user', (res) => {
148
+ this.avatar = this.user?.avatar;
149
+ this.cdr.detectChanges();
150
+ });
151
+ let tmpEIds = this.settings.getData(AppSetData);
152
+ if (tmpEIds && tmpEIds.length > 0) {
153
+ this.listEId = tmpEIds;
154
+ }
155
+ this.defaultEName = this.settings.getData(AppSetName);
156
+ }
157
+ validateForm;
158
+ captchaTooltipIcon = {
159
+ type: 'info-circle',
160
+ theme: 'twotone',
161
+ };
162
+ submitForm() {
163
+ Object.values(this.validateForm.controls).forEach((control) => {
164
+ if (control.invalid) {
165
+ control.markAsDirty();
166
+ control.updateValueAndValidity({ onlySelf: true });
167
+ }
168
+ });
169
+ if (this.validateForm.valid) {
170
+ this.isOkLoading = true;
171
+ const password = base64Encode(this.validateForm.controls?.["password"]?.value);
172
+ const newPassword = base64Encode(this.validateForm.controls?.["newPassword"]?.value);
173
+ this.http
174
+ .post(`${ModuleAPI.system}/sys/user/updatePwd`, {
175
+ oldPwd: password,
176
+ newPwd: newPassword,
177
+ })
178
+ .subscribe((res) => {
179
+ this.isOkLoading = false;
180
+ if (res.success) {
181
+ this.isVisible = true;
182
+ this.msg.success('密码修改成功,请重新登录');
183
+ this.tokenService.clear();
184
+ this.router.navigateByUrl(this.tokenService.login_url);
185
+ }
186
+ });
187
+ }
188
+ }
189
+ updateConfirmValidator() {
190
+ Promise.resolve().then(() => this.validateForm.controls?.["confirmPassword"]?.updateValueAndValidity());
191
+ }
192
+ confirmationValidator = (control) => {
193
+ if (!control.value) {
194
+ return { required: true };
195
+ }
196
+ else if (control.value !== this.validateForm.controls?.["newPassword"]?.value) {
197
+ return { confirm: true, error: true };
198
+ }
199
+ return {};
200
+ };
201
+ getCaptcha(e) {
202
+ e.preventDefault();
203
+ }
204
+ ngOnInit() {
205
+ this.validateForm = this.fb.group({
206
+ password: [null, [Validators.required]],
207
+ newPassword: [null, [Validators.required]],
208
+ confirmPassword: [null, [Validators.required, this.confirmationValidator]],
209
+ });
210
+ this.validateEIdForm = this.fb.group({
211
+ eId: [null, [Validators.required]],
212
+ });
213
+ }
214
+ logout() {
215
+ this.modal.confirm({
216
+ nzTitle: '提示',
217
+ nzContent: `您确定需要退出吗?`,
218
+ nzOnOk: () => {
219
+ this.http.post(`${ModuleAPI.system}/auth/logout`, {
220
+ sourceType: "PC"
221
+ }).subscribe((res) => {
222
+ this.tokenService.clear();
223
+ this.router.navigateByUrl(this.tokenService.login_url);
224
+ });
225
+ },
226
+ });
227
+ }
228
+ nzFooter = null;
229
+ isVisible = false;
230
+ isOkLoading = false;
231
+ showModal() {
232
+ this.validateForm.reset();
233
+ this.isVisible = true;
234
+ }
235
+ showAdmin() {
236
+ window.open(`/admin/home`, '_blank');
237
+ }
238
+ showSettings() {
239
+ this.myIsVisible = true;
240
+ }
241
+ myCancel() {
242
+ this.myIsVisible = false;
243
+ }
244
+ setScreenfull() {
245
+ if (screenfull.isEnabled) {
246
+ screenfull.toggle();
247
+ }
248
+ }
249
+ handleOk() {
250
+ this.isOkLoading = true;
251
+ setTimeout(() => {
252
+ this.isVisible = false;
253
+ this.isOkLoading = false;
254
+ }, 3000);
255
+ }
256
+ handleCancel() {
257
+ this.validateForm.reset();
258
+ this.isVisible = false;
259
+ }
260
+ goToChangeSetId() {
261
+ this.setIdIsVisible = true;
262
+ }
263
+ setIdCancel() {
264
+ this.validateEIdForm.reset();
265
+ this.setIdIsVisible = false;
266
+ }
267
+ submitSetIdForm() {
268
+ Object.values(this.validateEIdForm.controls).forEach((control) => {
269
+ if (control.invalid) {
270
+ control.markAsDirty();
271
+ control.updateValueAndValidity({ onlySelf: true });
272
+ }
273
+ });
274
+ if (this.validateEIdForm.valid) {
275
+ let id = this.validateEIdForm.controls?.["eId"]?.value;
276
+ this.setIdIsOkLoading = true;
277
+ this.http.post(`${ModuleAPI.system}/sys/user/changeEId/${id}`).subscribe((res) => {
278
+ this.setIdIsOkLoading = false;
279
+ if (res.success) {
280
+ this.setIdIsVisible = false;
281
+ this.listEId.forEach((item) => {
282
+ if (item.id == id) {
283
+ this.settings.setData(AppSetId, id);
284
+ this.settings.setData(AppSetName, item.name);
285
+ }
286
+ });
287
+ this.msg.success('切换成功');
288
+ this.router.navigateByUrl('/home');
289
+ }
290
+ });
291
+ }
292
+ }
293
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderUserComponent, deps: [{ token: i1.NzModalService }, { token: i2.SettingsService }, { token: i1$1.Router }, { token: i2._HttpClient }, { token: i1.NzModalService }, { token: i4$1.NzMessageService }, { token: i5.FormBuilder }, { token: DA_SERVICE_TOKEN }, { token: i6.GramGlobalService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
294
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HeaderUserComponent, isStandalone: true, selector: "header-user", ngImport: i0, template: "<div class=\"alain-default__nav-item d-flex align-items-center px-sm\" nz-dropdown nzPlacement=\"bottomRight\"\n nzTrigger=\"click\" [nzDropdownMenu]=\"userMenu\">\n <nz-avatar [nzSrc]=\"avatar\" nzSize=\"small\" class=\"mr-sm\"></nz-avatar>\n {{ user?.name }}\n</div>\n<nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <div nz-menu class=\"width-sm menu-user-dropdown\">\n <ng-container *ngIf=\"listEId!! && listEId.length > 1\">\n <div nz-menu-item (click)=\"goToChangeSetId()\">\n <span nz-icon nzType=\"idcard\"></span>\n \u8EAB\u4EFD\u5207\u6362\n </div>\n <div nz-menu-divider></div>\n </ng-container>\n <div nz-menu-item (click)=\"setScreenfull()\">\n <i nz-icon nzType=\"fullscreen\" class=\"mr-sm\"></i>\n \u5168\u5C4F\u663E\u793A\n </div>\n <div nz-menu-item (click)=\"showAdmin()\" *aclIf=\"'SET'\">\n <i nz-icon nzType=\"setting\" class=\"mr-sm\"></i>\n \u540E\u53F0\u8BBE\u7F6E\n </div>\n <div nz-menu-divider></div>\n <div nz-menu-item (click)=\"showModal()\">\n <i nz-icon nzType=\"eye\" class=\"mr-sm\"></i>\n \u5BC6\u7801\u4FEE\u6539\n </div>\n <div nz-menu-item (click)=\"logout()\">\n <i nz-icon nzType=\"logout\" class=\"mr-sm\"></i>\n \u9000\u51FA\u7CFB\u7EDF\n </div>\n <div nz-menu-divider></div>\n <div nz-menu-item>\n <i nz-icon nzType=\"number\" class=\"mr-sm\"></i>\n <label class=\"customerId\">\u4F01\u4E1AID</label>{{ customerId }}\n </div>\n </div>\n</nz-dropdown-menu>\n\n<nz-modal [(nzVisible)]=\"isVisible\" nzTitle=\"\u5BC6\u7801\u4FEE\u6539\" (nzOnCancel)=\"handleCancel()\" nzClassName=\"modalPwd\"\n [nzFooter]=\"nzFooter\">\n <ng-container *nzModalContent>\n <form nz-form [formGroup]=\"validateForm\" (ngSubmit)=\"submitForm()\" class=\"frmPwd\">\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"password\" nzRequired>\u5BC6\u7801</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" nzErrorTip=\"\u8BF7\u8F93\u5165\u5BC6\u7801\">\n <input nz-input type=\"password\" id=\"password\" formControlName=\"password\" maxLength=\"50\" />\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"newPassword\" nzRequired>\u65B0\u5BC6\u7801</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" nzErrorTip=\"\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801\">\n <input nz-input type=\"password\" id=\"newPassword\" formControlName=\"newPassword\" maxLength=\"50\"\n (ngModelChange)=\"updateConfirmValidator()\" />\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"confirmPassword\" nzRequired>\u786E\u8BA4\u5BC6\u7801</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" [nzErrorTip]=\"errorTpl\">\n <input nz-input type=\"password\" formControlName=\"confirmPassword\" id=\"confirmPassword\" maxLength=\"50\"\n (ngModelChange)=\"updateConfirmValidator()\" />\n <ng-template #errorTpl let-control>\n <ng-container *ngIf=\"control.hasError('required')\">\u8BF7\u8F93\u5165\u786E\u8BA4\u5BC6\u7801</ng-container>\n <ng-container *ngIf=\"control.hasError('confirm')\"> \u60A8\u4FE9\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4 </ng-container>\n </ng-template>\n </nz-form-control>\n </nz-form-item>\n <div class=\"button-box\">\n <div>\n <button nz-button nzType=\"default\" (click)=\"handleCancel()\" type=\"button\">\u53D6\u6D88</button>\n <button nz-button nzType=\"primary\" type=\"submit\" [nzLoading]=\"isOkLoading\">\u786E\u5B9A</button>\n </div>\n </div>\n </form>\n </ng-container>\n</nz-modal>\n\n<nz-modal [(nzVisible)]=\"setIdIsVisible\" nzTitle=\"\u8EAB\u4EFD\u5207\u6362\" (nzOnCancel)=\"setIdCancel()\" nzClassName=\"modalPwd\"\n [nzFooter]=\"nzFooter\">\n <form nz-form [formGroup]=\"validateEIdForm\" (ngSubmit)=\"submitSetIdForm()\" class=\"frmPwd\">\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\">\u5F53\u524D\u8EAB\u4EFD</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\">\n {{ defaultEName }}\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"setId\" nzRequired>\u5207\u6362\u8EAB\u4EFD</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" nzErrorTip=\"\u8BF7\u9009\u62E9\u8EAB\u4EFD\">\n <nz-select id=\"eId\" formControlName=\"eId\" nzPlaceHolder=\"\u8BF7\u9009\u62E9\u8EAB\u4EFD\">\n <ng-container *ngFor=\"let item of listEId\">\n <nz-option [nzValue]=\"item.id\" [nzLabel]=\"item.name\"></nz-option>\n </ng-container>\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n\n <div class=\"button-box\">\n <div>\n <button nz-button nzType=\"default\" (click)=\"setIdCancel()\" type=\"button\">\u53D6\u6D88</button>\n <button nz-button nzType=\"primary\" type=\"submit\" [nzLoading]=\"setIdIsOkLoading\">\u786E\u5B9A</button>\n </div>\n </div>\n </form>\n</nz-modal>\n\n<nz-modal [(nzVisible)]=\"myIsVisible\" nzTitle=\"\u5173\u4E8E\u6211\u4EEC\" (nzOnCancel)=\"myCancel()\" nzClassName=\"modalMe\">\n <div *nzModalContent>\n <p>\n <label class=\"title\">\u7248\u672C\u53F7</label>\n <label>2.1.0</label>\n </p>\n <p>\n <label class=\"title\">\u8054\u7CFB\u4EBA</label>\n <label>Jack Ren</label>\n </p>\n <p>\n <label class=\"title\">\u8054\u7CFB\u90AE\u7BB1</label>\n <label>jackren0913&#64;gmail.com</label>\n </p>\n <p>\n <label class=\"title\">\u4F01\u4E1A\u540D\u79F0</label>\n <label>\u897F\u5B89\u8398\u58A8\u79D1\u6280\u6709\u9650\u516C\u53F8</label>\n </p>\n </div>\n <div *nzModalFooter>\n <button nz-button nzType=\"default\" (click)=\"myCancel()\">\u5173\u95ED</button>\n </div>\n</nz-modal>", styles: [":host ::ng-deep{padding:0;overflow:auto;margin:auto}:host ::ng-deep header-user-pwd{display:flex;flex:1;width:100%;height:100%;padding:20px}:host ::ng-deep .alain-default__nav-item,:host ::ng-deep .alain-default__nav nz-badge{color:#262626}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i1.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i1.NzModalFooterDirective, selector: "[nzModalFooter]", exportAs: ["nzModalFooter"] }, { kind: "directive", type: i1.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: RuntimeSharedImportsModule }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.FormSubmitTouchDirective, selector: "form[formGroup]" }, { kind: "directive", type: i3.ACLIfDirective, selector: "[aclIf]", inputs: ["aclIf", "aclIfThen", "aclIfElse", "except"], exportAs: ["aclIf"] }, { kind: "component", type: i10.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i6$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i12.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i1$2.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "directive", type: i2$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i15.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i15.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i16.NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { kind: "component", type: i16.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i2$2.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "directive", type: i19.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i19.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { kind: "component", type: i19.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzFormLabel"] }, { kind: "component", type: i19.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }, { kind: "component", type: i20.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
295
+ };
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderUserComponent$1, decorators: [{
297
+ type: Component,
298
+ args: [{ selector: 'header-user', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
299
+ CommonModule,
300
+ FormsModule,
301
+ NzModalModule,
302
+ RuntimeSharedImportsModule
303
+ ], template: "<div class=\"alain-default__nav-item d-flex align-items-center px-sm\" nz-dropdown nzPlacement=\"bottomRight\"\n nzTrigger=\"click\" [nzDropdownMenu]=\"userMenu\">\n <nz-avatar [nzSrc]=\"avatar\" nzSize=\"small\" class=\"mr-sm\"></nz-avatar>\n {{ user?.name }}\n</div>\n<nz-dropdown-menu #userMenu=\"nzDropdownMenu\">\n <div nz-menu class=\"width-sm menu-user-dropdown\">\n <ng-container *ngIf=\"listEId!! && listEId.length > 1\">\n <div nz-menu-item (click)=\"goToChangeSetId()\">\n <span nz-icon nzType=\"idcard\"></span>\n \u8EAB\u4EFD\u5207\u6362\n </div>\n <div nz-menu-divider></div>\n </ng-container>\n <div nz-menu-item (click)=\"setScreenfull()\">\n <i nz-icon nzType=\"fullscreen\" class=\"mr-sm\"></i>\n \u5168\u5C4F\u663E\u793A\n </div>\n <div nz-menu-item (click)=\"showAdmin()\" *aclIf=\"'SET'\">\n <i nz-icon nzType=\"setting\" class=\"mr-sm\"></i>\n \u540E\u53F0\u8BBE\u7F6E\n </div>\n <div nz-menu-divider></div>\n <div nz-menu-item (click)=\"showModal()\">\n <i nz-icon nzType=\"eye\" class=\"mr-sm\"></i>\n \u5BC6\u7801\u4FEE\u6539\n </div>\n <div nz-menu-item (click)=\"logout()\">\n <i nz-icon nzType=\"logout\" class=\"mr-sm\"></i>\n \u9000\u51FA\u7CFB\u7EDF\n </div>\n <div nz-menu-divider></div>\n <div nz-menu-item>\n <i nz-icon nzType=\"number\" class=\"mr-sm\"></i>\n <label class=\"customerId\">\u4F01\u4E1AID</label>{{ customerId }}\n </div>\n </div>\n</nz-dropdown-menu>\n\n<nz-modal [(nzVisible)]=\"isVisible\" nzTitle=\"\u5BC6\u7801\u4FEE\u6539\" (nzOnCancel)=\"handleCancel()\" nzClassName=\"modalPwd\"\n [nzFooter]=\"nzFooter\">\n <ng-container *nzModalContent>\n <form nz-form [formGroup]=\"validateForm\" (ngSubmit)=\"submitForm()\" class=\"frmPwd\">\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"password\" nzRequired>\u5BC6\u7801</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" nzErrorTip=\"\u8BF7\u8F93\u5165\u5BC6\u7801\">\n <input nz-input type=\"password\" id=\"password\" formControlName=\"password\" maxLength=\"50\" />\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"newPassword\" nzRequired>\u65B0\u5BC6\u7801</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" nzErrorTip=\"\u8BF7\u8F93\u5165\u65B0\u5BC6\u7801\">\n <input nz-input type=\"password\" id=\"newPassword\" formControlName=\"newPassword\" maxLength=\"50\"\n (ngModelChange)=\"updateConfirmValidator()\" />\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"confirmPassword\" nzRequired>\u786E\u8BA4\u5BC6\u7801</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" [nzErrorTip]=\"errorTpl\">\n <input nz-input type=\"password\" formControlName=\"confirmPassword\" id=\"confirmPassword\" maxLength=\"50\"\n (ngModelChange)=\"updateConfirmValidator()\" />\n <ng-template #errorTpl let-control>\n <ng-container *ngIf=\"control.hasError('required')\">\u8BF7\u8F93\u5165\u786E\u8BA4\u5BC6\u7801</ng-container>\n <ng-container *ngIf=\"control.hasError('confirm')\"> \u60A8\u4FE9\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4 </ng-container>\n </ng-template>\n </nz-form-control>\n </nz-form-item>\n <div class=\"button-box\">\n <div>\n <button nz-button nzType=\"default\" (click)=\"handleCancel()\" type=\"button\">\u53D6\u6D88</button>\n <button nz-button nzType=\"primary\" type=\"submit\" [nzLoading]=\"isOkLoading\">\u786E\u5B9A</button>\n </div>\n </div>\n </form>\n </ng-container>\n</nz-modal>\n\n<nz-modal [(nzVisible)]=\"setIdIsVisible\" nzTitle=\"\u8EAB\u4EFD\u5207\u6362\" (nzOnCancel)=\"setIdCancel()\" nzClassName=\"modalPwd\"\n [nzFooter]=\"nzFooter\">\n <form nz-form [formGroup]=\"validateEIdForm\" (ngSubmit)=\"submitSetIdForm()\" class=\"frmPwd\">\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\">\u5F53\u524D\u8EAB\u4EFD</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\">\n {{ defaultEName }}\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"setId\" nzRequired>\u5207\u6362\u8EAB\u4EFD</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" nzErrorTip=\"\u8BF7\u9009\u62E9\u8EAB\u4EFD\">\n <nz-select id=\"eId\" formControlName=\"eId\" nzPlaceHolder=\"\u8BF7\u9009\u62E9\u8EAB\u4EFD\">\n <ng-container *ngFor=\"let item of listEId\">\n <nz-option [nzValue]=\"item.id\" [nzLabel]=\"item.name\"></nz-option>\n </ng-container>\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n\n <div class=\"button-box\">\n <div>\n <button nz-button nzType=\"default\" (click)=\"setIdCancel()\" type=\"button\">\u53D6\u6D88</button>\n <button nz-button nzType=\"primary\" type=\"submit\" [nzLoading]=\"setIdIsOkLoading\">\u786E\u5B9A</button>\n </div>\n </div>\n </form>\n</nz-modal>\n\n<nz-modal [(nzVisible)]=\"myIsVisible\" nzTitle=\"\u5173\u4E8E\u6211\u4EEC\" (nzOnCancel)=\"myCancel()\" nzClassName=\"modalMe\">\n <div *nzModalContent>\n <p>\n <label class=\"title\">\u7248\u672C\u53F7</label>\n <label>2.1.0</label>\n </p>\n <p>\n <label class=\"title\">\u8054\u7CFB\u4EBA</label>\n <label>Jack Ren</label>\n </p>\n <p>\n <label class=\"title\">\u8054\u7CFB\u90AE\u7BB1</label>\n <label>jackren0913&#64;gmail.com</label>\n </p>\n <p>\n <label class=\"title\">\u4F01\u4E1A\u540D\u79F0</label>\n <label>\u897F\u5B89\u8398\u58A8\u79D1\u6280\u6709\u9650\u516C\u53F8</label>\n </p>\n </div>\n <div *nzModalFooter>\n <button nz-button nzType=\"default\" (click)=\"myCancel()\">\u5173\u95ED</button>\n </div>\n</nz-modal>", styles: [":host ::ng-deep{padding:0;overflow:auto;margin:auto}:host ::ng-deep header-user-pwd{display:flex;flex:1;width:100%;height:100%;padding:20px}:host ::ng-deep .alain-default__nav-item,:host ::ng-deep .alain-default__nav nz-badge{color:#262626}\n"] }]
304
+ }], ctorParameters: () => [{ type: i1.NzModalService }, { type: i2.SettingsService }, { type: i1$1.Router }, { type: i2._HttpClient }, { type: i1.NzModalService }, { type: i4$1.NzMessageService }, { type: i5.FormBuilder }, { type: undefined, decorators: [{
305
+ type: Inject,
306
+ args: [DA_SERVICE_TOKEN]
307
+ }] }, { type: i6.GramGlobalService }, { type: i0.ChangeDetectorRef }] });
308
+
309
+ class NavUserComponent {
310
+ settings;
311
+ router;
312
+ http;
313
+ cdr;
314
+ fb;
315
+ modal;
316
+ msg;
317
+ tokenService;
318
+ globalSrv;
319
+ featureConfig;
320
+ /**
321
+ * 头像
322
+ */
323
+ avatar = null;
324
+ get user() {
325
+ return this.settings.user;
326
+ }
327
+ subscription = null;
328
+ itemKey = 'home';
329
+ listEId = [];
330
+ defaultEName = null;
331
+ setIdIsVisible = false;
332
+ setIdIsOkLoading = false;
333
+ validateEIdForm;
334
+ nzFooter = null;
335
+ wkCnt = 0;
336
+ enableWorkflow = true;
337
+ enableMessageCenter = true;
338
+ constructor(settings, router, http, cdr, fb, modal, msg, tokenService, globalSrv, featureConfig) {
339
+ this.settings = settings;
340
+ this.router = router;
341
+ this.http = http;
342
+ this.cdr = cdr;
343
+ this.fb = fb;
344
+ this.modal = modal;
345
+ this.msg = msg;
346
+ this.tokenService = tokenService;
347
+ this.globalSrv = globalSrv;
348
+ this.featureConfig = featureConfig;
349
+ this.avatar = this.user?.avatar;
350
+ if (this.avatar == null) {
351
+ this.avatar = '/assets/images/employee.png';
352
+ }
353
+ let tmpEIds = this.settings.getData(AppSetData);
354
+ if (tmpEIds && tmpEIds.length > 0) {
355
+ this.listEId = tmpEIds;
356
+ }
357
+ this.defaultEName = this.settings.getData(AppSetName);
358
+ this.globalSrv.subscribe(globalKey.workflow_cnt, (res) => {
359
+ this.getWorkflowCnt();
360
+ });
361
+ }
362
+ ngOnInit() {
363
+ this.validateEIdForm = this.fb.group({
364
+ eId: [null, [Validators.required]],
365
+ });
366
+ this.featureConfig.load().subscribe(config => {
367
+ this.enableWorkflow = config.enableWorkflow;
368
+ this.enableMessageCenter = config.enableMessageCenter;
369
+ this.getWorkflowCnt();
370
+ this.cdr.detectChanges();
371
+ });
372
+ this.getPageItemKey();
373
+ this.subscription = this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((event) => {
374
+ this.getPageItemKey();
375
+ });
376
+ }
377
+ ngOnDestroy() {
378
+ if (this.subscription) {
379
+ this.subscription.unsubscribe();
380
+ }
381
+ }
382
+ getPageItemKey() {
383
+ let url = this.router.url;
384
+ switch (url) {
385
+ case '/home':
386
+ this.itemKey = 'home';
387
+ break;
388
+ case '/workflow/list/apply':
389
+ case '/workflow/list/cc':
390
+ case '/workflow/list/processed':
391
+ this.itemKey = 'flow';
392
+ break;
393
+ case '/workflow/list/waiting':
394
+ this.itemKey = 'waiting';
395
+ break;
396
+ case '/message/list':
397
+ this.itemKey = 'message';
398
+ break;
399
+ default:
400
+ break;
401
+ }
402
+ this.cdr.detectChanges();
403
+ }
404
+ goToHome() {
405
+ this.router.navigateByUrl('/home');
406
+ }
407
+ goToFlowApply() {
408
+ this.router.navigateByUrl('/workflow/list/apply');
409
+ }
410
+ goToFlowWaiting() {
411
+ this.router.navigateByUrl('/workflow/list/waiting');
412
+ }
413
+ goToAdmin() {
414
+ window.open(`/admin/home`, '_blank');
415
+ }
416
+ goToMessage() {
417
+ this.router.navigateByUrl('/message/list');
418
+ }
419
+ goToChangeSetId() {
420
+ this.setIdIsVisible = true;
421
+ }
422
+ setIdCancel() {
423
+ this.validateEIdForm.reset();
424
+ this.setIdIsVisible = false;
425
+ }
426
+ submitSetIdForm() {
427
+ Object.values(this.validateEIdForm.controls).forEach((control) => {
428
+ if (control.invalid) {
429
+ control.markAsDirty();
430
+ control.updateValueAndValidity({ onlySelf: true });
431
+ }
432
+ });
433
+ if (this.validateEIdForm.valid) {
434
+ let id = this.validateEIdForm.controls?.['eId']?.value;
435
+ this.setIdIsOkLoading = true;
436
+ this.http.post(`${ModuleAPI.system}/sys/user/changeEId/${id}`).subscribe((res) => {
437
+ this.setIdIsOkLoading = false;
438
+ if (res.success) {
439
+ this.setIdIsVisible = false;
440
+ this.listEId.forEach((item) => {
441
+ if (item.id == id) {
442
+ this.settings.setData(AppSetId, id);
443
+ this.settings.setData(AppSetName, item.name);
444
+ }
445
+ });
446
+ this.msg.success('切换成功');
447
+ this.router.navigateByUrl('/home');
448
+ }
449
+ });
450
+ }
451
+ }
452
+ logout() {
453
+ this.modal.confirm({
454
+ nzTitle: '提示',
455
+ nzContent: `您确定需要退出吗?`,
456
+ nzOnOk: () => {
457
+ this.http.post(`${ModuleAPI.system}/auth/logout`, {
458
+ sourceType: "PC"
459
+ }).subscribe((res) => {
460
+ this.tokenService.clear();
461
+ this.router.navigateByUrl(this.tokenService.login_url);
462
+ });
463
+ },
464
+ });
465
+ }
466
+ getWorkflowCnt() {
467
+ if (!this.enableWorkflow) {
468
+ this.wkCnt = 0;
469
+ return;
470
+ }
471
+ this.wkCnt = 0;
472
+ this.http.post(`${ModuleAPI.user}/user/sys/getWorkflowCnt`).subscribe((res) => {
473
+ if (res && res.success && res.result) {
474
+ this.wkCnt = res.result;
475
+ }
476
+ });
477
+ }
478
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NavUserComponent, deps: [{ token: i2.SettingsService }, { token: i1$1.Router }, { token: i2._HttpClient }, { token: i0.ChangeDetectorRef }, { token: i5.FormBuilder }, { token: i1.NzModalService }, { token: i4$1.NzMessageService }, { token: DA_SERVICE_TOKEN }, { token: i6.GramGlobalService }, { token: i7.AppFeatureConfigService }], target: i0.ɵɵFactoryTarget.Component });
479
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: NavUserComponent, isStandalone: true, selector: "nav-user", ngImport: i0, template: "<div class=\"header\">\n <nz-avatar [nzSize]=\"96\" nzIcon=\"user\" [nzSrc]=\"avatar\"></nz-avatar>\n <label class=\"name\">{{user?.[\"empName\"]!!?user?.[\"empName\"]:user?.name}}</label>\n</div>\n<div class=\"waiting\">\n <div class=\"flow\" (click)=\"goToHome()\" [ngClass]=\"{'item-selected':itemKey=='home'}\">\n <span nz-icon nzType=\"home\"></span>\n <label>\u9996\u9875</label>\n </div>\n <!-- <div class=\"flow\" (click)=\"goToFlowApply()\" [ngClass]=\"{'item-selected':itemKey=='flow'}\">\n <span nz-icon nzType=\"node-index\"></span>\n <label>\u6D41\u7A0B\u4E2D\u5FC3</label>\n </div> -->\n\n <div class=\"flow\" *ngIf=\"enableWorkflow\" (click)=\"goToFlowWaiting()\" [ngClass]=\"{'item-selected':itemKey=='waiting'}\">\n <span nz-icon nzType=\"node-index\"></span>\n <label>\u5F85\u529E\u6D41\u7A0B</label>\n <ng-container *ngIf=\"wkCnt!! && wkCnt>0\">\n <nz-badge nzStandalone [nzCount]=\"wkCnt\"></nz-badge>\n </ng-container>\n </div>\n <div class=\"msg\" *ngIf=\"enableMessageCenter\" (click)=\"goToMessage()\" [ngClass]=\"{'item-selected':itemKey=='message'}\">\n <span nz-icon nzType=\"message\"></span>\n <label>\u6D88\u606F\u4E2D\u5FC3</label>\n </div>\n\n <!-- <div class=\"flow\" (click)=\"goToFlowWaiting()\" [ngClass]=\"{'item-selected':itemKey=='waiting'}\">\n <span nz-icon nzType=\"book\"></span>\n <label>\u5F85\u529E\u4E8B\u9879</label>\n <ng-container *ngIf=\"wkCnt!! && wkCnt>0\">\n <nz-badge nzStandalone [nzCount]=\"wkCnt\"></nz-badge>\n </ng-container>\n </div> -->\n</div>\n\n<div class=\"menu\"></div>\n\n<div class=\"footer\">\n <div (click)=\"goToChangeSetId()\" *ngIf=\"listEId!! && listEId.length>1\">\n <span nz-icon nzType=\"idcard\"></span>\n <label>\u8EAB\u4EFD\u5207\u6362</label>\n </div>\n <div (click)=\"goToAdmin()\" *aclIf=\"'SET'\">\n <span nz-icon nzType=\"setting\"></span>\n <label>\u540E\u53F0\u914D\u7F6E</label>\n </div>\n <div (click)=\"logout()\">\n <span nz-icon nzType=\"logout\"></span>\n <label>\u9000\u51FA\u7CFB\u7EDF</label>\n </div>\n</div>\n\n<ng-template #nzFooter></ng-template>\n<nz-modal [(nzVisible)]=\"setIdIsVisible\" nzTitle=\"\u8EAB\u4EFD\u5207\u6362\" (nzOnCancel)=\"setIdCancel()\" nzClassName=\"modalPwd\"\n [nzFooter]=\"nzFooter\">\n <form nz-form [formGroup]=\"validateEIdForm\" (ngSubmit)=\"submitSetIdForm()\" class=\"frmPwd\">\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\">\u5F53\u524D\u8EAB\u4EFD</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\"> {{defaultEName}} </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"eId\" nzRequired>\u5207\u6362\u8EAB\u4EFD</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" nzErrorTip=\"\u8BF7\u9009\u62E9\u8EAB\u4EFD\">\n <nz-select id=\"eId\" formControlName=\"eId\" nzPlaceHolder=\"\u8BF7\u9009\u62E9\u8EAB\u4EFD\">\n <ng-container *ngFor=\"let item of listEId\">\n <nz-option [nzValue]=\"item.id\" [nzLabel]=\"item.name\"></nz-option>\n </ng-container>\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n\n <div class=\"button-box\">\n <div>\n <button nz-button nzType=\"default\" (click)=\"setIdCancel()\" type=\"button\">\u53D6\u6D88</button>\n <button nz-button nzType=\"primary\" type=\"submit\" [nzLoading]=\"setIdIsOkLoading\">\u786E\u5B9A</button>\n </div>\n </div>\n </form>\n</nz-modal>\n", styles: [":host ::ng-deep{display:flex;flex-direction:column;height:100%;padding:0;overflow:auto;overflow:hidden;font-size:14px}:host ::ng-deep .header{display:flex;flex-direction:column;align-items:center;padding:35px 0 0}:host ::ng-deep .header .name{margin-top:15px;font-weight:700;font-size:16px}:host ::ng-deep .waiting{margin-top:50px}:host ::ng-deep .waiting div{position:relative;display:flex;flex-direction:row;align-items:center;padding:10px 25px;cursor:pointer}:host ::ng-deep .waiting div span{margin-right:5px}:host ::ng-deep .waiting div label{cursor:pointer}:host ::ng-deep .waiting div:hover{background:#4f85ff}:host ::ng-deep .waiting nz-badge{position:absolute;top:10px;right:35px}:host ::ng-deep .waiting nz-badge nz-badge-sup{margin-left:4px;box-shadow:none}:host ::ng-deep .waiting nz-badge nz-badge-sup span{margin-right:0}:host ::ng-deep .waiting .flow{margin:0 0 12px}:host ::ng-deep .waiting .flow nz-badge-sup{background:#fdb02a}:host ::ng-deep .waiting .msg nz-badge-sup{background:#329afa}:host ::ng-deep .menu{position:relative;flex:1;padding:50px 20px 0}:host ::ng-deep .menu .item{height:44px;margin:0 0 15px;line-height:44px}:host ::ng-deep .menu .actived{width:120px;padding:0 0 0 15px;color:#1177fb;background:#fff;border-top-left-radius:22px;border-bottom-left-radius:22px}:host ::ng-deep .footer{display:flex;flex-direction:column;margin-bottom:30px}:host ::ng-deep .footer div{margin-top:15px;padding:10px 25px;cursor:pointer}:host ::ng-deep .footer div span{margin-right:6px}:host ::ng-deep .footer div label{cursor:pointer}:host ::ng-deep .footer div:hover{background:#4f85ff}:host ::ng-deep .item-selected{background:#4f85ff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RuntimeSharedImportsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i8.FormSubmitTouchDirective, selector: "form[formGroup]" }, { kind: "directive", type: i3.ACLIfDirective, selector: "[aclIf]", inputs: ["aclIf", "aclIfThen", "aclIfElse", "except"], exportAs: ["aclIf"] }, { kind: "component", type: i10.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i6$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i12.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i15.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i15.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "component", type: i16.NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { kind: "component", type: i16.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus"], exportAs: ["nzSelect"] }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i17.NzBadgeComponent, selector: "nz-badge", inputs: ["nzShowZero", "nzShowDot", "nzStandalone", "nzDot", "nzOverflowCount", "nzColor", "nzStyle", "nzText", "nzTitle", "nzStatus", "nzCount", "nzOffset", "nzSize"], exportAs: ["nzBadge"] }, { kind: "component", type: i1.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i19.NzFormDirective, selector: "[nz-form]", inputs: ["nzLayout", "nzNoColon", "nzAutoTips", "nzDisableAutoTips", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzForm"] }, { kind: "component", type: i19.NzFormItemComponent, selector: "nz-form-item", exportAs: ["nzFormItem"] }, { kind: "component", type: i19.NzFormLabelComponent, selector: "nz-form-label", inputs: ["nzFor", "nzRequired", "nzNoColon", "nzTooltipTitle", "nzTooltipIcon", "nzLabelAlign", "nzLabelWrap"], exportAs: ["nzFormLabel"] }, { kind: "component", type: i19.NzFormControlComponent, selector: "nz-form-control", inputs: ["nzSuccessTip", "nzWarningTip", "nzErrorTip", "nzValidatingTip", "nzExtra", "nzAutoTips", "nzDisableAutoTips", "nzHasFeedback", "nzValidateStatus"], exportAs: ["nzFormControl"] }, { kind: "component", type: i20.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }] });
480
+ }
481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NavUserComponent, decorators: [{
482
+ type: Component,
483
+ args: [{ selector: 'nav-user', standalone: true, imports: [
484
+ CommonModule,
485
+ RuntimeSharedImportsModule
486
+ ], template: "<div class=\"header\">\n <nz-avatar [nzSize]=\"96\" nzIcon=\"user\" [nzSrc]=\"avatar\"></nz-avatar>\n <label class=\"name\">{{user?.[\"empName\"]!!?user?.[\"empName\"]:user?.name}}</label>\n</div>\n<div class=\"waiting\">\n <div class=\"flow\" (click)=\"goToHome()\" [ngClass]=\"{'item-selected':itemKey=='home'}\">\n <span nz-icon nzType=\"home\"></span>\n <label>\u9996\u9875</label>\n </div>\n <!-- <div class=\"flow\" (click)=\"goToFlowApply()\" [ngClass]=\"{'item-selected':itemKey=='flow'}\">\n <span nz-icon nzType=\"node-index\"></span>\n <label>\u6D41\u7A0B\u4E2D\u5FC3</label>\n </div> -->\n\n <div class=\"flow\" *ngIf=\"enableWorkflow\" (click)=\"goToFlowWaiting()\" [ngClass]=\"{'item-selected':itemKey=='waiting'}\">\n <span nz-icon nzType=\"node-index\"></span>\n <label>\u5F85\u529E\u6D41\u7A0B</label>\n <ng-container *ngIf=\"wkCnt!! && wkCnt>0\">\n <nz-badge nzStandalone [nzCount]=\"wkCnt\"></nz-badge>\n </ng-container>\n </div>\n <div class=\"msg\" *ngIf=\"enableMessageCenter\" (click)=\"goToMessage()\" [ngClass]=\"{'item-selected':itemKey=='message'}\">\n <span nz-icon nzType=\"message\"></span>\n <label>\u6D88\u606F\u4E2D\u5FC3</label>\n </div>\n\n <!-- <div class=\"flow\" (click)=\"goToFlowWaiting()\" [ngClass]=\"{'item-selected':itemKey=='waiting'}\">\n <span nz-icon nzType=\"book\"></span>\n <label>\u5F85\u529E\u4E8B\u9879</label>\n <ng-container *ngIf=\"wkCnt!! && wkCnt>0\">\n <nz-badge nzStandalone [nzCount]=\"wkCnt\"></nz-badge>\n </ng-container>\n </div> -->\n</div>\n\n<div class=\"menu\"></div>\n\n<div class=\"footer\">\n <div (click)=\"goToChangeSetId()\" *ngIf=\"listEId!! && listEId.length>1\">\n <span nz-icon nzType=\"idcard\"></span>\n <label>\u8EAB\u4EFD\u5207\u6362</label>\n </div>\n <div (click)=\"goToAdmin()\" *aclIf=\"'SET'\">\n <span nz-icon nzType=\"setting\"></span>\n <label>\u540E\u53F0\u914D\u7F6E</label>\n </div>\n <div (click)=\"logout()\">\n <span nz-icon nzType=\"logout\"></span>\n <label>\u9000\u51FA\u7CFB\u7EDF</label>\n </div>\n</div>\n\n<ng-template #nzFooter></ng-template>\n<nz-modal [(nzVisible)]=\"setIdIsVisible\" nzTitle=\"\u8EAB\u4EFD\u5207\u6362\" (nzOnCancel)=\"setIdCancel()\" nzClassName=\"modalPwd\"\n [nzFooter]=\"nzFooter\">\n <form nz-form [formGroup]=\"validateEIdForm\" (ngSubmit)=\"submitSetIdForm()\" class=\"frmPwd\">\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\">\u5F53\u524D\u8EAB\u4EFD</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\"> {{defaultEName}} </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label [nzSm]=\"6\" [nzXs]=\"24\" nzFor=\"eId\" nzRequired>\u5207\u6362\u8EAB\u4EFD</nz-form-label>\n <nz-form-control [nzSm]=\"14\" [nzXs]=\"24\" nzErrorTip=\"\u8BF7\u9009\u62E9\u8EAB\u4EFD\">\n <nz-select id=\"eId\" formControlName=\"eId\" nzPlaceHolder=\"\u8BF7\u9009\u62E9\u8EAB\u4EFD\">\n <ng-container *ngFor=\"let item of listEId\">\n <nz-option [nzValue]=\"item.id\" [nzLabel]=\"item.name\"></nz-option>\n </ng-container>\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n\n <div class=\"button-box\">\n <div>\n <button nz-button nzType=\"default\" (click)=\"setIdCancel()\" type=\"button\">\u53D6\u6D88</button>\n <button nz-button nzType=\"primary\" type=\"submit\" [nzLoading]=\"setIdIsOkLoading\">\u786E\u5B9A</button>\n </div>\n </div>\n </form>\n</nz-modal>\n", styles: [":host ::ng-deep{display:flex;flex-direction:column;height:100%;padding:0;overflow:auto;overflow:hidden;font-size:14px}:host ::ng-deep .header{display:flex;flex-direction:column;align-items:center;padding:35px 0 0}:host ::ng-deep .header .name{margin-top:15px;font-weight:700;font-size:16px}:host ::ng-deep .waiting{margin-top:50px}:host ::ng-deep .waiting div{position:relative;display:flex;flex-direction:row;align-items:center;padding:10px 25px;cursor:pointer}:host ::ng-deep .waiting div span{margin-right:5px}:host ::ng-deep .waiting div label{cursor:pointer}:host ::ng-deep .waiting div:hover{background:#4f85ff}:host ::ng-deep .waiting nz-badge{position:absolute;top:10px;right:35px}:host ::ng-deep .waiting nz-badge nz-badge-sup{margin-left:4px;box-shadow:none}:host ::ng-deep .waiting nz-badge nz-badge-sup span{margin-right:0}:host ::ng-deep .waiting .flow{margin:0 0 12px}:host ::ng-deep .waiting .flow nz-badge-sup{background:#fdb02a}:host ::ng-deep .waiting .msg nz-badge-sup{background:#329afa}:host ::ng-deep .menu{position:relative;flex:1;padding:50px 20px 0}:host ::ng-deep .menu .item{height:44px;margin:0 0 15px;line-height:44px}:host ::ng-deep .menu .actived{width:120px;padding:0 0 0 15px;color:#1177fb;background:#fff;border-top-left-radius:22px;border-bottom-left-radius:22px}:host ::ng-deep .footer{display:flex;flex-direction:column;margin-bottom:30px}:host ::ng-deep .footer div{margin-top:15px;padding:10px 25px;cursor:pointer}:host ::ng-deep .footer div span{margin-right:6px}:host ::ng-deep .footer div label{cursor:pointer}:host ::ng-deep .footer div:hover{background:#4f85ff}:host ::ng-deep .item-selected{background:#4f85ff}\n"] }]
487
+ }], ctorParameters: () => [{ type: i2.SettingsService }, { type: i1$1.Router }, { type: i2._HttpClient }, { type: i0.ChangeDetectorRef }, { type: i5.FormBuilder }, { type: i1.NzModalService }, { type: i4$1.NzMessageService }, { type: undefined, decorators: [{
488
+ type: Inject,
489
+ args: [DA_SERVICE_TOKEN]
490
+ }] }, { type: i6.GramGlobalService }, { type: i7.AppFeatureConfigService }] });
491
+
492
+ class LayoutBaseService {
493
+ http;
494
+ router;
495
+ menuService;
496
+ settingService;
497
+ aclService;
498
+ loading = true;
499
+ visibleMenuData = [];
500
+ hasMoreItems = false;
501
+ moreItems = [];
502
+ /**
503
+ * layout属性
504
+ */
505
+ options = {
506
+ logoExpanded: `./assets/images/logo3.png`,
507
+ logoCollapsed: `./assets/images/logo3.png`,
508
+ //title: AppName,
509
+ //hideCollapse: true,
510
+ hideAside: true,
511
+ };
512
+ /**
513
+ * 菜单集合
514
+ */
515
+ menuData = [];
516
+ /**
517
+ * 当前用户
518
+ */
519
+ get user() {
520
+ return this.settingService.user;
521
+ }
522
+ constructor(http, router, menuService, settingService, aclService) {
523
+ this.http = http;
524
+ this.router = router;
525
+ this.menuService = menuService;
526
+ this.settingService = settingService;
527
+ this.aclService = aclService;
528
+ }
529
+ /**
530
+ * 初始化菜单数据
531
+ */
532
+ initMenuData() {
533
+ let moduelData = this.settingService.getData(Gram_App_Module);
534
+ if (moduelData && Array.isArray(moduelData)) {
535
+ moduelData = moduelData.filter((res) => {
536
+ return res?.izHome == true && res.code != 'user';
537
+ });
538
+ let splitItem = this.router.url.split('/');
539
+ let code = null;
540
+ if (splitItem && splitItem.length > 1) {
541
+ code = splitItem[1];
542
+ }
543
+ let roles = this.aclService.data.roles;
544
+ let showUser = false;
545
+ if (roles &&
546
+ roles.some((item) => {
547
+ return item == 'USER';
548
+ })) {
549
+ showUser = true;
550
+ }
551
+ if (this.user && this.user?.["empId"] && showUser == true) {
552
+ moduelData.unshift({
553
+ code: 'user',
554
+ text: '员工自助',
555
+ icon: 'desktop',
556
+ link: `/user/default/${this.user?.["empId"]}`,
557
+ children: [
558
+ {
559
+ code: '',
560
+ text: '',
561
+ },
562
+ ],
563
+ });
564
+ }
565
+ moduelData.unshift({
566
+ code: 'home',
567
+ text: '首页',
568
+ icon: 'home',
569
+ link: '/home',
570
+ children: [
571
+ {
572
+ code: '',
573
+ text: '',
574
+ },
575
+ ],
576
+ });
577
+ let moduleInfo = null;
578
+ moduelData.forEach((item) => {
579
+ item['selected'] = false;
580
+ if (item.code == code || (item.code == 'home' && (code == 'workflow' || code == 'message'))) {
581
+ item['selected'] = true;
582
+ moduleInfo = item;
583
+ }
584
+ });
585
+ this.addMenuData(moduleInfo);
586
+ this.menuData = moduelData;
587
+ }
588
+ else {
589
+ this.menuData = [];
590
+ }
591
+ this.loading = false;
592
+ }
593
+ /**
594
+ * 初始化菜单数据
595
+ */
596
+ initMenuData2(url) {
597
+ let moduelData = this.settingService.getData(Gram_App_Module);
598
+ if (moduelData && Array.isArray(moduelData)) {
599
+ moduelData = moduelData.filter((res) => {
600
+ return res?.izHome == true && res.code != 'user';
601
+ });
602
+ let splitItem = url.split('/');
603
+ let code = null;
604
+ if (splitItem && splitItem.length > 1) {
605
+ code = splitItem[1];
606
+ }
607
+ let roles = this.aclService.data.roles;
608
+ let showUser = false;
609
+ if (roles &&
610
+ roles.some((item) => {
611
+ return item == 'USER';
612
+ })) {
613
+ showUser = true;
614
+ }
615
+ if (this.user && this.user?.["empId"] && showUser == true) {
616
+ moduelData.unshift({
617
+ code: 'user',
618
+ text: '员工自助',
619
+ icon: 'desktop',
620
+ link: `/user/default/${this.user?.["empId"]}`,
621
+ children: [
622
+ {
623
+ code: '',
624
+ text: '',
625
+ },
626
+ ],
627
+ });
628
+ }
629
+ moduelData.unshift({
630
+ code: 'home',
631
+ text: '首页',
632
+ icon: 'home',
633
+ link: '/home',
634
+ children: [
635
+ {
636
+ code: '',
637
+ text: '',
638
+ },
639
+ ],
640
+ });
641
+ let moduleInfo = null;
642
+ moduelData.forEach((item) => {
643
+ item['selected'] = false;
644
+ if (item.code == code || (item.code == 'home' && (code == 'workflow' || code == 'message'))) {
645
+ item['selected'] = true;
646
+ moduleInfo = item;
647
+ }
648
+ });
649
+ this.addMenuData(moduleInfo);
650
+ this.menuData = moduelData;
651
+ }
652
+ else {
653
+ this.menuData = [];
654
+ }
655
+ this.loading = false;
656
+ }
657
+ addMenuData(e) {
658
+ if (e) {
659
+ this.menuService.add([e]);
660
+ }
661
+ else {
662
+ this.menuService.add([]);
663
+ }
664
+ this.menuService.resume();
665
+ }
666
+ menuClick(e) {
667
+ if (e.link) {
668
+ let curUrl = this.router.url;
669
+ if (curUrl.indexOf(e.link) == -1) {
670
+ this.initMenuData2(e.link);
671
+ this.router.navigateByUrl(`${e.link}`);
672
+ }
673
+ }
674
+ }
675
+ filterMenu(e) {
676
+ let tmpData = _.cloneDeep(e);
677
+ if (tmpData && tmpData?.children && Array.isArray(tmpData.children)) {
678
+ tmpData.children.forEach((a) => {
679
+ if (a && a?.children && Array.isArray(a?.children)) {
680
+ a.children.forEach((b) => {
681
+ if (b && b?.children && Array.isArray(b?.children)) {
682
+ b.children = [];
683
+ }
684
+ });
685
+ }
686
+ });
687
+ }
688
+ return tmpData;
689
+ }
690
+ /**
691
+ * 判断是否隐藏
692
+ * @param item
693
+ * @returns
694
+ */
695
+ checkMenuItemHide(item) {
696
+ let isHide = false;
697
+ if (item && item?.type) {
698
+ switch (item.type) {
699
+ case 'PAGE':
700
+ case 'TREE_FORM':
701
+ case 'TREE_LIST':
702
+ case 'MENU_GROUP':
703
+ case 'MENU_SINGLE':
704
+ isHide = true;
705
+ break;
706
+ default:
707
+ break;
708
+ }
709
+ }
710
+ return isHide;
711
+ }
712
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutBaseService, deps: [{ token: i2._HttpClient }, { token: i1$1.Router }, { token: i2.MenuService }, { token: i2.SettingsService }, { token: i3.ACLService }], target: i0.ɵɵFactoryTarget.Directive });
713
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: LayoutBaseService, isStandalone: true, ngImport: i0 });
714
+ }
715
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutBaseService, decorators: [{
716
+ type: Directive
717
+ }], ctorParameters: () => [{ type: i2._HttpClient }, { type: i1$1.Router }, { type: i2.MenuService }, { type: i2.SettingsService }, { type: i3.ACLService }] });
718
+
719
+ class LayoutHomeComponent extends LayoutBaseService {
720
+ http;
721
+ router;
722
+ menuService;
723
+ settingService;
724
+ aclService;
725
+ menuContainer;
726
+ constructor(http, router, menuService, settingService, aclService) {
727
+ super(http, router, menuService, settingService, aclService);
728
+ this.http = http;
729
+ this.router = router;
730
+ this.menuService = menuService;
731
+ this.settingService = settingService;
732
+ this.aclService = aclService;
733
+ this.options = {
734
+ //hideCollapse: true,
735
+ hideAside: false,
736
+ //hideLogo: true,
737
+ //title: null,
738
+ showHeaderCollapse: false
739
+ };
740
+ this.initMenuData();
741
+ }
742
+ ngAfterViewInit() {
743
+ setTimeout(() => {
744
+ this.updateVisibleMenuData();
745
+ }, 0);
746
+ window.addEventListener('resize', this.updateVisibleMenuData.bind(this));
747
+ }
748
+ updateVisibleMenuData() {
749
+ const containerWidth = this.menuContainer.nativeElement.offsetWidth - 180;
750
+ if (containerWidth > 0) {
751
+ const itemWidth = 80;
752
+ const itemsToShow = Math.floor(containerWidth / itemWidth);
753
+ this.visibleMenuData = this.menuData.slice(0, itemsToShow - 1);
754
+ this.hasMoreItems = this.menuData.length > itemsToShow;
755
+ if (this.menuData.length > this.visibleMenuData.length) {
756
+ this.moreItems = this.menuData.slice(itemsToShow - 1, this.menuData.length);
757
+ }
758
+ else {
759
+ this.moreItems = [];
760
+ }
761
+ }
762
+ }
763
+ toggleShowAll() { }
764
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutHomeComponent, deps: [{ token: i2._HttpClient }, { token: i1$1.Router }, { token: i2.MenuService }, { token: i2.SettingsService }, { token: i3.ACLService }], target: i0.ɵɵFactoryTarget.Component });
765
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: LayoutHomeComponent, isStandalone: true, selector: "layout-home", host: { classAttribute: "layout-basic" }, viewQueries: [{ propertyName: "menuContainer", first: true, predicate: ["menuContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
766
+ <nz-spin [nzSpinning]="loading" nzTip="拼命加载中..." class="deon-list-spin">
767
+ <layout-default [options]="options" [content]="contentTpl" [nav]="asideUserTpl">
768
+ <layout-default-header-item direction="middle">
769
+ <ul nz-menu nzMode="horizontal" class="header-item-ul" #menuContainer *ngIf="visibleMenuData!!">
770
+ <li nz-menu-item *ngFor="let item of visibleMenuData; let index = index" [nzSelected]="item.selected" (click)="menuClick(item)">
771
+ <div class="menu-text">
772
+ <div class="icon">
773
+ <span nz-icon [ngClass]="'backgroup_' + index" [nzType]="item?.selected == true ? item.icon?.value : item.icon"></span>
774
+ </div>
775
+ <div class="text">{{ item.text }}</div>
776
+ </div>
777
+ </li>
778
+ <li nz-menu-item *ngIf="hasMoreItems" (click)="toggleShowAll()">
779
+ <div class="menu-text" nz-dropdown [nzDropdownMenu]="menu">
780
+ <div class="icon">
781
+ <span nz-icon nzType="ordered-list" class="backgroup_more"></span>
782
+ </div>
783
+ <div class="text">更多</div>
784
+ </div>
785
+ <nz-dropdown-menu #menu="nzDropdownMenu">
786
+ <ul nz-menu nzSelectable>
787
+ <ng-container *ngFor="let b of moreItems">
788
+ <li nz-menu-item (click)="menuClick(b)">{{ b.text }}</li>
789
+ </ng-container>
790
+ </ul>
791
+ </nz-dropdown-menu>
792
+ </li>
793
+ </ul>
794
+ </layout-default-header-item>
795
+ <layout-default-header-item direction="right">
796
+ <header-user></header-user>
797
+ </layout-default-header-item>
798
+ <ng-template #contentTpl>
799
+ <router-outlet></router-outlet>
800
+ </ng-template>
801
+ <ng-template #asideUserTpl>
802
+ <nav-user></nav-user>
803
+ </ng-template>
804
+ </layout-default>
805
+ </nz-spin>
806
+ `, isInline: true, styles: [":host ::ng-deep .backgroup_more{background:#e8a0d6}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: LayoutDefaultModule }, { kind: "component", type: i5$1.LayoutDefaultComponent, selector: "layout-default", inputs: ["options", "asideUser", "asideBottom", "nav", "content", "customError", "fetchingStrictly", "fetching"], exportAs: ["layoutDefault"] }, { kind: "component", type: i5$1.LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: ["hidden", "direction"] }, { kind: "ngmodule", type: RuntimeSharedImportsModule }, { kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i6$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i2$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i10$1.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "ngmodule", type: GramDeonHeaderUserModule }, { kind: "component", type: NavUserComponent, selector: "nav-user" }, { kind: "component", type: HeaderUserComponent$1, selector: "header-user" }] });
807
+ }
808
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutHomeComponent, decorators: [{
809
+ type: Component,
810
+ args: [{ selector: 'layout-home', template: `
811
+ <nz-spin [nzSpinning]="loading" nzTip="拼命加载中..." class="deon-list-spin">
812
+ <layout-default [options]="options" [content]="contentTpl" [nav]="asideUserTpl">
813
+ <layout-default-header-item direction="middle">
814
+ <ul nz-menu nzMode="horizontal" class="header-item-ul" #menuContainer *ngIf="visibleMenuData!!">
815
+ <li nz-menu-item *ngFor="let item of visibleMenuData; let index = index" [nzSelected]="item.selected" (click)="menuClick(item)">
816
+ <div class="menu-text">
817
+ <div class="icon">
818
+ <span nz-icon [ngClass]="'backgroup_' + index" [nzType]="item?.selected == true ? item.icon?.value : item.icon"></span>
819
+ </div>
820
+ <div class="text">{{ item.text }}</div>
821
+ </div>
822
+ </li>
823
+ <li nz-menu-item *ngIf="hasMoreItems" (click)="toggleShowAll()">
824
+ <div class="menu-text" nz-dropdown [nzDropdownMenu]="menu">
825
+ <div class="icon">
826
+ <span nz-icon nzType="ordered-list" class="backgroup_more"></span>
827
+ </div>
828
+ <div class="text">更多</div>
829
+ </div>
830
+ <nz-dropdown-menu #menu="nzDropdownMenu">
831
+ <ul nz-menu nzSelectable>
832
+ <ng-container *ngFor="let b of moreItems">
833
+ <li nz-menu-item (click)="menuClick(b)">{{ b.text }}</li>
834
+ </ng-container>
835
+ </ul>
836
+ </nz-dropdown-menu>
837
+ </li>
838
+ </ul>
839
+ </layout-default-header-item>
840
+ <layout-default-header-item direction="right">
841
+ <header-user></header-user>
842
+ </layout-default-header-item>
843
+ <ng-template #contentTpl>
844
+ <router-outlet></router-outlet>
845
+ </ng-template>
846
+ <ng-template #asideUserTpl>
847
+ <nav-user></nav-user>
848
+ </ng-template>
849
+ </layout-default>
850
+ </nz-spin>
851
+ `, host: {
852
+ class: 'layout-basic',
853
+ }, imports: [
854
+ CommonModule,
855
+ LayoutDefaultModule,
856
+ RuntimeSharedImportsModule,
857
+ GramDeonHeaderUserModule,
858
+ NavUserComponent,
859
+ HeaderUserComponent$1
860
+ ], styles: [":host ::ng-deep .backgroup_more{background:#e8a0d6}\n"] }]
861
+ }], ctorParameters: () => [{ type: i2._HttpClient }, { type: i1$1.Router }, { type: i2.MenuService }, { type: i2.SettingsService }, { type: i3.ACLService }], propDecorators: { menuContainer: [{
862
+ type: ViewChild,
863
+ args: ['menuContainer']
864
+ }] } });
865
+
866
+ class NavMenuComponent {
867
+ router;
868
+ menuSrv;
869
+ data = null;
870
+ constructor(router, menuSrv) {
871
+ this.router = router;
872
+ this.menuSrv = menuSrv;
873
+ }
874
+ ngOnInit() {
875
+ }
876
+ ngOnChanges(changes) {
877
+ if (changes && changes["data"] && this.data) {
878
+ }
879
+ }
880
+ ngOnDestroy() {
881
+ }
882
+ isSubmenuOpen(item) {
883
+ if (!item?.children)
884
+ return false;
885
+ return item.children.some(child => this.router.url.includes(child.link));
886
+ }
887
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NavMenuComponent, deps: [{ token: i1$1.Router }, { token: i2.MenuService }], target: i0.ɵɵFactoryTarget.Component });
888
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: NavMenuComponent, isStandalone: true, selector: "nav-menu", inputs: { data: "data" }, usesOnChanges: true, ngImport: i0, template: "<ul nz-menu nzMode=\"inline\" *ngIf=\"data && data?.children && data.children.length>0\">\n <ng-container *ngFor=\"let item of data.children\">\n <li nz-submenu [nzTitle]=\"item.text\" [nzOpen]=\"isSubmenuOpen(item)\">\n <ng-container *ngIf=\"item?.children\">\n <ul>\n <ng-container *ngFor=\"let level of item.children\">\n <li nz-menu-item nzMatchRouter>\n <a [routerLink]=\"[level.link]\">\n {{level?.text}}\n </a>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n </li>\n </ng-container>\n</ul>", styles: [":host ::ng-deep a,:host ::ng-deep .ant-menu-title-content{font-size:14px;color:#fff}:host ::ng-deep a:hover{color:#fff;background-color:unset!important}:host ::ng-deep .ant-menu{background-color:unset}:host ::ng-deep .ant-menu-submenu-arrow{color:#fff!important}:host ::ng-deep .ant-menu-item:hover,:host ::ng-deep .ant-menu-item-selected{background-color:#4f85ff!important}:host ::ng-deep .ant-menu-vertical .ant-menu-item:after,:host ::ng-deep .ant-menu-vertical-left .ant-menu-item:after,:host ::ng-deep .ant-menu-vertical-right .ant-menu-item:after,:host ::ng-deep .ant-menu-inline .ant-menu-item:after{border-right:0!important}:host ::ng-deep .ant-menu-item:active,:host ::ng-deep .ant-menu-submenu-title:active{background:unset!important}:host ::ng-deep .ant-menu-item{padding-left:36px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NzMenuModule }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "component", type: i1$2.NzSubMenuComponent, selector: "[nz-submenu]", inputs: ["nzMenuClassName", "nzPaddingLeft", "nzTitle", "nzIcon", "nzTriggerSubMenuAction", "nzOpen", "nzDisabled", "nzPlacement"], outputs: ["nzOpenChange"], exportAs: ["nzSubmenu"] }] });
889
+ }
890
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NavMenuComponent, decorators: [{
891
+ type: Component,
892
+ args: [{ selector: 'nav-menu', imports: [
893
+ CommonModule,
894
+ FormsModule,
895
+ ReactiveFormsModule,
896
+ RouterLink,
897
+ NzMenuModule
898
+ ], template: "<ul nz-menu nzMode=\"inline\" *ngIf=\"data && data?.children && data.children.length>0\">\n <ng-container *ngFor=\"let item of data.children\">\n <li nz-submenu [nzTitle]=\"item.text\" [nzOpen]=\"isSubmenuOpen(item)\">\n <ng-container *ngIf=\"item?.children\">\n <ul>\n <ng-container *ngFor=\"let level of item.children\">\n <li nz-menu-item nzMatchRouter>\n <a [routerLink]=\"[level.link]\">\n {{level?.text}}\n </a>\n </li>\n </ng-container>\n </ul>\n </ng-container>\n </li>\n </ng-container>\n</ul>", styles: [":host ::ng-deep a,:host ::ng-deep .ant-menu-title-content{font-size:14px;color:#fff}:host ::ng-deep a:hover{color:#fff;background-color:unset!important}:host ::ng-deep .ant-menu{background-color:unset}:host ::ng-deep .ant-menu-submenu-arrow{color:#fff!important}:host ::ng-deep .ant-menu-item:hover,:host ::ng-deep .ant-menu-item-selected{background-color:#4f85ff!important}:host ::ng-deep .ant-menu-vertical .ant-menu-item:after,:host ::ng-deep .ant-menu-vertical-left .ant-menu-item:after,:host ::ng-deep .ant-menu-vertical-right .ant-menu-item:after,:host ::ng-deep .ant-menu-inline .ant-menu-item:after{border-right:0!important}:host ::ng-deep .ant-menu-item:active,:host ::ng-deep .ant-menu-submenu-title:active{background:unset!important}:host ::ng-deep .ant-menu-item{padding-left:36px!important}\n"] }]
899
+ }], ctorParameters: () => [{ type: i1$1.Router }, { type: i2.MenuService }], propDecorators: { data: [{
900
+ type: Input
901
+ }] } });
902
+
903
+ class LayoutManageComponent extends LayoutBaseService {
904
+ router;
905
+ activatedRoute;
906
+ menuService;
907
+ settingService;
908
+ http;
909
+ aclService;
910
+ menuContainer;
911
+ options = {
912
+ //hideCollapse: true,
913
+ hideAside: false,
914
+ //hideLogo: true,
915
+ //title: null,
916
+ logoExpanded: `./assets/images/logo3.png`,
917
+ logoCollapsed: `./assets/images/logo3.png`,
918
+ showHeaderCollapse: false
919
+ };
920
+ navMenuData = null;
921
+ constructor(router, activatedRoute, menuService, settingService, http, aclService) {
922
+ super(http, router, menuService, settingService, aclService);
923
+ this.router = router;
924
+ this.activatedRoute = activatedRoute;
925
+ this.menuService = menuService;
926
+ this.settingService = settingService;
927
+ this.http = http;
928
+ this.aclService = aclService;
929
+ this.initMenuData();
930
+ }
931
+ toggleShowAll() { }
932
+ ngAfterViewInit() {
933
+ setTimeout(() => {
934
+ this.updateVisibleMenuData();
935
+ }, 0);
936
+ window.addEventListener('resize', this.updateVisibleMenuData.bind(this));
937
+ }
938
+ updateVisibleMenuData() {
939
+ const containerWidth = this.menuContainer.nativeElement.offsetWidth - 180;
940
+ if (containerWidth > 0) {
941
+ const itemWidth = 80;
942
+ const itemsToShow = Math.floor(containerWidth / itemWidth);
943
+ this.visibleMenuData = this.menuData.slice(0, itemsToShow - 1);
944
+ this.hasMoreItems = this.menuData.length > itemsToShow;
945
+ if (this.menuData.length > this.visibleMenuData.length) {
946
+ this.moreItems = this.menuData.slice(itemsToShow - 1, this.menuData.length);
947
+ }
948
+ else {
949
+ this.moreItems = [];
950
+ }
951
+ }
952
+ }
953
+ goToHome() {
954
+ this.router.navigateByUrl('/home');
955
+ }
956
+ addMenuData(e) {
957
+ this.menuService.clear();
958
+ if (e) {
959
+ let tmpData = _.cloneDeep(e);
960
+ if (tmpData?.children && Array.isArray(tmpData?.children)) {
961
+ this.initModuleMenuData(tmpData.children);
962
+ }
963
+ this.navMenuData = tmpData;
964
+ this.menuService.add([this.navMenuData]);
965
+ }
966
+ this.menuService.resume();
967
+ }
968
+ initModuleMenuData(a) {
969
+ a.forEach((b) => {
970
+ if (b?.children && Array.isArray(b?.children) && b.children.length > 0) {
971
+ b.children = b.children.filter((item) => {
972
+ const hasChildren = Array.isArray(item?.children) && item.children.length > 0;
973
+ const hasLink = !!item?.link;
974
+ return hasChildren || hasLink;
975
+ });
976
+ }
977
+ // item['hide'] = false;
978
+ // console.log(item);
979
+ // if (item?.type) {
980
+ // item["group"] = false;
981
+ // }
982
+ // if (item?.type == 'MENU_GROUP') {
983
+ // item["group"] = false;
984
+ // if (item?.children && Array.isArray(item?.children) && item.children.length > 0) {
985
+ // item?.children.forEach((b: any) => {
986
+ // b['hide'] = true;
987
+ // })
988
+ // }
989
+ // } else {
990
+ // if (item?.children && Array.isArray(item?.children) && item.children.length > 0) {
991
+ // this.initModuleMenuData(item, item.children);
992
+ // }
993
+ // }
994
+ });
995
+ }
996
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutManageComponent, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2.MenuService }, { token: i2.SettingsService }, { token: i2._HttpClient }, { token: i3.ACLService }], target: i0.ɵɵFactoryTarget.Component });
997
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: LayoutManageComponent, isStandalone: true, selector: "layout-manage", host: { classAttribute: "layout-basic" }, viewQueries: [{ propertyName: "menuContainer", first: true, predicate: ["menuContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
998
+ <nz-spin [nzSpinning]="loading" nzTip="拼命加载中..." class="deon-list-spin">
999
+ <layout-default [options]="options" [content]="contentTpl" [asideUser]="asideUserTpl" [nav]="navTpl">
1000
+ <layout-default-header-item direction="middle">
1001
+ <ul nz-menu nzMode="horizontal" class="header-item-ul" #menuContainer *ngIf="visibleMenuData!! && visibleMenuData != null">
1002
+ <li nz-menu-item *ngFor="let item of visibleMenuData; let index = index" [nzSelected]="item.selected" (click)="menuClick(item)">
1003
+ <div class="menu-text">
1004
+ <div class="icon">
1005
+ <span nz-icon [ngClass]="'backgroup_' + index" [nzType]="item?.selected == true ? item.icon : item.icon"></span>
1006
+ </div>
1007
+ <div class="text">{{ item.text }}</div>
1008
+ </div>
1009
+ </li>
1010
+ <li nz-menu-item *ngIf="hasMoreItems" (click)="toggleShowAll()">
1011
+ <div class="menu-text" nz-dropdown [nzDropdownMenu]="menu">
1012
+ <div class="icon">
1013
+ <span nz-icon nzType="ordered-list" class="backgroup_more"></span>
1014
+ </div>
1015
+ <div class="text">更多</div>
1016
+ </div>
1017
+ <nz-dropdown-menu #menu="nzDropdownMenu">
1018
+ <ul nz-menu nzSelectable>
1019
+ <ng-container *ngFor="let b of moreItems">
1020
+ <li nz-menu-item (click)="menuClick(b)">{{ b.text }}</li>
1021
+ </ng-container>
1022
+ </ul>
1023
+ </nz-dropdown-menu>
1024
+ </li>
1025
+ </ul>
1026
+ </layout-default-header-item>
1027
+ <layout-default-header-item direction="right">
1028
+ <header-user></header-user>
1029
+ </layout-default-header-item>
1030
+
1031
+ <ng-template #contentTpl>
1032
+ <router-outlet></router-outlet>
1033
+ </ng-template>
1034
+
1035
+ <ng-template #asideUserTpl>
1036
+ <div class="logo">
1037
+ <img src="/assets/images/logo.png" />
1038
+ </div>
1039
+ <div class="home" (click)="goToHome()">
1040
+ <span nz-icon nzType="home"></span>
1041
+ <label>首页</label>
1042
+ </div>
1043
+ </ng-template>
1044
+
1045
+ <ng-template #navTpl>
1046
+ <div class="nav-menu">
1047
+ <nav-menu [data]="navMenuData"></nav-menu>
1048
+ </div>
1049
+ </ng-template>
1050
+ </layout-default>
1051
+ </nz-spin>
1052
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: LayoutDefaultModule }, { kind: "component", type: i5$1.LayoutDefaultComponent, selector: "layout-default", inputs: ["options", "asideUser", "asideBottom", "nav", "content", "customError", "fetchingStrictly", "fetching"], exportAs: ["layoutDefault"] }, { kind: "component", type: i5$1.LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: ["hidden", "direction"] }, { kind: "ngmodule", type: RuntimeSharedImportsModule }, { kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i6$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i2$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i10$1.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "ngmodule", type: GramDeonHeaderUserModule }, { kind: "component", type: NavMenuComponent, selector: "nav-menu", inputs: ["data"] }, { kind: "component", type: HeaderUserComponent$1, selector: "header-user" }] });
1053
+ }
1054
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutManageComponent, decorators: [{
1055
+ type: Component,
1056
+ args: [{
1057
+ selector: 'layout-manage',
1058
+ template: `
1059
+ <nz-spin [nzSpinning]="loading" nzTip="拼命加载中..." class="deon-list-spin">
1060
+ <layout-default [options]="options" [content]="contentTpl" [asideUser]="asideUserTpl" [nav]="navTpl">
1061
+ <layout-default-header-item direction="middle">
1062
+ <ul nz-menu nzMode="horizontal" class="header-item-ul" #menuContainer *ngIf="visibleMenuData!! && visibleMenuData != null">
1063
+ <li nz-menu-item *ngFor="let item of visibleMenuData; let index = index" [nzSelected]="item.selected" (click)="menuClick(item)">
1064
+ <div class="menu-text">
1065
+ <div class="icon">
1066
+ <span nz-icon [ngClass]="'backgroup_' + index" [nzType]="item?.selected == true ? item.icon : item.icon"></span>
1067
+ </div>
1068
+ <div class="text">{{ item.text }}</div>
1069
+ </div>
1070
+ </li>
1071
+ <li nz-menu-item *ngIf="hasMoreItems" (click)="toggleShowAll()">
1072
+ <div class="menu-text" nz-dropdown [nzDropdownMenu]="menu">
1073
+ <div class="icon">
1074
+ <span nz-icon nzType="ordered-list" class="backgroup_more"></span>
1075
+ </div>
1076
+ <div class="text">更多</div>
1077
+ </div>
1078
+ <nz-dropdown-menu #menu="nzDropdownMenu">
1079
+ <ul nz-menu nzSelectable>
1080
+ <ng-container *ngFor="let b of moreItems">
1081
+ <li nz-menu-item (click)="menuClick(b)">{{ b.text }}</li>
1082
+ </ng-container>
1083
+ </ul>
1084
+ </nz-dropdown-menu>
1085
+ </li>
1086
+ </ul>
1087
+ </layout-default-header-item>
1088
+ <layout-default-header-item direction="right">
1089
+ <header-user></header-user>
1090
+ </layout-default-header-item>
1091
+
1092
+ <ng-template #contentTpl>
1093
+ <router-outlet></router-outlet>
1094
+ </ng-template>
1095
+
1096
+ <ng-template #asideUserTpl>
1097
+ <div class="logo">
1098
+ <img src="/assets/images/logo.png" />
1099
+ </div>
1100
+ <div class="home" (click)="goToHome()">
1101
+ <span nz-icon nzType="home"></span>
1102
+ <label>首页</label>
1103
+ </div>
1104
+ </ng-template>
1105
+
1106
+ <ng-template #navTpl>
1107
+ <div class="nav-menu">
1108
+ <nav-menu [data]="navMenuData"></nav-menu>
1109
+ </div>
1110
+ </ng-template>
1111
+ </layout-default>
1112
+ </nz-spin>
1113
+ `,
1114
+ host: {
1115
+ class: 'layout-basic',
1116
+ },
1117
+ imports: [
1118
+ CommonModule,
1119
+ FormsModule, ReactiveFormsModule,
1120
+ LayoutDefaultModule,
1121
+ RuntimeSharedImportsModule,
1122
+ GramDeonHeaderUserModule,
1123
+ NavMenuComponent,
1124
+ HeaderUserComponent$1
1125
+ ]
1126
+ }]
1127
+ }], ctorParameters: () => [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2.MenuService }, { type: i2.SettingsService }, { type: i2._HttpClient }, { type: i3.ACLService }], propDecorators: { menuContainer: [{
1128
+ type: ViewChild,
1129
+ args: ['menuContainer']
1130
+ }] } });
1131
+
1132
+ class LayoutManageViewComponent extends LayoutBaseService {
1133
+ router;
1134
+ activatedRoute;
1135
+ menuService;
1136
+ settingService;
1137
+ http;
1138
+ aclService;
1139
+ options = {
1140
+ logoExpanded: `./assets/images/logo3.png`,
1141
+ logoCollapsed: `./assets/images/logo3.png`,
1142
+ // hideCollapse: true,
1143
+ hideAside: true,
1144
+ //hideLogo: true,
1145
+ // title: null,
1146
+ showHeaderCollapse: false
1147
+ };
1148
+ constructor(router, activatedRoute, menuService, settingService, http, aclService) {
1149
+ super(http, router, menuService, settingService, aclService);
1150
+ this.router = router;
1151
+ this.activatedRoute = activatedRoute;
1152
+ this.menuService = menuService;
1153
+ this.settingService = settingService;
1154
+ this.http = http;
1155
+ this.aclService = aclService;
1156
+ this.initMenuData();
1157
+ }
1158
+ goToHome() {
1159
+ this.router.navigateByUrl('/home');
1160
+ }
1161
+ addMenuData(e) { }
1162
+ initModuleMenuData(parentInfo, e) { }
1163
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutManageViewComponent, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2.MenuService }, { token: i2.SettingsService }, { token: i2._HttpClient }, { token: i3.ACLService }], target: i0.ɵɵFactoryTarget.Component });
1164
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: LayoutManageViewComponent, isStandalone: true, selector: "layout-manage-view", host: { classAttribute: "layout-basic" }, usesInheritance: true, ngImport: i0, template: `
1165
+ <nz-spin [nzSpinning]="loading" nzTip="拼命加载中..." class="deon-list-spin">
1166
+ <layout-default [options]="options" [content]="contentTpl">
1167
+ <layout-default-header-item direction="middle">
1168
+ <ul nz-menu nzMode="horizontal" class="header-item-ul">
1169
+ <li nz-menu-item *ngFor="let item of menuData; let index = index" [nzSelected]="item.selected" (click)="menuClick(item)">
1170
+ <div class="menu-text">
1171
+ <div class="icon">
1172
+ <span nz-icon [ngClass]="'backgroup_' + index" [nzType]="item?.selected == true ? item.icon?.value : item.icon"></span>
1173
+ </div>
1174
+ <div class="text">{{ item.text }}</div>
1175
+ </div>
1176
+ </li>
1177
+ </ul>
1178
+ </layout-default-header-item>
1179
+ <layout-default-header-item direction="right">
1180
+ <header-user></header-user>
1181
+ </layout-default-header-item>
1182
+
1183
+ <ng-template #contentTpl>
1184
+ <router-outlet></router-outlet>
1185
+ </ng-template>
1186
+ </layout-default>
1187
+ </nz-spin>
1188
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: RuntimeSharedImportsModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i6$1.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i10$1.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "ngmodule", type: LayoutDefaultModule }, { kind: "component", type: i5$1.LayoutDefaultComponent, selector: "layout-default", inputs: ["options", "asideUser", "asideBottom", "nav", "content", "customError", "fetchingStrictly", "fetching"], exportAs: ["layoutDefault"] }, { kind: "component", type: i5$1.LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: ["hidden", "direction"] }, { kind: "ngmodule", type: GramDeonHeaderUserModule }, { kind: "component", type: HeaderUserComponent$1, selector: "header-user" }] });
1189
+ }
1190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutManageViewComponent, decorators: [{
1191
+ type: Component,
1192
+ args: [{
1193
+ selector: 'layout-manage-view',
1194
+ template: `
1195
+ <nz-spin [nzSpinning]="loading" nzTip="拼命加载中..." class="deon-list-spin">
1196
+ <layout-default [options]="options" [content]="contentTpl">
1197
+ <layout-default-header-item direction="middle">
1198
+ <ul nz-menu nzMode="horizontal" class="header-item-ul">
1199
+ <li nz-menu-item *ngFor="let item of menuData; let index = index" [nzSelected]="item.selected" (click)="menuClick(item)">
1200
+ <div class="menu-text">
1201
+ <div class="icon">
1202
+ <span nz-icon [ngClass]="'backgroup_' + index" [nzType]="item?.selected == true ? item.icon?.value : item.icon"></span>
1203
+ </div>
1204
+ <div class="text">{{ item.text }}</div>
1205
+ </div>
1206
+ </li>
1207
+ </ul>
1208
+ </layout-default-header-item>
1209
+ <layout-default-header-item direction="right">
1210
+ <header-user></header-user>
1211
+ </layout-default-header-item>
1212
+
1213
+ <ng-template #contentTpl>
1214
+ <router-outlet></router-outlet>
1215
+ </ng-template>
1216
+ </layout-default>
1217
+ </nz-spin>
1218
+ `,
1219
+ host: {
1220
+ class: 'layout-basic',
1221
+ },
1222
+ imports: [
1223
+ RuntimeSharedImportsModule,
1224
+ LayoutDefaultModule,
1225
+ GramDeonHeaderUserModule,
1226
+ HeaderUserComponent$1
1227
+ ]
1228
+ }]
1229
+ }], ctorParameters: () => [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2.MenuService }, { type: i2.SettingsService }, { type: i2._HttpClient }, { type: i3.ACLService }] });
1230
+
1231
+ class LayoutAdminComponent extends LayoutBaseService {
1232
+ router;
1233
+ activatedRoute;
1234
+ menuService;
1235
+ settingService;
1236
+ http;
1237
+ aclService;
1238
+ options = null;
1239
+ constructor(router, activatedRoute, menuService, settingService, http, aclService) {
1240
+ super(http, router, menuService, settingService, aclService);
1241
+ this.router = router;
1242
+ this.activatedRoute = activatedRoute;
1243
+ this.menuService = menuService;
1244
+ this.settingService = settingService;
1245
+ this.http = http;
1246
+ this.aclService = aclService;
1247
+ this.options = {
1248
+ logoExpanded: `./assets/images/logo.png`,
1249
+ logoCollapsed: `./assets/images/logo.png`,
1250
+ //title: null,
1251
+ //hideCollapse: true,
1252
+ hideAside: false,
1253
+ };
1254
+ //this.options.title = `${AppName} - 管理后台`;
1255
+ }
1256
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutAdminComponent, deps: [{ token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: i2.MenuService }, { token: i2.SettingsService }, { token: i2._HttpClient }, { token: i3.ACLService }], target: i0.ɵɵFactoryTarget.Component });
1257
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: LayoutAdminComponent, isStandalone: true, selector: "layout-admin", usesInheritance: true, ngImport: i0, template: `
1258
+ <layout-default [options]="options" [content]="contentTpl">
1259
+ <layout-default-header-item direction="middle"> </layout-default-header-item>
1260
+
1261
+ <layout-default-header-item direction="right">
1262
+ <gram-header-user></gram-header-user>
1263
+ </layout-default-header-item>
1264
+
1265
+ <ng-template #contentTpl>
1266
+ <router-outlet></router-outlet>
1267
+ </ng-template>
1268
+ </layout-default>
1269
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: LayoutDefaultModule }, { kind: "component", type: i5$1.LayoutDefaultComponent, selector: "layout-default", inputs: ["options", "asideUser", "asideBottom", "nav", "content", "customError", "fetchingStrictly", "fetching"], exportAs: ["layoutDefault"] }, { kind: "component", type: i5$1.LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: ["hidden", "direction"] }, { kind: "ngmodule", type: GramDeonHeaderUserModule }, { kind: "component", type: i5$2.GramHeaderUserComponent, selector: "gram-header-user" }] });
1270
+ }
1271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutAdminComponent, decorators: [{
1272
+ type: Component,
1273
+ args: [{
1274
+ selector: 'layout-admin',
1275
+ template: `
1276
+ <layout-default [options]="options" [content]="contentTpl">
1277
+ <layout-default-header-item direction="middle"> </layout-default-header-item>
1278
+
1279
+ <layout-default-header-item direction="right">
1280
+ <gram-header-user></gram-header-user>
1281
+ </layout-default-header-item>
1282
+
1283
+ <ng-template #contentTpl>
1284
+ <router-outlet></router-outlet>
1285
+ </ng-template>
1286
+ </layout-default>
1287
+ `,
1288
+ imports: [
1289
+ CommonModule,
1290
+ RouterModule,
1291
+ LayoutDefaultModule,
1292
+ GramDeonHeaderUserModule
1293
+ ]
1294
+ }]
1295
+ }], ctorParameters: () => [{ type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: i2.MenuService }, { type: i2.SettingsService }, { type: i2._HttpClient }, { type: i3.ACLService }] });
1296
+
1297
+ class HeaderClearStorageComponent {
1298
+ modalSrv = inject(NzModalService);
1299
+ messageSrv = inject(NzMessageService);
1300
+ _click() {
1301
+ this.modalSrv.confirm({
1302
+ nzTitle: 'Make sure clear all local storage?',
1303
+ nzOnOk: () => {
1304
+ localStorage.clear();
1305
+ this.messageSrv.success('Clear Finished!');
1306
+ }
1307
+ });
1308
+ }
1309
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderClearStorageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1310
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HeaderClearStorageComponent, isStandalone: true, selector: "header-clear-storage", host: { listeners: { "click": "_click()" }, properties: { "class.flex-1": "true" } }, ngImport: i0, template: `
1311
+ <i nz-icon nzType="tool"></i>
1312
+ {{ 'menu.clear.local.storage' | i18n }}
1313
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1314
+ }
1315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderClearStorageComponent, decorators: [{
1316
+ type: Component,
1317
+ args: [{
1318
+ selector: 'header-clear-storage',
1319
+ template: `
1320
+ <i nz-icon nzType="tool"></i>
1321
+ {{ 'menu.clear.local.storage' | i18n }}
1322
+ `,
1323
+ host: {
1324
+ '[class.flex-1]': 'true'
1325
+ },
1326
+ changeDetection: ChangeDetectionStrategy.OnPush,
1327
+ imports: [NzIconModule, I18nPipe]
1328
+ }]
1329
+ }], propDecorators: { _click: [{
1330
+ type: HostListener,
1331
+ args: ['click']
1332
+ }] } });
1333
+
1334
+ class HeaderFullScreenComponent {
1335
+ status = false;
1336
+ _resize() {
1337
+ this.status = screenfull.isFullscreen;
1338
+ }
1339
+ _click() {
1340
+ if (screenfull.isEnabled) {
1341
+ screenfull.toggle();
1342
+ }
1343
+ }
1344
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderFullScreenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1345
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HeaderFullScreenComponent, isStandalone: true, selector: "header-fullscreen", host: { listeners: { "window:resize": "_resize()", "click": "_click()" }, properties: { "class.flex-1": "true" } }, ngImport: i0, template: `
1346
+ <i nz-icon [nzType]="status ? 'fullscreen-exit' : 'fullscreen'"></i>
1347
+ {{ (status ? 'menu.fullscreen.exit' : 'menu.fullscreen') | i18n }}
1348
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1349
+ }
1350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderFullScreenComponent, decorators: [{
1351
+ type: Component,
1352
+ args: [{
1353
+ selector: 'header-fullscreen',
1354
+ template: `
1355
+ <i nz-icon [nzType]="status ? 'fullscreen-exit' : 'fullscreen'"></i>
1356
+ {{ (status ? 'menu.fullscreen.exit' : 'menu.fullscreen') | i18n }}
1357
+ `,
1358
+ host: {
1359
+ '[class.flex-1]': 'true'
1360
+ },
1361
+ changeDetection: ChangeDetectionStrategy.OnPush,
1362
+ imports: [NzIconModule, I18nPipe]
1363
+ }]
1364
+ }], propDecorators: { _resize: [{
1365
+ type: HostListener,
1366
+ args: ['window:resize']
1367
+ }], _click: [{
1368
+ type: HostListener,
1369
+ args: ['click']
1370
+ }] } });
1371
+
1372
+ class HeaderI18nComponent {
1373
+ settings = inject(SettingsService);
1374
+ i18n = inject(ALAIN_I18N_TOKEN);
1375
+ doc = inject(DOCUMENT);
1376
+ /** Whether to display language text */
1377
+ showLangText = true;
1378
+ get langs() {
1379
+ return this.i18n.getLangs();
1380
+ }
1381
+ get curLangCode() {
1382
+ return this.settings.layout.lang;
1383
+ }
1384
+ change(lang) {
1385
+ const spinEl = this.doc.createElement('div');
1386
+ spinEl.setAttribute('class', `page-loading ant-spin ant-spin-lg ant-spin-spinning`);
1387
+ spinEl.innerHTML = `<span class="ant-spin-dot ant-spin-dot-spin"><i></i><i></i><i></i><i></i></span>`;
1388
+ this.doc.body.appendChild(spinEl);
1389
+ this.i18n.loadLangData(lang).subscribe(res => {
1390
+ this.i18n.use(lang, res);
1391
+ this.settings.setLayout('lang', lang);
1392
+ setTimeout(() => this.doc.location.reload());
1393
+ });
1394
+ }
1395
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderI18nComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1396
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: HeaderI18nComponent, isStandalone: true, selector: "header-i18n", inputs: { showLangText: ["showLangText", "showLangText", booleanAttribute] }, host: { properties: { "class.flex-1": "true" } }, ngImport: i0, template: `
1397
+ @if (showLangText) {
1398
+ <div nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
1399
+ <i nz-icon nzType="global"></i>
1400
+ {{ 'menu.lang' | i18n }}
1401
+ <i nz-icon nzType="down"></i>
1402
+ </div>
1403
+ } @else {
1404
+ <i nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight" nz-icon nzType="global"></i>
1405
+ }
1406
+ <nz-dropdown-menu #langMenu="nzDropdownMenu">
1407
+ <ul nz-menu>
1408
+ @for (item of langs; track $index) {
1409
+ <li nz-menu-item [nzSelected]="item.code === curLangCode" (click)="change(item.code)">
1410
+ <span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
1411
+ {{ item.text }}
1412
+ </li>
1413
+ }
1414
+ </ul>
1415
+ </nz-dropdown-menu>
1416
+ `, isInline: true, dependencies: [{ kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i2$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzMenuModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1417
+ }
1418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderI18nComponent, decorators: [{
1419
+ type: Component,
1420
+ args: [{
1421
+ selector: 'header-i18n',
1422
+ template: `
1423
+ @if (showLangText) {
1424
+ <div nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
1425
+ <i nz-icon nzType="global"></i>
1426
+ {{ 'menu.lang' | i18n }}
1427
+ <i nz-icon nzType="down"></i>
1428
+ </div>
1429
+ } @else {
1430
+ <i nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight" nz-icon nzType="global"></i>
1431
+ }
1432
+ <nz-dropdown-menu #langMenu="nzDropdownMenu">
1433
+ <ul nz-menu>
1434
+ @for (item of langs; track $index) {
1435
+ <li nz-menu-item [nzSelected]="item.code === curLangCode" (click)="change(item.code)">
1436
+ <span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
1437
+ {{ item.text }}
1438
+ </li>
1439
+ }
1440
+ </ul>
1441
+ </nz-dropdown-menu>
1442
+ `,
1443
+ host: {
1444
+ '[class.flex-1]': 'true'
1445
+ },
1446
+ changeDetection: ChangeDetectionStrategy.OnPush,
1447
+ imports: [I18nPipe, NzDropDownModule, NzIconModule, NzMenuModule]
1448
+ }]
1449
+ }], propDecorators: { showLangText: [{
1450
+ type: Input,
1451
+ args: [{ transform: booleanAttribute }]
1452
+ }] } });
1453
+
1454
+ class HeaderIconComponent {
1455
+ cdr = inject(ChangeDetectorRef);
1456
+ loading = true;
1457
+ change() {
1458
+ setTimeout(() => {
1459
+ this.loading = false;
1460
+ this.cdr.detectChanges();
1461
+ }, 500);
1462
+ }
1463
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1464
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HeaderIconComponent, isStandalone: true, selector: "header-icon", ngImport: i0, template: `
1465
+ <div
1466
+ class="alain-default__nav-item"
1467
+ nz-dropdown
1468
+ [nzDropdownMenu]="iconMenu"
1469
+ nzTrigger="click"
1470
+ nzPlacement="bottomRight"
1471
+ (nzVisibleChange)="change()"
1472
+ >
1473
+ <i nz-icon nzType="appstore"></i>
1474
+ </div>
1475
+ <nz-dropdown-menu #iconMenu="nzDropdownMenu">
1476
+ <div nz-menu class="wd-xl animated jello">
1477
+ <nz-spin [nzSpinning]="loading" [nzTip]="'正在读取数据...'">
1478
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="app-icons">
1479
+ <div nz-col [nzSpan]="6">
1480
+ <i nz-icon nzType="calendar" class="bg-error text-white"></i>
1481
+ <small>Calendar</small>
1482
+ </div>
1483
+ <div nz-col [nzSpan]="6">
1484
+ <i nz-icon nzType="file" class="bg-geekblue text-white"></i>
1485
+ <small>Files</small>
1486
+ </div>
1487
+ <div nz-col [nzSpan]="6">
1488
+ <i nz-icon nzType="cloud" class="bg-success text-white"></i>
1489
+ <small>Cloud</small>
1490
+ </div>
1491
+ <div nz-col [nzSpan]="6">
1492
+ <i nz-icon nzType="star" class="bg-magenta text-white"></i>
1493
+ <small>Star</small>
1494
+ </div>
1495
+ <div nz-col [nzSpan]="6">
1496
+ <i nz-icon nzType="team" class="bg-purple text-white"></i>
1497
+ <small>Team</small>
1498
+ </div>
1499
+ <div nz-col [nzSpan]="6">
1500
+ <i nz-icon nzType="scan" class="bg-warning text-white"></i>
1501
+ <small>QR</small>
1502
+ </div>
1503
+ <div nz-col [nzSpan]="6">
1504
+ <i nz-icon nzType="pay-circle" class="bg-cyan text-white"></i>
1505
+ <small>Pay</small>
1506
+ </div>
1507
+ <div nz-col [nzSpan]="6">
1508
+ <i nz-icon nzType="printer" class="bg-grey text-white"></i>
1509
+ <small>Print</small>
1510
+ </div>
1511
+ </div>
1512
+ </nz-spin>
1513
+ </div>
1514
+ </nz-dropdown-menu>
1515
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "directive", type: i2$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzMenuModule }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i15.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i15.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzSpinModule }, { kind: "component", type: i10$1.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1516
+ }
1517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderIconComponent, decorators: [{
1518
+ type: Component,
1519
+ args: [{
1520
+ selector: 'header-icon',
1521
+ template: `
1522
+ <div
1523
+ class="alain-default__nav-item"
1524
+ nz-dropdown
1525
+ [nzDropdownMenu]="iconMenu"
1526
+ nzTrigger="click"
1527
+ nzPlacement="bottomRight"
1528
+ (nzVisibleChange)="change()"
1529
+ >
1530
+ <i nz-icon nzType="appstore"></i>
1531
+ </div>
1532
+ <nz-dropdown-menu #iconMenu="nzDropdownMenu">
1533
+ <div nz-menu class="wd-xl animated jello">
1534
+ <nz-spin [nzSpinning]="loading" [nzTip]="'正在读取数据...'">
1535
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="app-icons">
1536
+ <div nz-col [nzSpan]="6">
1537
+ <i nz-icon nzType="calendar" class="bg-error text-white"></i>
1538
+ <small>Calendar</small>
1539
+ </div>
1540
+ <div nz-col [nzSpan]="6">
1541
+ <i nz-icon nzType="file" class="bg-geekblue text-white"></i>
1542
+ <small>Files</small>
1543
+ </div>
1544
+ <div nz-col [nzSpan]="6">
1545
+ <i nz-icon nzType="cloud" class="bg-success text-white"></i>
1546
+ <small>Cloud</small>
1547
+ </div>
1548
+ <div nz-col [nzSpan]="6">
1549
+ <i nz-icon nzType="star" class="bg-magenta text-white"></i>
1550
+ <small>Star</small>
1551
+ </div>
1552
+ <div nz-col [nzSpan]="6">
1553
+ <i nz-icon nzType="team" class="bg-purple text-white"></i>
1554
+ <small>Team</small>
1555
+ </div>
1556
+ <div nz-col [nzSpan]="6">
1557
+ <i nz-icon nzType="scan" class="bg-warning text-white"></i>
1558
+ <small>QR</small>
1559
+ </div>
1560
+ <div nz-col [nzSpan]="6">
1561
+ <i nz-icon nzType="pay-circle" class="bg-cyan text-white"></i>
1562
+ <small>Pay</small>
1563
+ </div>
1564
+ <div nz-col [nzSpan]="6">
1565
+ <i nz-icon nzType="printer" class="bg-grey text-white"></i>
1566
+ <small>Print</small>
1567
+ </div>
1568
+ </div>
1569
+ </nz-spin>
1570
+ </div>
1571
+ </nz-dropdown-menu>
1572
+ `,
1573
+ changeDetection: ChangeDetectionStrategy.OnPush,
1574
+ imports: [NzDropDownModule, NzIconModule, NzMenuModule, NzGridModule, NzSpinModule]
1575
+ }]
1576
+ }] });
1577
+
1578
+ class HeaderNotifyComponent {
1579
+ msg = inject(NzMessageService);
1580
+ nzI18n = inject(NzI18nService);
1581
+ cdr = inject(ChangeDetectorRef);
1582
+ data = [
1583
+ {
1584
+ title: '通知',
1585
+ list: [],
1586
+ emptyText: '你已查看所有通知',
1587
+ emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/wAhyIChODzsoKIOBHcBk.svg',
1588
+ clearText: '清空通知'
1589
+ },
1590
+ {
1591
+ title: '消息',
1592
+ list: [],
1593
+ emptyText: '您已读完所有消息',
1594
+ emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/sAuJeJzSKbUmHfBQRzmZ.svg',
1595
+ clearText: '清空消息'
1596
+ },
1597
+ {
1598
+ title: '待办',
1599
+ list: [],
1600
+ emptyText: '你已完成所有待办',
1601
+ emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/HsIsxMZiWKrNUavQUXqx.svg',
1602
+ clearText: '清空待办'
1603
+ }
1604
+ ];
1605
+ count = 5;
1606
+ loading = false;
1607
+ updateNoticeData(notices) {
1608
+ const data = this.data.slice();
1609
+ data.forEach(i => (i.list = []));
1610
+ notices.forEach(item => {
1611
+ const newItem = { ...item };
1612
+ if (typeof newItem.datetime === 'string') {
1613
+ newItem.datetime = parse(newItem.datetime, 'yyyy-MM-dd', new Date());
1614
+ }
1615
+ if (newItem.datetime) {
1616
+ newItem.datetime = formatDistanceToNow(newItem.datetime, { locale: this.nzI18n.getDateLocale() });
1617
+ }
1618
+ if (newItem.extra && newItem['status']) {
1619
+ newItem['color'] = {
1620
+ todo: undefined,
1621
+ processing: 'blue',
1622
+ urgent: 'red',
1623
+ doing: 'gold'
1624
+ }[newItem['status']];
1625
+ }
1626
+ data.find(w => w.title === newItem['type']).list.push(newItem);
1627
+ });
1628
+ return data;
1629
+ }
1630
+ loadData() {
1631
+ if (this.loading) {
1632
+ return;
1633
+ }
1634
+ this.loading = true;
1635
+ setTimeout(() => {
1636
+ const now = new Date();
1637
+ this.data = this.updateNoticeData([
1638
+ {
1639
+ id: '000000001',
1640
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
1641
+ title: '你收到了 14 份新周报',
1642
+ datetime: add(now, { days: 10 }),
1643
+ type: '通知'
1644
+ },
1645
+ {
1646
+ id: '000000002',
1647
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
1648
+ title: '你推荐的 曲妮妮 已通过第三轮面试',
1649
+ datetime: add(now, { days: -3 }),
1650
+ type: '通知'
1651
+ },
1652
+ {
1653
+ id: '000000003',
1654
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
1655
+ title: '这种模板可以区分多种通知类型',
1656
+ datetime: add(now, { months: -3 }),
1657
+ read: true,
1658
+ type: '通知'
1659
+ },
1660
+ {
1661
+ id: '000000004',
1662
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
1663
+ title: '左侧图标用于区分不同的类型',
1664
+ datetime: add(now, { years: -1 }),
1665
+ type: '通知'
1666
+ },
1667
+ {
1668
+ id: '000000005',
1669
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
1670
+ title: '内容不要超过两行字,超出时自动截断',
1671
+ datetime: '2017-08-07',
1672
+ type: '通知'
1673
+ },
1674
+ {
1675
+ id: '000000006',
1676
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
1677
+ title: '曲丽丽 评论了你',
1678
+ description: '描述信息描述信息描述信息',
1679
+ datetime: '2017-08-07',
1680
+ type: '消息'
1681
+ },
1682
+ {
1683
+ id: '000000007',
1684
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
1685
+ title: '朱偏右 回复了你',
1686
+ description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
1687
+ datetime: '2017-08-07',
1688
+ type: '消息'
1689
+ },
1690
+ {
1691
+ id: '000000008',
1692
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
1693
+ title: '标题',
1694
+ description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
1695
+ datetime: '2017-08-07',
1696
+ type: '消息'
1697
+ },
1698
+ {
1699
+ id: '000000009',
1700
+ title: '任务名称',
1701
+ description: '任务需要在 2017-01-12 20:00 前启动',
1702
+ extra: '未开始',
1703
+ status: 'todo',
1704
+ type: '待办'
1705
+ },
1706
+ {
1707
+ id: '000000010',
1708
+ title: '第三方紧急代码变更',
1709
+ description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务',
1710
+ extra: '马上到期',
1711
+ status: 'urgent',
1712
+ type: '待办'
1713
+ },
1714
+ {
1715
+ id: '000000011',
1716
+ title: '信息安全考试',
1717
+ description: '指派竹尔于 2017-01-09 前完成更新并发布',
1718
+ extra: '已耗时 8 天',
1719
+ status: 'doing',
1720
+ type: '待办'
1721
+ },
1722
+ {
1723
+ id: '000000012',
1724
+ title: 'ABCD 版本发布',
1725
+ description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务',
1726
+ extra: '进行中',
1727
+ status: 'processing',
1728
+ type: '待办'
1729
+ }
1730
+ ]);
1731
+ this.loading = false;
1732
+ this.cdr.detectChanges();
1733
+ }, 500);
1734
+ }
1735
+ clear(type) {
1736
+ this.msg.success(`清空了 ${type}`);
1737
+ }
1738
+ select(res) {
1739
+ this.msg.success(`点击了 ${res.title} 的 ${res.item.title}`);
1740
+ }
1741
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderNotifyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1742
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HeaderNotifyComponent, isStandalone: true, selector: "header-notify", ngImport: i0, template: `
1743
+ <notice-icon
1744
+ [data]="data"
1745
+ [count]="count"
1746
+ [loading]="loading"
1747
+ btnClass="alain-default__nav-item"
1748
+ btnIconClass="alain-default__nav-item-icon"
1749
+ (select)="select($event)"
1750
+ (clear)="clear($event)"
1751
+ (popoverVisibleChange)="loadData()"
1752
+ />
1753
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: NoticeIconModule }, { kind: "component", type: i1$3.NoticeIconComponent, selector: "notice-icon", inputs: ["data", "count", "loading", "popoverVisible", "btnClass", "btnIconClass", "centered"], outputs: ["select", "clear", "popoverVisibleChange"], exportAs: ["noticeIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1754
+ }
1755
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderNotifyComponent, decorators: [{
1756
+ type: Component,
1757
+ args: [{
1758
+ selector: 'header-notify',
1759
+ template: `
1760
+ <notice-icon
1761
+ [data]="data"
1762
+ [count]="count"
1763
+ [loading]="loading"
1764
+ btnClass="alain-default__nav-item"
1765
+ btnIconClass="alain-default__nav-item-icon"
1766
+ (select)="select($event)"
1767
+ (clear)="clear($event)"
1768
+ (popoverVisibleChange)="loadData()"
1769
+ />
1770
+ `,
1771
+ changeDetection: ChangeDetectionStrategy.OnPush,
1772
+ imports: [NoticeIconModule]
1773
+ }]
1774
+ }] });
1775
+
1776
+ class HeaderRTLComponent {
1777
+ rtl = inject(RTLService);
1778
+ toggleDirection() {
1779
+ this.rtl.toggle();
1780
+ }
1781
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderRTLComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1782
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HeaderRTLComponent, isStandalone: true, selector: "header-rtl", host: { listeners: { "click": "toggleDirection()" }, properties: { "class.flex-1": "true" } }, ngImport: i0, template: `
1783
+ <i nz-icon [nzType]="rtl.nextDir === 'rtl' ? 'border-left' : 'border-right'"></i>
1784
+ {{ rtl.nextDir | uppercase }}
1785
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1786
+ }
1787
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderRTLComponent, decorators: [{
1788
+ type: Component,
1789
+ args: [{
1790
+ selector: 'header-rtl',
1791
+ template: `
1792
+ <i nz-icon [nzType]="rtl.nextDir === 'rtl' ? 'border-left' : 'border-right'"></i>
1793
+ {{ rtl.nextDir | uppercase }}
1794
+ `,
1795
+ host: {
1796
+ '[class.flex-1]': 'true'
1797
+ },
1798
+ changeDetection: ChangeDetectionStrategy.OnPush,
1799
+ imports: [NzIconModule, UpperCasePipe]
1800
+ }]
1801
+ }], propDecorators: { toggleDirection: [{
1802
+ type: HostListener,
1803
+ args: ['click']
1804
+ }] } });
1805
+
1806
+ class HeaderSearchComponent {
1807
+ el = inject(ElementRef).nativeElement;
1808
+ cdr = inject(ChangeDetectorRef);
1809
+ q = '';
1810
+ qIpt = null;
1811
+ options = [];
1812
+ search$ = new BehaviorSubject('');
1813
+ loading = false;
1814
+ focus = false;
1815
+ searchToggled = false;
1816
+ set toggleChange(value) {
1817
+ if (typeof value === 'undefined') {
1818
+ return;
1819
+ }
1820
+ this.searchToggled = value;
1821
+ this.focus = value;
1822
+ if (value) {
1823
+ setTimeout(() => this.qIpt.focus());
1824
+ }
1825
+ }
1826
+ toggleChangeChange = new EventEmitter();
1827
+ ngAfterViewInit() {
1828
+ this.qIpt = this.el.querySelector('.ant-input');
1829
+ this.search$
1830
+ .pipe(debounceTime(500), distinctUntilChanged(), tap({
1831
+ complete: () => {
1832
+ this.loading = true;
1833
+ }
1834
+ }))
1835
+ .subscribe(value => {
1836
+ this.options = value ? [value, value + value, value + value + value] : [];
1837
+ this.loading = false;
1838
+ this.cdr.detectChanges();
1839
+ });
1840
+ }
1841
+ qFocus() {
1842
+ this.focus = true;
1843
+ }
1844
+ qBlur() {
1845
+ this.focus = false;
1846
+ this.searchToggled = false;
1847
+ this.options.length = 0;
1848
+ this.toggleChangeChange.emit(false);
1849
+ }
1850
+ search(ev) {
1851
+ this.search$.next(ev.target.value);
1852
+ }
1853
+ ngOnDestroy() {
1854
+ this.search$.complete();
1855
+ this.search$.unsubscribe();
1856
+ }
1857
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1858
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: HeaderSearchComponent, isStandalone: true, selector: "header-search", inputs: { toggleChange: "toggleChange" }, outputs: { toggleChangeChange: "toggleChangeChange" }, host: { properties: { "class.alain-default__search-focus": "this.focus", "class.alain-default__search-toggled": "this.searchToggled" } }, ngImport: i0, template: `
1859
+ <nz-input-group [nzPrefix]="iconTpl" [nzSuffix]="loadingTpl">
1860
+ <ng-template #iconTpl>
1861
+ <i nz-icon [nzType]="focus ? 'arrow-down' : 'search'"></i>
1862
+ </ng-template>
1863
+ <ng-template #loadingTpl>
1864
+ @if (loading) {
1865
+ <i nz-icon nzType="loading"></i>
1866
+ }
1867
+ </ng-template>
1868
+ <input
1869
+ type="text"
1870
+ nz-input
1871
+ [(ngModel)]="q"
1872
+ [nzAutocomplete]="auto"
1873
+ (input)="search($event)"
1874
+ (focus)="qFocus()"
1875
+ (blur)="qBlur()"
1876
+ hotkey="F1"
1877
+ [attr.placeholder]="'menu.search.placeholder' | i18n"
1878
+ />
1879
+ </nz-input-group>
1880
+ <nz-autocomplete nzBackfill #auto>
1881
+ @for (i of options; track $index) {
1882
+ <nz-auto-option [nzValue]="i">{{ i }}</nz-auto-option>
1883
+ }
1884
+ </nz-autocomplete>
1885
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i2$2.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i2$2.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i2$2.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzAutocompleteModule }, { kind: "component", type: i4$2.NzAutocompleteComponent, selector: "nz-autocomplete", inputs: ["nzWidth", "nzOverlayClassName", "nzOverlayStyle", "nzDefaultActiveFirstOption", "nzBackfill", "compareWith", "nzDataSource"], outputs: ["selectionChange"], exportAs: ["nzAutocomplete"] }, { kind: "component", type: i4$2.NzAutocompleteOptionComponent, selector: "nz-auto-option", inputs: ["nzValue", "nzLabel", "nzDisabled"], outputs: ["selectionChange", "mouseEntered"], exportAs: ["nzAutoOption"] }, { kind: "directive", type: i4$2.NzAutocompleteTriggerDirective, selector: "input[nzAutocomplete], textarea[nzAutocomplete]", inputs: ["nzAutocomplete"], exportAs: ["nzAutocompleteTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1886
+ }
1887
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderSearchComponent, decorators: [{
1888
+ type: Component,
1889
+ args: [{
1890
+ selector: 'header-search',
1891
+ template: `
1892
+ <nz-input-group [nzPrefix]="iconTpl" [nzSuffix]="loadingTpl">
1893
+ <ng-template #iconTpl>
1894
+ <i nz-icon [nzType]="focus ? 'arrow-down' : 'search'"></i>
1895
+ </ng-template>
1896
+ <ng-template #loadingTpl>
1897
+ @if (loading) {
1898
+ <i nz-icon nzType="loading"></i>
1899
+ }
1900
+ </ng-template>
1901
+ <input
1902
+ type="text"
1903
+ nz-input
1904
+ [(ngModel)]="q"
1905
+ [nzAutocomplete]="auto"
1906
+ (input)="search($event)"
1907
+ (focus)="qFocus()"
1908
+ (blur)="qBlur()"
1909
+ hotkey="F1"
1910
+ [attr.placeholder]="'menu.search.placeholder' | i18n"
1911
+ />
1912
+ </nz-input-group>
1913
+ <nz-autocomplete nzBackfill #auto>
1914
+ @for (i of options; track $index) {
1915
+ <nz-auto-option [nzValue]="i">{{ i }}</nz-auto-option>
1916
+ }
1917
+ </nz-autocomplete>
1918
+ `,
1919
+ changeDetection: ChangeDetectionStrategy.OnPush,
1920
+ imports: [FormsModule, I18nPipe, NzInputModule, NzIconModule, NzAutocompleteModule]
1921
+ }]
1922
+ }], propDecorators: { focus: [{
1923
+ type: HostBinding,
1924
+ args: ['class.alain-default__search-focus']
1925
+ }], searchToggled: [{
1926
+ type: HostBinding,
1927
+ args: ['class.alain-default__search-toggled']
1928
+ }], toggleChange: [{
1929
+ type: Input
1930
+ }], toggleChangeChange: [{
1931
+ type: Output
1932
+ }] } });
1933
+
1934
+ class HeaderTaskComponent {
1935
+ cdr = inject(ChangeDetectorRef);
1936
+ loading = true;
1937
+ change() {
1938
+ setTimeout(() => {
1939
+ this.loading = false;
1940
+ this.cdr.detectChanges();
1941
+ }, 500);
1942
+ }
1943
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderTaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1944
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: HeaderTaskComponent, isStandalone: true, selector: "header-task", ngImport: i0, template: `
1945
+ <div
1946
+ class="alain-default__nav-item"
1947
+ nz-dropdown
1948
+ [nzDropdownMenu]="taskMenu"
1949
+ nzTrigger="click"
1950
+ nzPlacement="bottomRight"
1951
+ (nzVisibleChange)="change()"
1952
+ >
1953
+ <nz-badge [nzDot]="true">
1954
+ <i nz-icon nzType="bell" class="alain-default__nav-item-icon"></i>
1955
+ </nz-badge>
1956
+ </div>
1957
+ <nz-dropdown-menu #taskMenu="nzDropdownMenu">
1958
+ <div nz-menu class="wd-lg">
1959
+ @if (loading) {
1960
+ <div class="mx-lg p-lg"><nz-spin /></div>
1961
+ } @else {
1962
+ <nz-card nzTitle="Notifications" nzBordered="false" class="ant-card__body-nopadding">
1963
+ <ng-template #extra><i nz-icon nzType="plus"></i></ng-template>
1964
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
1965
+ <div nz-col [nzSpan]="4" class="text-center">
1966
+ <nz-avatar [nzSrc]="'./assets/tmp/img/1.png'" />
1967
+ </div>
1968
+ <div nz-col [nzSpan]="20">
1969
+ <strong>cipchk</strong>
1970
+ <p class="mb0">Please tell me what happened in a few words, don't go into details.</p>
1971
+ </div>
1972
+ </div>
1973
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
1974
+ <div nz-col [nzSpan]="4" class="text-center">
1975
+ <nz-avatar [nzSrc]="'./assets/tmp/img/2.png'" />
1976
+ </div>
1977
+ <div nz-col [nzSpan]="20">
1978
+ <strong>はなさき</strong>
1979
+ <p class="mb0">ハルカソラトキヘダツヒカリ</p>
1980
+ </div>
1981
+ </div>
1982
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
1983
+ <div nz-col [nzSpan]="4" class="text-center">
1984
+ <nz-avatar [nzSrc]="'./assets/tmp/img/3.png'" />
1985
+ </div>
1986
+ <div nz-col [nzSpan]="20">
1987
+ <strong>苏先生</strong>
1988
+ <p class="mb0">请告诉我,我应该说点什么好?</p>
1989
+ </div>
1990
+ </div>
1991
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
1992
+ <div nz-col [nzSpan]="4" class="text-center">
1993
+ <nz-avatar [nzSrc]="'./assets/tmp/img/4.png'" />
1994
+ </div>
1995
+ <div nz-col [nzSpan]="20">
1996
+ <strong>Kent</strong>
1997
+ <p class="mb0">Please tell me what happened in a few words, don't go into details.</p>
1998
+ </div>
1999
+ </div>
2000
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
2001
+ <div nz-col [nzSpan]="4" class="text-center">
2002
+ <nz-avatar [nzSrc]="'./assets/tmp/img/5.png'" />
2003
+ </div>
2004
+ <div nz-col [nzSpan]="20">
2005
+ <strong>Jefferson</strong>
2006
+ <p class="mb0">Please tell me what happened in a few words, don't go into details.</p>
2007
+ </div>
2008
+ </div>
2009
+ <div nz-row>
2010
+ <div nz-col [nzSpan]="24" class="pt-md border-top-1 text-center text-grey point">See All</div>
2011
+ </div>
2012
+ </nz-card>
2013
+ }
2014
+ </div>
2015
+ </nz-dropdown-menu>
2016
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "directive", type: i2$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzBadgeModule }, { kind: "component", type: i17.NzBadgeComponent, selector: "nz-badge", inputs: ["nzShowZero", "nzShowDot", "nzStandalone", "nzDot", "nzOverflowCount", "nzColor", "nzStyle", "nzText", "nzTitle", "nzStatus", "nzCount", "nzOffset", "nzSize"], exportAs: ["nzBadge"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzSpinModule }, { kind: "component", type: i10$1.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i15.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i15.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzAvatarModule }, { kind: "component", type: i20.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "ngmodule", type: NzCardModule }, { kind: "component", type: i8$1.NzCardComponent, selector: "nz-card", inputs: ["nzBordered", "nzLoading", "nzHoverable", "nzBodyStyle", "nzCover", "nzActions", "nzType", "nzSize", "nzTitle", "nzExtra"], exportAs: ["nzCard"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2017
+ }
2018
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderTaskComponent, decorators: [{
2019
+ type: Component,
2020
+ args: [{
2021
+ selector: 'header-task',
2022
+ template: `
2023
+ <div
2024
+ class="alain-default__nav-item"
2025
+ nz-dropdown
2026
+ [nzDropdownMenu]="taskMenu"
2027
+ nzTrigger="click"
2028
+ nzPlacement="bottomRight"
2029
+ (nzVisibleChange)="change()"
2030
+ >
2031
+ <nz-badge [nzDot]="true">
2032
+ <i nz-icon nzType="bell" class="alain-default__nav-item-icon"></i>
2033
+ </nz-badge>
2034
+ </div>
2035
+ <nz-dropdown-menu #taskMenu="nzDropdownMenu">
2036
+ <div nz-menu class="wd-lg">
2037
+ @if (loading) {
2038
+ <div class="mx-lg p-lg"><nz-spin /></div>
2039
+ } @else {
2040
+ <nz-card nzTitle="Notifications" nzBordered="false" class="ant-card__body-nopadding">
2041
+ <ng-template #extra><i nz-icon nzType="plus"></i></ng-template>
2042
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
2043
+ <div nz-col [nzSpan]="4" class="text-center">
2044
+ <nz-avatar [nzSrc]="'./assets/tmp/img/1.png'" />
2045
+ </div>
2046
+ <div nz-col [nzSpan]="20">
2047
+ <strong>cipchk</strong>
2048
+ <p class="mb0">Please tell me what happened in a few words, don't go into details.</p>
2049
+ </div>
2050
+ </div>
2051
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
2052
+ <div nz-col [nzSpan]="4" class="text-center">
2053
+ <nz-avatar [nzSrc]="'./assets/tmp/img/2.png'" />
2054
+ </div>
2055
+ <div nz-col [nzSpan]="20">
2056
+ <strong>はなさき</strong>
2057
+ <p class="mb0">ハルカソラトキヘダツヒカリ</p>
2058
+ </div>
2059
+ </div>
2060
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
2061
+ <div nz-col [nzSpan]="4" class="text-center">
2062
+ <nz-avatar [nzSrc]="'./assets/tmp/img/3.png'" />
2063
+ </div>
2064
+ <div nz-col [nzSpan]="20">
2065
+ <strong>苏先生</strong>
2066
+ <p class="mb0">请告诉我,我应该说点什么好?</p>
2067
+ </div>
2068
+ </div>
2069
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
2070
+ <div nz-col [nzSpan]="4" class="text-center">
2071
+ <nz-avatar [nzSrc]="'./assets/tmp/img/4.png'" />
2072
+ </div>
2073
+ <div nz-col [nzSpan]="20">
2074
+ <strong>Kent</strong>
2075
+ <p class="mb0">Please tell me what happened in a few words, don't go into details.</p>
2076
+ </div>
2077
+ </div>
2078
+ <div nz-row [nzJustify]="'center'" [nzAlign]="'middle'" class="py-sm pr-md point bg-grey-lighter-h">
2079
+ <div nz-col [nzSpan]="4" class="text-center">
2080
+ <nz-avatar [nzSrc]="'./assets/tmp/img/5.png'" />
2081
+ </div>
2082
+ <div nz-col [nzSpan]="20">
2083
+ <strong>Jefferson</strong>
2084
+ <p class="mb0">Please tell me what happened in a few words, don't go into details.</p>
2085
+ </div>
2086
+ </div>
2087
+ <div nz-row>
2088
+ <div nz-col [nzSpan]="24" class="pt-md border-top-1 text-center text-grey point">See All</div>
2089
+ </div>
2090
+ </nz-card>
2091
+ }
2092
+ </div>
2093
+ </nz-dropdown-menu>
2094
+ `,
2095
+ changeDetection: ChangeDetectionStrategy.OnPush,
2096
+ imports: [NzDropDownModule, NzBadgeModule, NzIconModule, NzSpinModule, NzGridModule, NzAvatarModule, NzCardModule]
2097
+ }]
2098
+ }] });
2099
+
2100
+ class HeaderUserComponent {
2101
+ settings = inject(SettingsService);
2102
+ router = inject(Router);
2103
+ tokenService = inject(DA_SERVICE_TOKEN);
2104
+ get user() {
2105
+ return this.settings.user;
2106
+ }
2107
+ logout() {
2108
+ this.tokenService.clear();
2109
+ this.router.navigateByUrl(this.tokenService.login_url);
2110
+ }
2111
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderUserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: HeaderUserComponent, isStandalone: true, selector: "header-user", ngImport: i0, template: `
2113
+ <div class="alain-default__nav-item d-flex align-items-center px-sm" nz-dropdown nzPlacement="bottomRight" [nzDropdownMenu]="userMenu">
2114
+ <nz-avatar [nzSrc]="user.avatar" nzSize="small" class="mr-sm" />
2115
+ {{ user.name }}
2116
+ </div>
2117
+ <nz-dropdown-menu #userMenu="nzDropdownMenu">
2118
+ <div nz-menu class="width-sm">
2119
+ <div nz-menu-item routerLink="/pro/account/center">
2120
+ <i nz-icon nzType="user" class="mr-sm"></i>
2121
+ {{ 'menu.account.center' | i18n }}
2122
+ </div>
2123
+ <div nz-menu-item routerLink="/pro/account/settings">
2124
+ <i nz-icon nzType="setting" class="mr-sm"></i>
2125
+ {{ 'menu.account.settings' | i18n }}
2126
+ </div>
2127
+ <div nz-menu-item routerLink="/exception/trigger">
2128
+ <i nz-icon nzType="close-circle" class="mr-sm"></i>
2129
+ {{ 'menu.account.trigger' | i18n }}
2130
+ </div>
2131
+ <li nz-menu-divider></li>
2132
+ <div nz-menu-item (click)="logout()">
2133
+ <i nz-icon nzType="logout" class="mr-sm"></i>
2134
+ {{ 'menu.account.logout' | i18n }}
2135
+ </div>
2136
+ </div>
2137
+ </nz-dropdown-menu>
2138
+ `, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i1$2.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "directive", type: i2$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzMenuModule }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: NzAvatarModule }, { kind: "component", type: i20.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2139
+ }
2140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: HeaderUserComponent, decorators: [{
2141
+ type: Component,
2142
+ args: [{
2143
+ selector: 'header-user',
2144
+ template: `
2145
+ <div class="alain-default__nav-item d-flex align-items-center px-sm" nz-dropdown nzPlacement="bottomRight" [nzDropdownMenu]="userMenu">
2146
+ <nz-avatar [nzSrc]="user.avatar" nzSize="small" class="mr-sm" />
2147
+ {{ user.name }}
2148
+ </div>
2149
+ <nz-dropdown-menu #userMenu="nzDropdownMenu">
2150
+ <div nz-menu class="width-sm">
2151
+ <div nz-menu-item routerLink="/pro/account/center">
2152
+ <i nz-icon nzType="user" class="mr-sm"></i>
2153
+ {{ 'menu.account.center' | i18n }}
2154
+ </div>
2155
+ <div nz-menu-item routerLink="/pro/account/settings">
2156
+ <i nz-icon nzType="setting" class="mr-sm"></i>
2157
+ {{ 'menu.account.settings' | i18n }}
2158
+ </div>
2159
+ <div nz-menu-item routerLink="/exception/trigger">
2160
+ <i nz-icon nzType="close-circle" class="mr-sm"></i>
2161
+ {{ 'menu.account.trigger' | i18n }}
2162
+ </div>
2163
+ <li nz-menu-divider></li>
2164
+ <div nz-menu-item (click)="logout()">
2165
+ <i nz-icon nzType="logout" class="mr-sm"></i>
2166
+ {{ 'menu.account.logout' | i18n }}
2167
+ </div>
2168
+ </div>
2169
+ </nz-dropdown-menu>
2170
+ `,
2171
+ changeDetection: ChangeDetectionStrategy.OnPush,
2172
+ imports: [RouterLink, NzDropDownModule, NzMenuModule, NzIconModule, I18nPipe, NzAvatarModule]
2173
+ }]
2174
+ }] });
2175
+
2176
+ class LayoutBasicComponent {
2177
+ settings = inject(SettingsService);
2178
+ environment = inject(RUNTIME_CORE_ENVIRONMENT);
2179
+ options = {
2180
+ logoExpanded: `./assets/logo-full.svg`,
2181
+ logoCollapsed: `./assets/logo.svg`
2182
+ };
2183
+ searchToggleStatus = false;
2184
+ showSettingDrawer = !this.environment.production;
2185
+ get user() {
2186
+ return this.settings.user;
2187
+ }
2188
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutBasicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2189
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: LayoutBasicComponent, isStandalone: true, selector: "layout-basic", ngImport: i0, template: `
2190
+ <layout-default [options]="options" [asideUser]="asideUserTpl" [content]="contentTpl" [customError]="null">
2191
+ <layout-default-header-item direction="left">
2192
+ <a layout-default-header-item-trigger href="//github.com/ng-alain/ng-alain" target="_blank">
2193
+ <i nz-icon nzType="github"></i>
2194
+ </a>
2195
+ </layout-default-header-item>
2196
+ <layout-default-header-item direction="left" hidden="mobile">
2197
+ <a layout-default-header-item-trigger routerLink="/passport/lock">
2198
+ <i nz-icon nzType="lock"></i>
2199
+ </a>
2200
+ </layout-default-header-item>
2201
+ <layout-default-header-item direction="left" hidden="pc">
2202
+ <div layout-default-header-item-trigger (click)="searchToggleStatus = !searchToggleStatus">
2203
+ <i nz-icon nzType="search"></i>
2204
+ </div>
2205
+ </layout-default-header-item>
2206
+ <layout-default-header-item direction="middle">
2207
+ <header-search class="alain-default__search" [(toggleChange)]="searchToggleStatus" />
2208
+ </layout-default-header-item>
2209
+ <layout-default-header-item direction="right">
2210
+ <header-notify />
2211
+ </layout-default-header-item>
2212
+ <layout-default-header-item direction="right" hidden="mobile">
2213
+ <header-task />
2214
+ </layout-default-header-item>
2215
+ <layout-default-header-item direction="right" hidden="mobile">
2216
+ <header-icon />
2217
+ </layout-default-header-item>
2218
+ <layout-default-header-item direction="right" hidden="mobile">
2219
+ <div layout-default-header-item-trigger nz-dropdown [nzDropdownMenu]="settingsMenu" nzTrigger="click" nzPlacement="bottomRight">
2220
+ <i nz-icon nzType="setting"></i>
2221
+ </div>
2222
+ <nz-dropdown-menu #settingsMenu="nzDropdownMenu">
2223
+ <div nz-menu style="width: 200px;">
2224
+ <div nz-menu-item>
2225
+ <header-rtl />
2226
+ </div>
2227
+ <div nz-menu-item>
2228
+ <header-fullscreen />
2229
+ </div>
2230
+ <div nz-menu-item>
2231
+ <header-clear-storage />
2232
+ </div>
2233
+ <div nz-menu-item>
2234
+ <header-i18n />
2235
+ </div>
2236
+ </div>
2237
+ </nz-dropdown-menu>
2238
+ </layout-default-header-item>
2239
+ <layout-default-header-item direction="right">
2240
+ <header-user />
2241
+ </layout-default-header-item>
2242
+ <ng-template #asideUserTpl>
2243
+ <div nz-dropdown nzTrigger="click" [nzDropdownMenu]="userMenu" class="alain-default__aside-user">
2244
+ <nz-avatar class="alain-default__aside-user-avatar" [nzSrc]="user.avatar" />
2245
+ <div class="alain-default__aside-user-info">
2246
+ <strong>{{ user.name }}</strong>
2247
+ <p class="mb0">{{ user.email }}</p>
2248
+ </div>
2249
+ </div>
2250
+ <nz-dropdown-menu #userMenu="nzDropdownMenu">
2251
+ <ul nz-menu>
2252
+ <li nz-menu-item routerLink="/pro/account/center">{{ 'menu.account.center' | i18n }}</li>
2253
+ <li nz-menu-item routerLink="/pro/account/settings">{{ 'menu.account.settings' | i18n }}</li>
2254
+ </ul>
2255
+ </nz-dropdown-menu>
2256
+ </ng-template>
2257
+ <ng-template #contentTpl>
2258
+ <router-outlet />
2259
+ </ng-template>
2260
+ </layout-default>
2261
+ @if (showSettingDrawer) {
2262
+ <setting-drawer />
2263
+ }
2264
+ <theme-btn />
2265
+ `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: LayoutDefaultModule }, { kind: "component", type: i5$1.LayoutDefaultComponent, selector: "layout-default", inputs: ["options", "asideUser", "asideBottom", "nav", "content", "customError", "fetchingStrictly", "fetching"], exportAs: ["layoutDefault"] }, { kind: "component", type: i5$1.LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: ["hidden", "direction"] }, { kind: "directive", type: i5$1.LayoutDefaultHeaderItemTriggerDirective, selector: "[layout-default-header-item-trigger]" }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzMenuModule }, { kind: "directive", type: i1$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i1$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i2$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i2$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzAvatarModule }, { kind: "component", type: i20.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "ngmodule", type: SettingDrawerModule }, { kind: "component", type: i6$2.SettingDrawerComponent, selector: "setting-drawer", inputs: ["autoApplyColor", "compilingText", "devTips", "lessJs"] }, { kind: "component", type: ThemeBtnComponent, selector: "theme-btn", inputs: ["types", "devTips", "deployUrl"], outputs: ["themeChange"] }, { kind: "component", type: HeaderSearchComponent, selector: "header-search", inputs: ["toggleChange"], outputs: ["toggleChangeChange"] }, { kind: "component", type: HeaderNotifyComponent, selector: "header-notify" }, { kind: "component", type: HeaderTaskComponent, selector: "header-task" }, { kind: "component", type: HeaderIconComponent, selector: "header-icon" }, { kind: "component", type: HeaderRTLComponent, selector: "header-rtl" }, { kind: "component", type: HeaderI18nComponent, selector: "header-i18n", inputs: ["showLangText"] }, { kind: "component", type: HeaderClearStorageComponent, selector: "header-clear-storage" }, { kind: "component", type: HeaderFullScreenComponent, selector: "header-fullscreen" }, { kind: "component", type: HeaderUserComponent, selector: "header-user" }] });
2266
+ }
2267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutBasicComponent, decorators: [{
2268
+ type: Component,
2269
+ args: [{
2270
+ selector: 'layout-basic',
2271
+ template: `
2272
+ <layout-default [options]="options" [asideUser]="asideUserTpl" [content]="contentTpl" [customError]="null">
2273
+ <layout-default-header-item direction="left">
2274
+ <a layout-default-header-item-trigger href="//github.com/ng-alain/ng-alain" target="_blank">
2275
+ <i nz-icon nzType="github"></i>
2276
+ </a>
2277
+ </layout-default-header-item>
2278
+ <layout-default-header-item direction="left" hidden="mobile">
2279
+ <a layout-default-header-item-trigger routerLink="/passport/lock">
2280
+ <i nz-icon nzType="lock"></i>
2281
+ </a>
2282
+ </layout-default-header-item>
2283
+ <layout-default-header-item direction="left" hidden="pc">
2284
+ <div layout-default-header-item-trigger (click)="searchToggleStatus = !searchToggleStatus">
2285
+ <i nz-icon nzType="search"></i>
2286
+ </div>
2287
+ </layout-default-header-item>
2288
+ <layout-default-header-item direction="middle">
2289
+ <header-search class="alain-default__search" [(toggleChange)]="searchToggleStatus" />
2290
+ </layout-default-header-item>
2291
+ <layout-default-header-item direction="right">
2292
+ <header-notify />
2293
+ </layout-default-header-item>
2294
+ <layout-default-header-item direction="right" hidden="mobile">
2295
+ <header-task />
2296
+ </layout-default-header-item>
2297
+ <layout-default-header-item direction="right" hidden="mobile">
2298
+ <header-icon />
2299
+ </layout-default-header-item>
2300
+ <layout-default-header-item direction="right" hidden="mobile">
2301
+ <div layout-default-header-item-trigger nz-dropdown [nzDropdownMenu]="settingsMenu" nzTrigger="click" nzPlacement="bottomRight">
2302
+ <i nz-icon nzType="setting"></i>
2303
+ </div>
2304
+ <nz-dropdown-menu #settingsMenu="nzDropdownMenu">
2305
+ <div nz-menu style="width: 200px;">
2306
+ <div nz-menu-item>
2307
+ <header-rtl />
2308
+ </div>
2309
+ <div nz-menu-item>
2310
+ <header-fullscreen />
2311
+ </div>
2312
+ <div nz-menu-item>
2313
+ <header-clear-storage />
2314
+ </div>
2315
+ <div nz-menu-item>
2316
+ <header-i18n />
2317
+ </div>
2318
+ </div>
2319
+ </nz-dropdown-menu>
2320
+ </layout-default-header-item>
2321
+ <layout-default-header-item direction="right">
2322
+ <header-user />
2323
+ </layout-default-header-item>
2324
+ <ng-template #asideUserTpl>
2325
+ <div nz-dropdown nzTrigger="click" [nzDropdownMenu]="userMenu" class="alain-default__aside-user">
2326
+ <nz-avatar class="alain-default__aside-user-avatar" [nzSrc]="user.avatar" />
2327
+ <div class="alain-default__aside-user-info">
2328
+ <strong>{{ user.name }}</strong>
2329
+ <p class="mb0">{{ user.email }}</p>
2330
+ </div>
2331
+ </div>
2332
+ <nz-dropdown-menu #userMenu="nzDropdownMenu">
2333
+ <ul nz-menu>
2334
+ <li nz-menu-item routerLink="/pro/account/center">{{ 'menu.account.center' | i18n }}</li>
2335
+ <li nz-menu-item routerLink="/pro/account/settings">{{ 'menu.account.settings' | i18n }}</li>
2336
+ </ul>
2337
+ </nz-dropdown-menu>
2338
+ </ng-template>
2339
+ <ng-template #contentTpl>
2340
+ <router-outlet />
2341
+ </ng-template>
2342
+ </layout-default>
2343
+ @if (showSettingDrawer) {
2344
+ <setting-drawer />
2345
+ }
2346
+ <theme-btn />
2347
+ `,
2348
+ imports: [
2349
+ RouterOutlet,
2350
+ RouterLink,
2351
+ I18nPipe,
2352
+ LayoutDefaultModule,
2353
+ NzIconModule,
2354
+ NzMenuModule,
2355
+ NzDropDownModule,
2356
+ NzAvatarModule,
2357
+ SettingDrawerModule,
2358
+ ThemeBtnComponent,
2359
+ HeaderSearchComponent,
2360
+ HeaderNotifyComponent,
2361
+ HeaderTaskComponent,
2362
+ HeaderIconComponent,
2363
+ HeaderRTLComponent,
2364
+ HeaderI18nComponent,
2365
+ HeaderClearStorageComponent,
2366
+ HeaderFullScreenComponent,
2367
+ HeaderUserComponent
2368
+ ]
2369
+ }]
2370
+ }] });
2371
+
2372
+ class LayoutBlankComponent {
2373
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutBlankComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2374
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: LayoutBlankComponent, isStandalone: true, selector: "layout-blank", host: { properties: { "class.alain-blank": "true" } }, ngImport: i0, template: `<router-outlet />`, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
2375
+ }
2376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: LayoutBlankComponent, decorators: [{
2377
+ type: Component,
2378
+ args: [{
2379
+ selector: 'layout-blank',
2380
+ template: `<router-outlet />`,
2381
+ host: {
2382
+ '[class.alain-blank]': 'true'
2383
+ },
2384
+ imports: [RouterOutlet]
2385
+ }]
2386
+ }] });
2387
+
2388
+ /**
2389
+ * Generated bundle index. Do not edit.
2390
+ */
2391
+
2392
+ export { LayoutAdminComponent, LayoutAuthComponent, LayoutBasicComponent, LayoutBlankComponent, LayoutHomeComponent, LayoutManageComponent, LayoutManageViewComponent };
2393
+ //# sourceMappingURL=layout.mjs.map