@yelon/bis 17.2.3 → 17.3.2

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.
@@ -16,20 +16,27 @@ import * as i3 from 'ng-zorro-antd/input';
16
16
  import { NzInputModule } from 'ng-zorro-antd/input';
17
17
  import * as i4$1 from 'ng-zorro-antd/tabs';
18
18
  import { NzTabsModule } from 'ng-zorro-antd/tabs';
19
+ import { HttpClient } from '@angular/common/http';
19
20
  import * as i2$2 from '@angular/router';
20
21
  import { RouterModule } from '@angular/router';
21
22
  import * as i3$2 from '@yelon/abc/reuse-tab';
22
23
  import { ReuseTabModule } from '@yelon/abc/reuse-tab';
23
- import * as i10 from '@yelon/bis/yunzai-widgets';
24
+ import * as i13 from '@yelon/bis/yunzai-widgets';
24
25
  import { YunzaiWidgetsModule } from '@yelon/bis/yunzai-widgets';
25
26
  import { StompService } from '@yelon/socket';
26
27
  import * as i1$2 from '@yelon/theme/layout-default';
27
28
  import { LayoutDisplayService, LayoutDefaultModule } from '@yelon/theme/layout-default';
28
- import * as i9 from '@yelon/theme/theme-btn';
29
+ import * as i12 from '@yelon/theme/theme-btn';
29
30
  import { ThemeBtnModule } from '@yelon/theme/theme-btn';
30
- import { YunzaiConfigService, WINDOW, useLocalStorageHeader, NavType, useLocalStorageProjectInfo, hasFavicon, setFavicon, useLocalStorageCurrent, useLocalStorageHeaderType, useLocalStorageDefaultRoute, log } from '@yelon/util';
31
+ import { YunzaiConfigService, WINDOW, useLocalStorageHeader, YUNZAI_CONFIG, NavType, useLocalStorageProjectInfo, hasFavicon, setFavicon, useLocalStorageCurrent, useLocalStorageHeaderType, useLocalStorageDefaultRoute, log } from '@yelon/util';
31
32
  import * as i7 from 'ng-zorro-antd/avatar';
32
33
  import { NzAvatarModule } from 'ng-zorro-antd/avatar';
34
+ import * as i11 from 'ng-zorro-antd/descriptions';
35
+ import { NzDescriptionsModule } from 'ng-zorro-antd/descriptions';
36
+ import * as i9 from 'ng-zorro-antd/modal';
37
+ import { NzModalModule } from 'ng-zorro-antd/modal';
38
+ import * as i10 from 'ng-zorro-antd/skeleton';
39
+ import { NzSkeletonModule } from 'ng-zorro-antd/skeleton';
33
40
  import { Subject, takeUntil } from 'rxjs';
34
41
  import { mergeBisConfig } from '@yelon/bis/config';
35
42
  import * as i2$1 from 'ng-zorro-antd/menu';
@@ -176,8 +183,8 @@ class YunzaiNavApplicationComponent {
176
183
  ngOnDestroy() {
177
184
  this.destroy$.complete();
178
185
  }
179
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiNavApplicationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
180
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: YunzaiNavApplicationComponent, isStandalone: true, selector: "yunzai-layout-nav-application", ngImport: i0, template: `
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiNavApplicationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: YunzaiNavApplicationComponent, isStandalone: true, selector: "yunzai-layout-nav-application", ngImport: i0, template: `
181
188
  <ng-template #search>
182
189
  <div nz-row class="yz-application-list-search">
183
190
  <nz-input-group [nzPrefix]="prefixTemplate">
@@ -223,25 +230,27 @@ class YunzaiNavApplicationComponent {
223
230
 
224
231
  <div class="yz-application" id="navDropdown" nz-row *ngIf="state.active">
225
232
  <div nz-col [nzSpan]="3" class="yz-application-topic">
226
- @if (showAllMenu) {
227
- <div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
228
- >{{ 'mode.nav.all' | i18n }}
229
- </div>
230
- }
231
- @if (showMineMenu) {
232
- <div data-event-id="_nav_topic" data-name="我的应用" class="yz-application-text" (click)="attachNav('mine')"
233
- >{{ 'mode.nav.mine' | i18n }}
234
- </div>
235
- }
236
- @for (nav of state.topics; track nav) {
237
- <div
238
- data-event-id="_nav_topic"
239
- [attr.data-name]="nav.name | i18n"
240
- class="yz-application-text"
241
- (click)="attachNav('other', nav)"
242
- >{{ nav.name | i18n }}
243
- </div>
244
- }
233
+ <div class="yz-application-topic-list">
234
+ @if (showAllMenu) {
235
+ <div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
236
+ >{{ 'mode.nav.all' | i18n }}
237
+ </div>
238
+ }
239
+ @if (showMineMenu) {
240
+ <div data-event-id="_nav_topic" data-name="我的应用" class="yz-application-text" (click)="attachNav('mine')"
241
+ >{{ 'mode.nav.mine' | i18n }}
242
+ </div>
243
+ }
244
+ @for (nav of state.topics; track nav) {
245
+ <div
246
+ data-event-id="_nav_topic"
247
+ [attr.data-name]="nav.name | i18n"
248
+ class="yz-application-text"
249
+ (click)="attachNav('other', nav)"
250
+ >{{ nav.name | i18n }}
251
+ </div>
252
+ }
253
+ </div>
245
254
  </div>
246
255
  <div nz-col [nzSpan]="21" class="yz-application-container">
247
256
  @switch (state.type) {
@@ -258,7 +267,7 @@ class YunzaiNavApplicationComponent {
258
267
  </div>
259
268
  }
260
269
  @case ('other') {
261
- <div class="yz-application-list">
270
+ <div class="yz-application-list yz-application-list-other">
262
271
  <div class="yz-application-list-item">
263
272
  <ul>
264
273
  @for (nav of state.list; track nav) {
@@ -278,7 +287,7 @@ class YunzaiNavApplicationComponent {
278
287
  </div>
279
288
  `, isInline: true, dependencies: [{ kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzFormModule }, { kind: "directive", type: i2.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: i2.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i3.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i3.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i3.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NzGridModule }] }); }
280
289
  }
281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiNavApplicationComponent, decorators: [{
290
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiNavApplicationComponent, decorators: [{
282
291
  type: Component,
283
292
  args: [{
284
293
  selector: `yunzai-layout-nav-application`,
@@ -328,25 +337,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
328
337
 
329
338
  <div class="yz-application" id="navDropdown" nz-row *ngIf="state.active">
330
339
  <div nz-col [nzSpan]="3" class="yz-application-topic">
331
- @if (showAllMenu) {
332
- <div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
333
- >{{ 'mode.nav.all' | i18n }}
334
- </div>
335
- }
336
- @if (showMineMenu) {
337
- <div data-event-id="_nav_topic" data-name="我的应用" class="yz-application-text" (click)="attachNav('mine')"
338
- >{{ 'mode.nav.mine' | i18n }}
339
- </div>
340
- }
341
- @for (nav of state.topics; track nav) {
342
- <div
343
- data-event-id="_nav_topic"
344
- [attr.data-name]="nav.name | i18n"
345
- class="yz-application-text"
346
- (click)="attachNav('other', nav)"
347
- >{{ nav.name | i18n }}
348
- </div>
349
- }
340
+ <div class="yz-application-topic-list">
341
+ @if (showAllMenu) {
342
+ <div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
343
+ >{{ 'mode.nav.all' | i18n }}
344
+ </div>
345
+ }
346
+ @if (showMineMenu) {
347
+ <div data-event-id="_nav_topic" data-name="我的应用" class="yz-application-text" (click)="attachNav('mine')"
348
+ >{{ 'mode.nav.mine' | i18n }}
349
+ </div>
350
+ }
351
+ @for (nav of state.topics; track nav) {
352
+ <div
353
+ data-event-id="_nav_topic"
354
+ [attr.data-name]="nav.name | i18n"
355
+ class="yz-application-text"
356
+ (click)="attachNav('other', nav)"
357
+ >{{ nav.name | i18n }}
358
+ </div>
359
+ }
360
+ </div>
350
361
  </div>
351
362
  <div nz-col [nzSpan]="21" class="yz-application-container">
352
363
  @switch (state.type) {
@@ -363,7 +374,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
363
374
  </div>
364
375
  }
365
376
  @case ('other') {
366
- <div class="yz-application-list">
377
+ <div class="yz-application-list yz-application-list-other">
367
378
  <div class="yz-application-list-item">
368
379
  <ul>
369
380
  @for (nav of state.list; track nav) {
@@ -428,8 +439,8 @@ class YunzaiLayoutNavGroupComponent {
428
439
  ngOnDestroy() {
429
440
  this.destroy$.complete();
430
441
  }
431
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutNavGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
432
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.1", type: YunzaiLayoutNavGroupComponent, isStandalone: true, selector: "yunzai-layout-nav-group", ngImport: i0, template: `
442
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutNavGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: YunzaiLayoutNavGroupComponent, isStandalone: true, selector: "yunzai-layout-nav-group", ngImport: i0, template: `
433
444
  <div class="yz-application-group">
434
445
  <nz-tabset>
435
446
  @for (menu of state.topics; track menu) {
@@ -463,8 +474,9 @@ class YunzaiLayoutNavGroupComponent {
463
474
  (click)="open(item)"
464
475
  >
465
476
  @if (item.icon) {
466
- <i nz-icon [nzType]="item.icon" nzTheme="outline"></i>{{ item.name | i18n }}
477
+ <i nz-icon [nzType]="item.icon" nzTheme="outline"></i>
467
478
  }
479
+ {{ item.name | i18n }}
468
480
  </li>
469
481
  </ng-container>
470
482
  }
@@ -478,7 +490,7 @@ class YunzaiLayoutNavGroupComponent {
478
490
  </div>
479
491
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i2$1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i2$1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i3$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "directive", type: i3$1.NzDropDownADirective, selector: "a[nz-dropdown]" }, { kind: "component", type: i3$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: NzTabsModule }, { kind: "component", type: i4$1.NzTabSetComponent, selector: "nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabset"] }, { kind: "component", type: i4$1.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }] }); }
480
492
  }
481
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutNavGroupComponent, decorators: [{
493
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutNavGroupComponent, decorators: [{
482
494
  type: Component,
483
495
  args: [{
484
496
  selector: `yunzai-layout-nav-group`,
@@ -516,8 +528,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
516
528
  (click)="open(item)"
517
529
  >
518
530
  @if (item.icon) {
519
- <i nz-icon [nzType]="item.icon" nzTheme="outline"></i>{{ item.name | i18n }}
531
+ <i nz-icon [nzType]="item.icon" nzTheme="outline"></i>
520
532
  }
533
+ {{ item.name | i18n }}
521
534
  </li>
522
535
  </ng-container>
523
536
  }
@@ -536,10 +549,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
536
549
  }] });
537
550
 
538
551
  class YunzaiLayoutNavTileComponent {
539
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutNavTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
540
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiLayoutNavTileComponent, isStandalone: true, selector: "yunzai-layout-nav-tile", ngImport: i0, template: `<ng-template />`, isInline: true }); }
552
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutNavTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
553
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.1", type: YunzaiLayoutNavTileComponent, isStandalone: true, selector: "yunzai-layout-nav-tile", ngImport: i0, template: `<ng-template />`, isInline: true }); }
541
554
  }
542
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutNavTileComponent, decorators: [{
555
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutNavTileComponent, decorators: [{
543
556
  type: Component,
544
557
  args: [{
545
558
  selector: `yunzai-layout-nav-tile`,
@@ -553,6 +566,7 @@ class YunzaiLayoutBasicComponent {
553
566
  this.stomp = inject(StompService);
554
567
  this.win = inject(WINDOW);
555
568
  this.layoutDisplayService = inject(LayoutDisplayService);
569
+ this.conf = inject(YUNZAI_CONFIG);
556
570
  this.NavType = NavType;
557
571
  this.state = {
558
572
  options: {
@@ -571,6 +585,12 @@ class YunzaiLayoutBasicComponent {
571
585
  },
572
586
  navType: NavType.APPLICATION
573
587
  };
588
+ this.headerStyleList = [];
589
+ this.applicationModal = {
590
+ isVisible: false,
591
+ loading: false
592
+ };
593
+ this.httpClient = inject(HttpClient);
574
594
  }
575
595
  get options() {
576
596
  return this.state.options;
@@ -595,12 +615,13 @@ class YunzaiLayoutBasicComponent {
595
615
  if (!this.state.display.aside) {
596
616
  cascadingStyleSheet = {
597
617
  ...cascadingStyleSheet,
598
- left: '24px'
618
+ left: '0px'
599
619
  };
600
620
  }
601
621
  return cascadingStyleSheet;
602
622
  }
603
623
  ngOnInit() {
624
+ this.config = this.conf.bis;
604
625
  this.initLogo();
605
626
  this.initFavicon();
606
627
  this.initNavType();
@@ -641,17 +662,19 @@ class YunzaiLayoutBasicComponent {
641
662
  const projectInfo = getProjectInfo();
642
663
  if (navType !== null) {
643
664
  this.state.navType = navType;
644
- return;
645
665
  }
646
- let fetchedNavType;
647
- if (projectInfo.headerStyle && projectInfo.headerStyle.length > 0) {
648
- fetchedNavType = projectInfo.headerStyle.pop()?.value;
666
+ else {
667
+ this.state.navType = NavType.APPLICATION;
649
668
  }
650
- // default value
651
- if (!fetchedNavType) {
652
- fetchedNavType = NavType.APPLICATION;
669
+ if (projectInfo.headerStyle && projectInfo.headerStyle.length > 0) {
670
+ this.headerStyleList = projectInfo.headerStyle;
671
+ const hasThis = this.headerStyleList.some(item => item.value === this.state.navType);
672
+ if (!hasThis) {
673
+ this.state.navType = projectInfo.headerStyle[0].value;
674
+ const [setHeaderType] = useLocalStorageHeaderType();
675
+ setHeaderType(this.state.navType);
676
+ }
653
677
  }
654
- this.state.navType = fetchedNavType;
655
678
  }
656
679
  toIndex() {
657
680
  const [, getDefaultRoute] = useLocalStorageDefaultRoute();
@@ -674,8 +697,30 @@ class YunzaiLayoutBasicComponent {
674
697
  this.state.display.aside = display;
675
698
  });
676
699
  }
677
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutBasicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
678
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiLayoutBasicComponent, isStandalone: true, selector: "yunzai-layout-basic", ngImport: i0, template: `
700
+ // 关于本应用
701
+ aboutApplication() {
702
+ const urlArr = window.location.pathname.split(`${this.config.baseUrl}/`);
703
+ if (urlArr.length > 1) {
704
+ // 应用标识,截取路径中 /backstage/后第一个字符串
705
+ // 例: http://222.30.194.61/backstage/auth/page/oafportal/#/base/menu 中 auth
706
+ const name = urlArr[1].split('/')[0];
707
+ this.applicationModal.isVisible = true;
708
+ this.applicationModal.loading = true;
709
+ // eslint-disable-next-line deprecation/deprecation
710
+ this.httpClient.get(`/basic/api/app/aboutApp?name=${name}`).subscribe(
711
+ // @ts-ignore
712
+ (response) => {
713
+ this.applicationModal.loading = false;
714
+ if (response.data) {
715
+ this.applicationInfo = response.data;
716
+ }
717
+ }, () => {
718
+ this.applicationModal.loading = false;
719
+ });
720
+ }
721
+ }
722
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutBasicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
723
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: YunzaiLayoutBasicComponent, isStandalone: true, selector: "yunzai-layout-basic", ngImport: i0, template: `
679
724
  <layout-default [options]="options" [asideUser]="asideUserTpl" [content]="displayReusetab ? contentTpl : noneTpl">
680
725
  <layout-default-header-item direction="left">
681
726
  <ng-container [ngSwitch]="navType">
@@ -688,6 +733,8 @@ class YunzaiLayoutBasicComponent {
688
733
  <ng-container *ngSwitchCase="NavType.TILE">
689
734
  <yunzai-layout-nav-tile />
690
735
  </ng-container>
736
+ <ng-container *ngSwitchCase="NavType.BLANK" />
737
+ <ng-container *ngSwitchCase="NavType.TABS" />
691
738
  <ng-container *ngSwitchDefault>
692
739
  <yunzai-layout-nav-application />
693
740
  </ng-container>
@@ -715,23 +762,40 @@ class YunzaiLayoutBasicComponent {
715
762
  <div data-event-id="_nav_mode" nz-menu-item>
716
763
  {{ 'mode.nav' | i18n }}
717
764
  </div>
718
- <div
719
- data-event-id="_nav_mode"
720
- data-type="application"
721
- nz-menu-item
722
- (click)="onNavTypeChange(NavType.APPLICATION)"
723
- >
724
- <i nz-icon nzType="appstore" class="mr-sm"></i>
725
- {{ 'mode.nav.application' | i18n }}
726
- </div>
727
- <div data-event-id="_nav_mode" data-type="group" nz-menu-item (click)="onNavTypeChange(NavType.GROUP)">
728
- <i nz-icon nzType="group" class="mr-sm"></i>
729
- {{ 'mode.nav.group' | i18n }}
730
- </div>
731
- <div data-event-id="_nav_mode" data-type="tile" nz-menu-item (click)="onNavTypeChange(NavType.TILE)">
732
- <i nz-icon nzType="appstore" class="mr-sm"></i>
733
- {{ 'mode.nav.tile' | i18n }}
734
- </div>
765
+
766
+ @if (headerStyleList.length > 1) {
767
+ @for (i of headerStyleList; track $index) {
768
+ <div
769
+ data-event-id="_nav_mode"
770
+ nz-menu-item
771
+ [attr.data-type]="i.value"
772
+ (click)="onNavTypeChange(i.value)"
773
+ >
774
+ <ng-container [ngSwitch]="i.value">
775
+ <ng-container *ngSwitchCase="NavType.APPLICATION">
776
+ <i nz-icon nzType="appstore" class="mr-sm"></i>
777
+ </ng-container>
778
+ <ng-container *ngSwitchCase="NavType.GROUP">
779
+ <i nz-icon nzType="group" class="mr-sm"></i>
780
+ </ng-container>
781
+ <ng-container *ngSwitchCase="NavType.TILE">
782
+ <i nz-icon nzType="dash" class="mr-sm"></i>
783
+ </ng-container>
784
+ <ng-container *ngSwitchCase="NavType.BLANK">
785
+ <i nz-icon nzType="border" class="mr-sm"></i>
786
+ </ng-container>
787
+ <ng-container *ngSwitchCase="NavType.TABS">
788
+ <i nz-icon nzType="insert-row-above" class="mr-sm"></i>
789
+ </ng-container>
790
+ <ng-container *ngSwitchDefault>
791
+ <i nz-icon nzType="appstore" class="mr-sm"></i>
792
+ </ng-container>
793
+ {{ 'mode.nav.' + i.value | i18n }}
794
+ </ng-container>
795
+ </div>
796
+ }
797
+ }
798
+
735
799
  <div data-event-id="_nav_fullscreen" nz-menu-item>
736
800
  <yunzai-header-fullscreen />
737
801
  </div>
@@ -749,15 +813,9 @@ class YunzaiLayoutBasicComponent {
749
813
  </layout-default-header-item>
750
814
  </layout-default>
751
815
  <ng-template #asideUserTpl>
752
- <div
753
- data-event-id="_route_user"
754
- nz-dropdown
755
- nzTrigger="click"
756
- [nzDropdownMenu]="userMenu"
757
- class="yunzai-default__aside-user"
758
- >
759
- <nz-avatar class="yunzai-default__aside-user-avatar" [nzSrc]="aside.icon" />
760
- <div class="yunzai-default__aside-user-info">
816
+ <div data-event-id="_route_user" class="yunzai-default__aside-user">
817
+ <nz-avatar class="yunzai-default__aside-user-avatar" [nzSrc]="aside.icon" (click)="aboutApplication()" />
818
+ <div class="yunzai-default__aside-user-info" nz-dropdown nzTrigger="click" [nzDropdownMenu]="userMenu">
761
819
  <strong>{{ aside.name | i18n }}</strong>
762
820
  <p class="mb0">{{ aside.intro | i18n }}</p>
763
821
  </div>
@@ -772,10 +830,42 @@ class YunzaiLayoutBasicComponent {
772
830
  <reuse-tab #reuseTab [ngStyle]="reusetabCSS" />
773
831
  <router-outlet (activate)="reuseTab.activate($event)" (attach)="reuseTab.activate($event)" />
774
832
  </ng-template>
775
- <ng-template #noneTpl> <router-outlet /> </ng-template>
776
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: LayoutDefaultModule }, { kind: "component", type: i1$2.LayoutDefaultComponent, selector: "layout-default", inputs: ["options", "asideUser", "asideBottom", "nav", "content", "customError", "fetchingStrictly", "fetching"], exportAs: ["layoutDefault"] }, { kind: "component", type: i1$2.LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: ["hidden", "direction"] }, { kind: "directive", type: i1$2.LayoutDefaultHeaderItemTriggerDirective, selector: "[layout-default-header-item-trigger]" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ReuseTabModule }, { kind: "component", type: i3$2.ReuseTabComponent, selector: "reuse-tab, [reuse-tab]", inputs: ["mode", "i18n", "debug", "max", "tabMaxWidth", "excludes", "allowClose", "keepingScroll", "storageState", "keepingScrollContainer", "customContextMenu", "tabBarExtraContent", "tabBarGutter", "tabBarStyle", "tabType", "routeParamMatchMode", "disabled", "titleRender", "canClose"], outputs: ["change", "close"], exportAs: ["reuseTab"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i2$1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i2$1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i3$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i3$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzAvatarModule }, { kind: "component", type: i7.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: ThemeBtnModule }, { kind: "component", type: i9.ThemeBtnComponent, selector: "theme-btn", inputs: ["types", "devTips", "deployUrl"], outputs: ["themeChange"] }, { kind: "ngmodule", type: YunzaiWidgetsModule }, { kind: "component", type: i10.YunzaiHeaderClearStorageComponent, selector: "yunzai-header-clear-storage" }, { kind: "component", type: i10.YunzaiHeaderFullScreenComponent, selector: "yunzai-header-fullscreen" }, { kind: "component", type: i10.YunzaiHeaderNotifyComponent, selector: "yunzai-header-notify" }, { kind: "component", type: i10.YunzaiHeaderI18nComponent, selector: "yunzai-header-i18n", inputs: ["showLangText"] }, { kind: "component", type: i10.YunzaiHeaderUserComponent, selector: "yunzai-header-user" }, { kind: "component", type: YunzaiNavApplicationComponent, selector: "yunzai-layout-nav-application" }, { kind: "component", type: YunzaiLayoutNavGroupComponent, selector: "yunzai-layout-nav-group" }, { kind: "component", type: YunzaiLayoutNavTileComponent, selector: "yunzai-layout-nav-tile" }] }); }
833
+ <ng-template #noneTpl>
834
+ <router-outlet />
835
+ </ng-template>
836
+
837
+ <nz-modal
838
+ nzTitle="关于本应用"
839
+ [(nzVisible)]="applicationModal.isVisible"
840
+ [nzOkText]="null"
841
+ [nzCancelText]="'关闭'"
842
+ [nzWidth]="700"
843
+ (nzOnCancel)="applicationModal.isVisible = false"
844
+ >
845
+ <ng-container *nzModalContent>
846
+ <nz-skeleton [nzLoading]="applicationModal.loading" [nzActive]="true">
847
+ <nz-descriptions nzBordered [nzSize]="'middle'" [nzColumn]="{ xxl: 2, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }">
848
+ <nz-descriptions-item nzTitle="应用名称">{{ applicationInfo?.showName }}</nz-descriptions-item>
849
+ <nz-descriptions-item nzTitle="应用标识">{{ applicationInfo?.name }}</nz-descriptions-item>
850
+ <nz-descriptions-item nzTitle="版本总数">{{ applicationInfo?.versionNum }}</nz-descriptions-item>
851
+ <nz-descriptions-item nzTitle="应用首次部署时间">{{
852
+ applicationInfo?.firstDeploymentDate | date: 'yyyy-MM-dd HH:mm:ss'
853
+ }}</nz-descriptions-item>
854
+ <nz-descriptions-item nzTitle="当前版本">{{ applicationInfo?.currentVersion }}</nz-descriptions-item>
855
+ <nz-descriptions-item nzTitle="当前版本部署时间">{{
856
+ applicationInfo?.currentDeploymentDate | date: 'yyyy-MM-dd HH:mm:ss'
857
+ }}</nz-descriptions-item>
858
+ <nz-descriptions-item nzTitle="最新版本">{{ applicationInfo?.lastVersion }}</nz-descriptions-item>
859
+ <nz-descriptions-item nzTitle="最新版本发布时间">{{
860
+ applicationInfo?.lastPushDate | date: 'yyyy-MM-dd HH:mm:ss'
861
+ }}</nz-descriptions-item>
862
+ </nz-descriptions>
863
+ </nz-skeleton>
864
+ </ng-container>
865
+ </nz-modal>
866
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: LayoutDefaultModule }, { kind: "component", type: i1$2.LayoutDefaultComponent, selector: "layout-default", inputs: ["options", "asideUser", "asideBottom", "nav", "content", "customError", "fetchingStrictly", "fetching"], exportAs: ["layoutDefault"] }, { kind: "component", type: i1$2.LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: ["hidden", "direction"] }, { kind: "directive", type: i1$2.LayoutDefaultHeaderItemTriggerDirective, selector: "[layout-default-header-item-trigger]" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ReuseTabModule }, { kind: "component", type: i3$2.ReuseTabComponent, selector: "reuse-tab, [reuse-tab]", inputs: ["mode", "i18n", "debug", "max", "tabMaxWidth", "excludes", "allowClose", "keepingScroll", "storageState", "keepingScrollContainer", "customContextMenu", "tabBarExtraContent", "tabBarGutter", "tabBarStyle", "tabType", "routeParamMatchMode", "disabled", "titleRender", "canClose"], outputs: ["change", "close"], exportAs: ["reuseTab"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i4.DatePipe, name: "date" }, { kind: "pipe", type: I18nPipe, name: "i18n" }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i2$1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i2$1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i3$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i3$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "ngmodule", type: NzAvatarModule }, { kind: "component", type: i7.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i9.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: i9.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzSkeletonModule }, { kind: "component", type: i10.NzSkeletonComponent, selector: "nz-skeleton", inputs: ["nzActive", "nzLoading", "nzRound", "nzTitle", "nzAvatar", "nzParagraph"], exportAs: ["nzSkeleton"] }, { kind: "ngmodule", type: NzDescriptionsModule }, { kind: "component", type: i11.NzDescriptionsComponent, selector: "nz-descriptions", inputs: ["nzBordered", "nzLayout", "nzColumn", "nzSize", "nzTitle", "nzExtra", "nzColon"], exportAs: ["nzDescriptions"] }, { kind: "component", type: i11.NzDescriptionsItemComponent, selector: "nz-descriptions-item", inputs: ["nzSpan", "nzTitle"], exportAs: ["nzDescriptionsItem"] }, { kind: "ngmodule", type: ThemeBtnModule }, { kind: "component", type: i12.ThemeBtnComponent, selector: "theme-btn", inputs: ["types", "devTips", "deployUrl"], outputs: ["themeChange"] }, { kind: "ngmodule", type: YunzaiWidgetsModule }, { kind: "component", type: i13.YunzaiHeaderClearStorageComponent, selector: "yunzai-header-clear-storage" }, { kind: "component", type: i13.YunzaiHeaderFullScreenComponent, selector: "yunzai-header-fullscreen" }, { kind: "component", type: i13.YunzaiHeaderNotifyComponent, selector: "yunzai-header-notify" }, { kind: "component", type: i13.YunzaiHeaderI18nComponent, selector: "yunzai-header-i18n", inputs: ["showLangText"] }, { kind: "component", type: i13.YunzaiHeaderUserComponent, selector: "yunzai-header-user" }, { kind: "component", type: YunzaiNavApplicationComponent, selector: "yunzai-layout-nav-application" }, { kind: "component", type: YunzaiLayoutNavGroupComponent, selector: "yunzai-layout-nav-group" }, { kind: "component", type: YunzaiLayoutNavTileComponent, selector: "yunzai-layout-nav-tile" }] }); }
777
867
  }
778
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutBasicComponent, decorators: [{
868
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutBasicComponent, decorators: [{
779
869
  type: Component,
780
870
  args: [{
781
871
  selector: `yunzai-layout-basic`,
@@ -792,6 +882,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
792
882
  <ng-container *ngSwitchCase="NavType.TILE">
793
883
  <yunzai-layout-nav-tile />
794
884
  </ng-container>
885
+ <ng-container *ngSwitchCase="NavType.BLANK" />
886
+ <ng-container *ngSwitchCase="NavType.TABS" />
795
887
  <ng-container *ngSwitchDefault>
796
888
  <yunzai-layout-nav-application />
797
889
  </ng-container>
@@ -819,23 +911,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
819
911
  <div data-event-id="_nav_mode" nz-menu-item>
820
912
  {{ 'mode.nav' | i18n }}
821
913
  </div>
822
- <div
823
- data-event-id="_nav_mode"
824
- data-type="application"
825
- nz-menu-item
826
- (click)="onNavTypeChange(NavType.APPLICATION)"
827
- >
828
- <i nz-icon nzType="appstore" class="mr-sm"></i>
829
- {{ 'mode.nav.application' | i18n }}
830
- </div>
831
- <div data-event-id="_nav_mode" data-type="group" nz-menu-item (click)="onNavTypeChange(NavType.GROUP)">
832
- <i nz-icon nzType="group" class="mr-sm"></i>
833
- {{ 'mode.nav.group' | i18n }}
834
- </div>
835
- <div data-event-id="_nav_mode" data-type="tile" nz-menu-item (click)="onNavTypeChange(NavType.TILE)">
836
- <i nz-icon nzType="appstore" class="mr-sm"></i>
837
- {{ 'mode.nav.tile' | i18n }}
838
- </div>
914
+
915
+ @if (headerStyleList.length > 1) {
916
+ @for (i of headerStyleList; track $index) {
917
+ <div
918
+ data-event-id="_nav_mode"
919
+ nz-menu-item
920
+ [attr.data-type]="i.value"
921
+ (click)="onNavTypeChange(i.value)"
922
+ >
923
+ <ng-container [ngSwitch]="i.value">
924
+ <ng-container *ngSwitchCase="NavType.APPLICATION">
925
+ <i nz-icon nzType="appstore" class="mr-sm"></i>
926
+ </ng-container>
927
+ <ng-container *ngSwitchCase="NavType.GROUP">
928
+ <i nz-icon nzType="group" class="mr-sm"></i>
929
+ </ng-container>
930
+ <ng-container *ngSwitchCase="NavType.TILE">
931
+ <i nz-icon nzType="dash" class="mr-sm"></i>
932
+ </ng-container>
933
+ <ng-container *ngSwitchCase="NavType.BLANK">
934
+ <i nz-icon nzType="border" class="mr-sm"></i>
935
+ </ng-container>
936
+ <ng-container *ngSwitchCase="NavType.TABS">
937
+ <i nz-icon nzType="insert-row-above" class="mr-sm"></i>
938
+ </ng-container>
939
+ <ng-container *ngSwitchDefault>
940
+ <i nz-icon nzType="appstore" class="mr-sm"></i>
941
+ </ng-container>
942
+ {{ 'mode.nav.' + i.value | i18n }}
943
+ </ng-container>
944
+ </div>
945
+ }
946
+ }
947
+
839
948
  <div data-event-id="_nav_fullscreen" nz-menu-item>
840
949
  <yunzai-header-fullscreen />
841
950
  </div>
@@ -853,15 +962,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
853
962
  </layout-default-header-item>
854
963
  </layout-default>
855
964
  <ng-template #asideUserTpl>
856
- <div
857
- data-event-id="_route_user"
858
- nz-dropdown
859
- nzTrigger="click"
860
- [nzDropdownMenu]="userMenu"
861
- class="yunzai-default__aside-user"
862
- >
863
- <nz-avatar class="yunzai-default__aside-user-avatar" [nzSrc]="aside.icon" />
864
- <div class="yunzai-default__aside-user-info">
965
+ <div data-event-id="_route_user" class="yunzai-default__aside-user">
966
+ <nz-avatar class="yunzai-default__aside-user-avatar" [nzSrc]="aside.icon" (click)="aboutApplication()" />
967
+ <div class="yunzai-default__aside-user-info" nz-dropdown nzTrigger="click" [nzDropdownMenu]="userMenu">
865
968
  <strong>{{ aside.name | i18n }}</strong>
866
969
  <p class="mb0">{{ aside.intro | i18n }}</p>
867
970
  </div>
@@ -876,7 +979,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
876
979
  <reuse-tab #reuseTab [ngStyle]="reusetabCSS" />
877
980
  <router-outlet (activate)="reuseTab.activate($event)" (attach)="reuseTab.activate($event)" />
878
981
  </ng-template>
879
- <ng-template #noneTpl> <router-outlet /> </ng-template>
982
+ <ng-template #noneTpl>
983
+ <router-outlet />
984
+ </ng-template>
985
+
986
+ <nz-modal
987
+ nzTitle="关于本应用"
988
+ [(nzVisible)]="applicationModal.isVisible"
989
+ [nzOkText]="null"
990
+ [nzCancelText]="'关闭'"
991
+ [nzWidth]="700"
992
+ (nzOnCancel)="applicationModal.isVisible = false"
993
+ >
994
+ <ng-container *nzModalContent>
995
+ <nz-skeleton [nzLoading]="applicationModal.loading" [nzActive]="true">
996
+ <nz-descriptions nzBordered [nzSize]="'middle'" [nzColumn]="{ xxl: 2, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }">
997
+ <nz-descriptions-item nzTitle="应用名称">{{ applicationInfo?.showName }}</nz-descriptions-item>
998
+ <nz-descriptions-item nzTitle="应用标识">{{ applicationInfo?.name }}</nz-descriptions-item>
999
+ <nz-descriptions-item nzTitle="版本总数">{{ applicationInfo?.versionNum }}</nz-descriptions-item>
1000
+ <nz-descriptions-item nzTitle="应用首次部署时间">{{
1001
+ applicationInfo?.firstDeploymentDate | date: 'yyyy-MM-dd HH:mm:ss'
1002
+ }}</nz-descriptions-item>
1003
+ <nz-descriptions-item nzTitle="当前版本">{{ applicationInfo?.currentVersion }}</nz-descriptions-item>
1004
+ <nz-descriptions-item nzTitle="当前版本部署时间">{{
1005
+ applicationInfo?.currentDeploymentDate | date: 'yyyy-MM-dd HH:mm:ss'
1006
+ }}</nz-descriptions-item>
1007
+ <nz-descriptions-item nzTitle="最新版本">{{ applicationInfo?.lastVersion }}</nz-descriptions-item>
1008
+ <nz-descriptions-item nzTitle="最新版本发布时间">{{
1009
+ applicationInfo?.lastPushDate | date: 'yyyy-MM-dd HH:mm:ss'
1010
+ }}</nz-descriptions-item>
1011
+ </nz-descriptions>
1012
+ </nz-skeleton>
1013
+ </ng-container>
1014
+ </nz-modal>
880
1015
  `,
881
1016
  standalone: true,
882
1017
  imports: [
@@ -888,6 +1023,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
888
1023
  NzDropDownModule,
889
1024
  NzAvatarModule,
890
1025
  NzIconModule,
1026
+ NzModalModule,
1027
+ NzSkeletonModule,
1028
+ NzDescriptionsModule,
891
1029
  ThemeBtnModule,
892
1030
  YunzaiWidgetsModule,
893
1031
  YunzaiNavApplicationComponent,
@@ -899,8 +1037,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
899
1037
 
900
1038
  const COMPONENTS = [YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent];
901
1039
  class YunzaiLayoutModule {
902
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
903
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, imports: [I18nPipe,
1040
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1041
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutModule, imports: [I18nPipe,
904
1042
  FormsModule,
905
1043
  NzFormModule,
906
1044
  NzInputModule,
@@ -909,7 +1047,7 @@ class YunzaiLayoutModule {
909
1047
  NzIconModule,
910
1048
  NzDropDownModule,
911
1049
  NzTabsModule, YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent], exports: [YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent] }); }
912
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, imports: [FormsModule,
1050
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutModule, imports: [FormsModule,
913
1051
  NzFormModule,
914
1052
  NzInputModule,
915
1053
  CommonModule,
@@ -918,7 +1056,7 @@ class YunzaiLayoutModule {
918
1056
  NzDropDownModule,
919
1057
  NzTabsModule, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent] }); }
920
1058
  }
921
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, decorators: [{
1059
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: YunzaiLayoutModule, decorators: [{
922
1060
  type: NgModule,
923
1061
  args: [{
924
1062
  imports: [