@yelon/bis 17.2.1 → 17.2.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.
Files changed (109) hide show
  1. package/config/index.d.ts +5 -0
  2. package/config/public_api.d.ts +1 -0
  3. package/esm2022/bis.mjs +2 -2
  4. package/esm2022/{layout → config}/bis.config.mjs +1 -1
  5. package/esm2022/config/config.mjs +5 -0
  6. package/esm2022/config/public_api.mjs +2 -0
  7. package/esm2022/layout/layout-basic.component.mjs +376 -0
  8. package/esm2022/layout/layout-nav-application.component.mjs +368 -0
  9. package/esm2022/layout/layout-nav-group.component.mjs +159 -0
  10. package/esm2022/layout/layout-nav-tile.component.mjs +15 -0
  11. package/esm2022/layout/layout.module.mjs +54 -0
  12. package/esm2022/layout/public_api.mjs +6 -14
  13. package/esm2022/public_api.mjs +9 -2
  14. package/esm2022/src/bis.module.mjs +17 -0
  15. package/esm2022/src/helper.mjs +45 -0
  16. package/esm2022/src/provide.mjs +8 -0
  17. package/esm2022/src/refresh-token.mjs +79 -0
  18. package/esm2022/src/startup.service.mjs +182 -0
  19. package/esm2022/src/yunzai-act.guard.mjs +88 -0
  20. package/esm2022/src/yunzai-analysis-addon.guard.mjs +99 -0
  21. package/esm2022/src/yunzai-default.interceptor.mjs +63 -0
  22. package/esm2022/yunzai-widgets/public_api.mjs +7 -0
  23. package/esm2022/yunzai-widgets/yunzai-clear-storage.component.mjs +47 -0
  24. package/esm2022/yunzai-widgets/yunzai-fullscreen.component.mjs +47 -0
  25. package/esm2022/yunzai-widgets/yunzai-i18n.component.mjs +139 -0
  26. package/esm2022/yunzai-widgets/yunzai-notify.component.mjs +179 -0
  27. package/esm2022/yunzai-widgets/yunzai-user.component.mjs +119 -0
  28. package/esm2022/yunzai-widgets/yunzai-widget.module.mjs +62 -0
  29. package/esm2022/yunzai-widgets/yunzai-widgets.mjs +5 -0
  30. package/fesm2022/bis.mjs +552 -1
  31. package/fesm2022/bis.mjs.map +1 -1
  32. package/fesm2022/config.mjs +21 -0
  33. package/fesm2022/config.mjs.map +1 -0
  34. package/fesm2022/layout.mjs +395 -2781
  35. package/fesm2022/layout.mjs.map +1 -1
  36. package/fesm2022/yunzai-widgets.mjs +561 -0
  37. package/fesm2022/yunzai-widgets.mjs.map +1 -0
  38. package/index.d.ts +4 -0
  39. package/layout/{layout-basic/layout-basic.component.d.ts → layout-basic.component.d.ts} +12 -8
  40. package/layout/layout-nav-application.component.d.ts +26 -0
  41. package/layout/layout-nav-group.component.d.ts +13 -0
  42. package/layout/layout-nav-tile.component.d.ts +5 -0
  43. package/layout/layout.module.d.ts +18 -0
  44. package/layout/public_api.d.ts +5 -13
  45. package/package.json +40 -11
  46. package/public_api.d.ts +8 -2
  47. package/src/bis.module.d.ts +8 -0
  48. package/src/helper.d.ts +16 -0
  49. package/src/provide.d.ts +2 -0
  50. package/src/refresh-token.d.ts +6 -0
  51. package/src/startup.service.d.ts +22 -0
  52. package/src/yunzai-default.interceptor.d.ts +2 -0
  53. package/yunzai-widgets/index.d.ts +5 -0
  54. package/{layout/widgets/index.d.ts → yunzai-widgets/public_api.d.ts} +2 -2
  55. package/yunzai-widgets/yunzai-clear-storage.component.d.ts +8 -0
  56. package/yunzai-widgets/yunzai-fullscreen.component.d.ts +8 -0
  57. package/yunzai-widgets/yunzai-i18n.component.d.ts +19 -0
  58. package/yunzai-widgets/yunzai-notify.component.d.ts +24 -0
  59. package/yunzai-widgets/yunzai-user.component.d.ts +21 -0
  60. package/yunzai-widgets/yunzai-widget.module.d.ts +18 -0
  61. package/README.md +0 -23
  62. package/esm2022/index.mjs +0 -2
  63. package/esm2022/layout/html-names.mjs +0 -33
  64. package/esm2022/layout/icon/style-icons.mjs +0 -796
  65. package/esm2022/layout/layout-basic/index.mjs +0 -3
  66. package/esm2022/layout/layout-basic/interface.mjs +0 -2
  67. package/esm2022/layout/layout-basic/layout-basic.component.mjs +0 -368
  68. package/esm2022/layout/layout-nav/index.mjs +0 -4
  69. package/esm2022/layout/layout-nav/layout-nav-application.component.mjs +0 -382
  70. package/esm2022/layout/layout-nav/layout-nav-group.component.mjs +0 -122
  71. package/esm2022/layout/layout-nav/layout-nav-tile.component.mjs +0 -15
  72. package/esm2022/layout/widgets/index.mjs +0 -7
  73. package/esm2022/layout/widgets/yunzai-clear-storage.component.mjs +0 -44
  74. package/esm2022/layout/widgets/yunzai-fullscreen.component.mjs +0 -44
  75. package/esm2022/layout/widgets/yunzai-i18n.component.mjs +0 -140
  76. package/esm2022/layout/widgets/yunzai-notify.component.mjs +0 -185
  77. package/esm2022/layout/widgets/yunzai-theme-btn.component.mjs +0 -200
  78. package/esm2022/layout/widgets/yunzai-user.component.mjs +0 -129
  79. package/esm2022/layout/yunzai-act.guard.mjs +0 -88
  80. package/esm2022/layout/yunzai-analysis-addon.guard.mjs +0 -100
  81. package/esm2022/layout/yunzai-auth.service.mjs +0 -108
  82. package/esm2022/layout/yunzai-default.interceptor.mjs +0 -201
  83. package/esm2022/layout/yunzai-i18n.service.mjs +0 -107
  84. package/esm2022/layout/yunzai-lang.mjs +0 -114
  85. package/esm2022/layout/yunzai-layout.module.mjs +0 -118
  86. package/esm2022/layout/yunzai-startup.service.mjs +0 -152
  87. package/layout/html-names.d.ts +0 -31
  88. package/layout/icon/style-icons.d.ts +0 -1
  89. package/layout/layout-basic/index.d.ts +0 -2
  90. package/layout/layout-basic/interface.d.ts +0 -8
  91. package/layout/layout-nav/index.d.ts +0 -3
  92. package/layout/layout-nav/layout-nav-application.component.d.ts +0 -32
  93. package/layout/layout-nav/layout-nav-group.component.d.ts +0 -16
  94. package/layout/layout-nav/layout-nav-tile.component.d.ts +0 -6
  95. package/layout/widgets/yunzai-clear-storage.component.d.ts +0 -11
  96. package/layout/widgets/yunzai-fullscreen.component.d.ts +0 -8
  97. package/layout/widgets/yunzai-i18n.component.d.ts +0 -22
  98. package/layout/widgets/yunzai-notify.component.d.ts +0 -30
  99. package/layout/widgets/yunzai-theme-btn.component.d.ts +0 -32
  100. package/layout/widgets/yunzai-user.component.d.ts +0 -26
  101. package/layout/yunzai-auth.service.d.ts +0 -19
  102. package/layout/yunzai-default.interceptor.d.ts +0 -28
  103. package/layout/yunzai-i18n.service.d.ts +0 -27
  104. package/layout/yunzai-lang.d.ts +0 -12
  105. package/layout/yunzai-layout.module.d.ts +0 -30
  106. package/layout/yunzai-startup.service.d.ts +0 -34
  107. /package/{layout → config}/bis.config.d.ts +0 -0
  108. /package/{layout → src}/yunzai-act.guard.d.ts +0 -0
  109. /package/{layout → src}/yunzai-analysis-addon.guard.d.ts +0 -0
@@ -1,978 +1,46 @@
1
+ import * as i4 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
1
3
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, HostListener, Injectable, Inject, Input, Optional, inject, NgModule, APP_INITIALIZER } from '@angular/core';
3
- import * as i1$4 from '@yelon/util';
4
- import { WINDOW, useLocalStorageProjectInfo, useLocalStorageUser, useLocalStorageHeader, NavType, hasFavicon, setFavicon, useLocalStorageCurrent, useLocalStorageHeaderType, useLocalStorageDefaultRoute, log as log$1, deepCopy, YunzaiConfigService, useLocalStorageTenant } from '@yelon/util';
5
- import * as i1$5 from '@yelon/theme/layout-default';
6
- import { LayoutDefaultModule } from '@yelon/theme/layout-default';
7
- import * as i2$1 from '@yelon/socket';
8
- import * as i3$3 from '@angular/router';
9
- import { Router, RouterModule } from '@angular/router';
10
- import * as i4$4 from '@yelon/abc/reuse-tab';
11
- import { ReuseTabModule } from '@yelon/abc/reuse-tab';
12
- import * as i4$1 from '@angular/common';
13
- import { registerLocaleData, DOCUMENT, CommonModule, NgOptimizedImage } from '@angular/common';
14
- import * as i4$2 from 'ng-zorro-antd/menu';
15
- import * as i5 from 'ng-zorro-antd/dropdown';
16
- import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
17
- import * as i6 from 'ng-zorro-antd/avatar';
18
- import { NzAvatarModule } from 'ng-zorro-antd/avatar';
19
- import * as i1$2 from 'ng-zorro-antd/icon';
20
- import { NzIconModule } from 'ng-zorro-antd/icon';
21
- import * as i1 from 'ng-zorro-antd/modal';
22
- import * as i1$1 from 'ng-zorro-antd/message';
23
- import * as i1$3 from '@yelon/theme';
24
- import { zh_CN as zh_CN$1, zh_TW as zh_TW$1, en_US as en_US$1, el_GR as el_GR$1, es_ES as es_ES$1, fr_FR as fr_FR$1, hr_HR as hr_HR$1, it_IT as it_IT$1, ko_KR as ko_KR$1, pl_PL as pl_PL$1, sl_SI as sl_SI$1, tr_TR as tr_TR$1, YunzaiI18nBaseService, YUNZAI_I18N_TOKEN, _HttpClient, YunzaiThemeModule } from '@yelon/theme';
25
- import screenfull from 'screenfull';
26
- import { Subject, takeUntil, catchError, of, forkJoin, map as map$1, mergeMap, combineLatest, BehaviorSubject, throwError, filter, take, switchMap } from 'rxjs';
27
- import ngEn from '@angular/common/locales/en';
28
- import { zhCN, zhTW, enUS, el, es, fr, hr, it, ko, pl, sl, tr } from 'date-fns/locale';
29
- import { map } from 'rxjs/operators';
30
- import { YA_SERVICE_TOKEN, ALLOW_ANONYMOUS } from '@yelon/auth';
31
- import * as i2 from 'ng-zorro-antd/i18n';
32
- import { zh_CN, zh_TW, en_US, el_GR, es_ES, fr_FR, hr_HR, it_IT, ko_KR, pl_PL, sl_SI, tr_TR } from 'ng-zorro-antd/i18n';
33
- import ngElGr from '@angular/common/locales/el';
34
- import ngEsEs from '@angular/common/locales/es';
35
- import ngFr from '@angular/common/locales/fr';
36
- import ngHr from '@angular/common/locales/hr';
37
- import ngIt from '@angular/common/locales/it';
38
- import ngKo from '@angular/common/locales/ko';
39
- import ngPl from '@angular/common/locales/pl';
40
- import ngSl from '@angular/common/locales/sl';
41
- import ngTr from '@angular/common/locales/tr';
42
- import ngZh from '@angular/common/locales/zh';
43
- import ngZhTw from '@angular/common/locales/zh-Hant';
44
- import * as i3 from '@angular/cdk/platform';
45
- import * as i4 from '@yelon/util/config';
46
- import { YunzaiConfigService as YunzaiConfigService$1 } from '@yelon/util/config';
47
- import { formatDistanceToNow } from 'date-fns';
48
- import { log } from '@yelon/util/other';
49
- import * as i4$3 from '@yelon/abc/notice-icon';
50
- import { NoticeIconModule } from '@yelon/abc/notice-icon';
51
- import { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';
52
- import * as i3$1 from '@angular/cdk/bidi';
53
- import * as i5$1 from 'ng-zorro-antd/tooltip';
54
- import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
55
- import * as i5$2 from '@angular/forms';
4
+ import { inject, Component, NgModule } from '@angular/core';
5
+ import * as i1 from '@angular/forms';
56
6
  import { FormsModule } from '@angular/forms';
57
- import * as i6$1 from 'ng-zorro-antd/grid';
7
+ import { _HttpClient, YunzaiHttpI18NService, I18nPipe } from '@yelon/theme';
8
+ import * as i3$1 from 'ng-zorro-antd/dropdown';
9
+ import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
10
+ import { NzFormModule } from 'ng-zorro-antd/form';
11
+ import * as i2 from 'ng-zorro-antd/grid';
58
12
  import { NzGridModule } from 'ng-zorro-antd/grid';
59
- import * as i7 from 'ng-zorro-antd/input';
13
+ import * as i1$1 from 'ng-zorro-antd/icon';
14
+ import { NzIconModule } from 'ng-zorro-antd/icon';
15
+ import * as i3 from 'ng-zorro-antd/input';
60
16
  import { NzInputModule } from 'ng-zorro-antd/input';
61
- import * as i3$2 from 'ng-zorro-antd/tabs';
17
+ import * as i4$1 from 'ng-zorro-antd/tabs';
62
18
  import { NzTabsModule } from 'ng-zorro-antd/tabs';
63
- import { HttpErrorResponse, HttpResponse, HttpResponseBase } from '@angular/common/http';
64
- import { NzNotificationService } from 'ng-zorro-antd/notification';
65
- import { AccountBookTwoTone, AccountBookFill, AccountBookOutline, AlertTwoTone, AlertFill, AlibabaOutline, AimOutline, AlipayCircleFill, AlertOutline, AlignCenterOutline, AlipayCircleOutline, AlipayOutline, AlignLeftOutline, AlignRightOutline, AmazonOutline, AliwangwangOutline, AliyunOutline, AlipaySquareFill, AmazonCircleFill, AndroidFill, AliwangwangFill, AntCloudOutline, AmazonSquareFill, AndroidOutline, ApartmentOutline, ApiTwoTone, ApiFill, ApiOutline, AntDesignOutline, AppstoreAddOutline, AppstoreFill, AppleOutline, AppstoreOutline, ArrowDownOutline, AppleFill, ArrowsAltOutline, AppstoreTwoTone, ArrowUpOutline, AreaChartOutline, ArrowLeftOutline, AudioFill, ArrowRightOutline, AudioTwoTone, AuditOutline, AudioMutedOutline, BackwardFill, AudioOutline, BackwardOutline, BankFill, BarcodeOutline, BellFill, BankTwoTone, BarsOutline, BankOutline, BehanceCircleFill, BehanceSquareFill, BoldOutline, BellOutline, BehanceOutline, BlockOutline, BehanceSquareOutline, BgColorsOutline, BellTwoTone, BarChartOutline, BookTwoTone, BookFill, BorderOuterOutline, BorderLeftOutline, BorderBottomOutline, BorderHorizontalOutline, BorderTopOutline, BorderOutline, BorderInnerOutline, BorderRightOutline, BoxPlotOutline, BoxPlotFill, BoxPlotTwoTone, BookOutline, BorderlessTableOutline, BorderVerticleOutline, BuildTwoTone, BuildOutline, BugFill, BugOutline, BugTwoTone, BulbFill, BulbTwoTone, BuildFill, BulbOutline, CalculatorFill, CalculatorTwoTone, CalendarFill, CalendarOutline, CalculatorOutline, CalendarTwoTone, CameraOutline, CameraFill, CameraTwoTone, CarTwoTone, CaretDownOutline, CarOutline, CaretLeftFill, CarFill, CaretRightOutline, CaretDownFill, CaretUpOutline, CaretRightFill, CarryOutFill, CarryOutOutline, CaretLeftOutline, CaretUpFill, BranchesOutline, CarryOutTwoTone, CheckCircleFill, CheckCircleOutline, CheckSquareOutline, CheckCircleTwoTone, CiCircleTwoTone, CheckOutline, CheckSquareTwoTone, CiOutline, CheckSquareFill, CiTwoTone, ChromeOutline, ClockCircleOutline, CiCircleOutline, ChromeFill, ClearOutline, CloseCircleTwoTone, CiCircleFill, CloseCircleOutline, ClockCircleFill, CloseCircleFill, ClockCircleTwoTone, CloseOutline, CloseSquareOutline, CloseSquareFill, CloudFill, CloseSquareTwoTone, CloudDownloadOutline, CloudTwoTone, CloudServerOutline, CloudUploadOutline, CloudSyncOutline, ClusterOutline, CodeSandboxCircleFill, CodeFill, CodepenCircleOutline, CloudOutline, CodeSandboxOutline, CodeOutline, CodeSandboxSquareFill, CodeTwoTone, CodepenSquareFill, CodepenOutline, CoffeeOutline, ColumnWidthOutline, CompressOutline, ColumnHeightOutline, CodepenCircleFill, CompassTwoTone, CommentOutline, ContainerFill, CompassOutline, ConsoleSqlOutline, ContactsOutline, ContainerTwoTone, ContactsFill, ContactsTwoTone, ContainerOutline, ControlFill, CopyFill, CopyOutline, CompassFill, CopyTwoTone, CopyrightOutline, CopyrightCircleOutline, ControlTwoTone, ControlOutline, CreditCardFill, CopyrightTwoTone, CrownFill, CopyrightCircleFill, CrownOutline, CustomerServiceTwoTone, CreditCardOutline, CustomerServiceOutline, DashboardTwoTone, CrownTwoTone, CreditCardTwoTone, CustomerServiceFill, DashboardFill, DashOutline, DatabaseOutline, DatabaseTwoTone, DatabaseFill, DashboardOutline, DeleteTwoTone, DeleteRowOutline, DeleteColumnOutline, DeliveredProcedureOutline, DeleteOutline, CopyrightCircleTwoTone, DesktopOutline, DeleteFill, DiffOutline, DiffFill, DeploymentUnitOutline, DiffTwoTone, DingtalkOutline, DollarCircleFill, DislikeFill, DingtalkSquareFill, DisconnectOutline, DollarCircleTwoTone, DollarOutline, DingtalkCircleFill, DislikeTwoTone, DollarTwoTone, DownCircleFill, DislikeOutline, DollarCircleOutline, DoubleLeftOutline, DownSquareFill, DownOutline, DownSquareOutline, DownSquareTwoTone, DownCircleTwoTone, DoubleRightOutline, DownCircleOutline, DownloadOutline, DotChartOutline, DribbbleCircleFill, DribbbleOutline, DribbbleSquareOutline, DropboxCircleFill, DingdingOutline, EditOutline, DribbbleSquareFill, DropboxSquareFill, EllipsisOutline, EnvironmentFill, EditFill, EnterOutline, EuroCircleFill, EuroTwoTone, EuroCircleOutline, EditTwoTone, EuroOutline, EnvironmentTwoTone, ExclamationCircleFill, ExpandAltOutline, EuroCircleTwoTone, ExclamationCircleTwoTone, EnvironmentOutline, ExperimentOutline, ExperimentFill, ExpandOutline, ExceptionOutline, ExportOutline, ExperimentTwoTone, ExclamationCircleOutline, ExclamationOutline, EyeFill, EyeInvisibleFill, EyeInvisibleTwoTone, DropboxOutline, DragOutline, FacebookOutline, FacebookFill, EyeTwoTone, EyeOutline, FastForwardFill, FieldBinaryOutline, FieldNumberOutline, FastBackwardOutline, FileAddFill, FastBackwardFill, FileExcelFill, FastForwardOutline, FieldStringOutline, FileDoneOutline, FileAddTwoTone, FileExcelTwoTone, FileExclamationFill, FileAddOutline, FileExclamationOutline, FieldTimeOutline, FileImageTwoTone, FileExcelOutline, FileExclamationTwoTone, FileImageFill, FileGifOutline, FileFill, FileMarkdownTwoTone, FileMarkdownOutline, FallOutline, FileImageOutline, EyeInvisibleOutline, FilePdfOutline, FileSearchOutline, FilePptTwoTone, FilePdfTwoTone, FileJpgOutline, FileTextFill, FilePptOutline, FileSyncOutline, FilePptFill, FileUnknownOutline, FileProtectOutline, FileTextTwoTone, FileWordFill, FileUnknownTwoTone, FileWordTwoTone, FileUnknownFill, FileTextOutline, FileZipFill, FilterTwoTone, FilterFill, FileWordOutline, FireOutline, FireTwoTone, FileZipOutline, FilterOutline, FlagTwoTone, FileTwoTone, FilePdfFill, FileOutline, FileMarkdownFill, FileZipTwoTone, FlagOutline, FolderAddTwoTone, FolderOpenFill, FireFill, FlagFill, FolderOutline, FolderViewOutline, FolderTwoTone, FontColorsOutline, FolderOpenTwoTone, FolderFill, ForwardOutline, FolderOpenOutline, ForkOutline, ForwardFill, FormatPainterOutline, FormatPainterFill, FormOutline, FrownFill, FrownTwoTone, FullscreenOutline, FontSizeOutline, FundFill, FunctionOutline, FundViewOutline, FullscreenExitOutline, GifOutline, FundProjectionScreenOutline, FundTwoTone, FolderAddFill, FunnelPlotTwoTone, GiftOutline, FunnelPlotFill, FundOutline, FrownOutline, GithubOutline, GoldFill, FolderAddOutline, GitlabFill, GiftFill, GitlabOutline, GoldTwoTone, GoogleCircleFill, GiftTwoTone, GooglePlusCircleFill, GoldOutline, GithubFill, GoogleOutline, GooglePlusOutline, GoogleSquareFill, GoldenFill, HddTwoTone, GooglePlusSquareFill, GlobalOutline, HeartOutline, HeartTwoTone, GroupOutline, HeartFill, HeatMapOutline, GatewayOutline, FunnelPlotOutline, HddFill, HomeFill, HighlightFill, HomeOutline, HistoryOutline, HighlightOutline, HddOutline, HourglassFill, HomeTwoTone, HourglassTwoTone, Html5Outline, Html5Fill, IdcardFill, Html5TwoTone, HourglassOutline, IdcardTwoTone, IdcardOutline, IeOutline, IeCircleFill, IeSquareFill, InboxOutline, ImportOutline, InfoCircleOutline, InfoCircleTwoTone, InsertRowAboveOutline, InsertRowRightOutline, InfoCircleFill, InfoOutline, InsertRowBelowOutline, HighlightTwoTone, InsuranceFill, InstagramFill, InteractionFill, InsertRowLeftOutline, InstagramOutline, InteractionOutline, ItalicOutline, InteractionTwoTone, LayoutOutline, IssuesCloseOutline, LayoutFill, LaptopOutline, LeftCircleFill, LayoutTwoTone, KeyOutline, LeftOutline, LeftCircleOutline, LeftSquareOutline, LeftSquareFill, LeftCircleTwoTone, LikeFill, LeftSquareTwoTone, LineOutline, LikeTwoTone, LinkedinOutline, LineChartOutline, LineHeightOutline, LinkedinFill, LinkOutline, LikeOutline, InsuranceOutline, Loading3QuartersOutline, LockFill, InsuranceTwoTone, MacCommandOutline, LockTwoTone, LoadingOutline, MailOutline, LoginOutline, MedicineBoxOutline, MailFill, MailTwoTone, MacCommandFill, ManOutline, MedicineBoxFill, MedicineBoxTwoTone, MediumCircleFill, MediumOutline, MehFill, MediumWorkmarkOutline, MenuFoldOutline, MehOutline, MediumSquareFill, MessageTwoTone, MehTwoTone, MergeCellsOutline, MinusCircleFill, MenuOutline, MenuUnfoldOutline, MessageFill, MinusCircleTwoTone, LockOutline, MinusOutline, MinusCircleOutline, LogoutOutline, MessageOutline, MoneyCollectFill, MinusSquareOutline, MinusSquareTwoTone, MobileOutline, MobileTwoTone, MoneyCollectOutline, MoreOutline, NotificationFill, NotificationOutline, MoneyCollectTwoTone, NodeIndexOutline, NodeExpandOutline, MonitorOutline, OrderedListOutline, NodeCollapseOutline, NumberOutline, PaperClipOutline, NotificationTwoTone, PauseCircleFill, PartitionOutline, PauseOutline, OneToOneOutline, PayCircleOutline, PayCircleFill, MinusSquareFill, PauseCircleOutline, PauseCircleTwoTone, PicCenterOutline, PicRightOutline, PercentageOutline, MobileFill, PictureOutline, PictureFill, PhoneTwoTone, PhoneFill, PieChartFill, PictureTwoTone, PieChartOutline, PlaySquareFill, PlayCircleTwoTone, PlayCircleFill, PlusCircleFill, PlaySquareTwoTone, PlaySquareOutline, PlayCircleOutline, PieChartTwoTone, PlusCircleOutline, PlusSquareFill, PoundCircleFill, PlusSquareOutline, PlusOutline, PoundOutline, PoundCircleOutline, PlusSquareTwoTone, PlusCircleTwoTone, PoweroffOutline, PoundCircleTwoTone, PhoneOutline, PrinterFill, PicLeftOutline, ProjectTwoTone, PrinterOutline, ProjectFill, ProfileOutline, ProfileTwoTone, ProjectOutline, PropertySafetyFill, PullRequestOutline, PropertySafetyOutline, PushpinOutline, PushpinTwoTone, PropertySafetyTwoTone, PushpinFill, QqOutline, QqCircleFill, QrcodeOutline, QqSquareFill, QuestionCircleTwoTone, QuestionCircleFill, RadarChartOutline, RadiusUprightOutline, QuestionCircleOutline, QuestionOutline, ReadFill, RadiusUpleftOutline, RadiusBottomleftOutline, RadiusSettingOutline, RadiusBottomrightOutline, ProfileFill, PrinterTwoTone, ReadOutline, ReconciliationFill, ReloadOutline, ReconciliationOutline, RedEnvelopeTwoTone, RedditCircleFill, RedoOutline, RedEnvelopeFill, RedditOutline, RestTwoTone, RightCircleOutline, RestOutline, RedditSquareFill, RestFill, RightCircleTwoTone, RightOutline, RightSquareFill, RightCircleFill, RightSquareOutline, RetweetOutline, RiseOutline, RightSquareTwoTone, RobotFill, RocketOutline, RobotOutline, RocketTwoTone, RocketFill, RedEnvelopeOutline, RollbackOutline, RotateRightOutline, RotateLeftOutline, ReconciliationTwoTone, SafetyCertificateTwoTone, SaveOutline, SafetyOutline, SaveFill, SaveTwoTone, ScheduleFill, SafetyCertificateOutline, ScanOutline, ScheduleTwoTone, SearchOutline, ScheduleOutline, SecurityScanTwoTone, SecurityScanOutline, ScissorOutline, SelectOutline, SecurityScanFill, SendOutline, SettingOutline, SettingTwoTone, SettingFill, ShareAltOutline, ShopOutline, ShopFill, ShopTwoTone, ShrinkOutline, ShakeOutline, ShoppingOutline, ShoppingCartOutline, ShoppingFill, SisternodeOutline, ShoppingTwoTone, SafetyCertificateFill, SkinOutline, SignalFill, SketchOutline, SkinTwoTone, SketchSquareFill, SkypeFill, SkinFill, SlackCircleFill, SlackSquareFill, SlidersTwoTone, SkypeOutline, SlidersFill, SlackSquareOutline, SmallDashOutline, SmileTwoTone, SlidersOutline, SnippetsFill, SnippetsOutline, SmileOutline, SolutionOutline, SlackOutline, SnippetsTwoTone, SoundTwoTone, SortAscendingOutline, SoundFill, SortDescendingOutline, SmileFill, SoundOutline, SplitCellsOutline, SketchCircleFill, StarOutline, StockOutline, StarTwoTone, StepForwardFill, StarFill, StepBackwardFill, StepForwardOutline, StopFill, SubnodeOutline, SwapLeftOutline, StopOutline, StopTwoTone, SwapRightOutline, SwapOutline, SwitcherTwoTone, SwitcherOutline, SyncOutline, StrikethroughOutline, SwitcherFill, TagOutline, TabletTwoTone, TabletOutline, TabletFill, TableOutline, TagsFill, TagFill, TagsTwoTone, TaobaoCircleOutline, StepBackwardOutline, TagsOutline, TagTwoTone, TaobaoOutline, ThunderboltOutline, TaobaoSquareFill, TeamOutline, TaobaoCircleFill, ThunderboltTwoTone, ToolFill, ThunderboltFill, ToTopOutline, ToolOutline, ToolTwoTone, TrademarkCircleFill, TrophyFill, TrademarkCircleTwoTone, TransactionOutline, TrademarkCircleOutline, TranslationOutline, TwitterCircleFill, TrophyOutline, TrademarkOutline, TrophyTwoTone, TwitterSquareFill, UnlockFill, TwitterOutline, UnderlineOutline, UndoOutline, UpCircleFill, UngroupOutline, UnlockTwoTone, UnlockOutline, UpOutline, UsbFill, UpCircleOutline, UnorderedListOutline, UpCircleTwoTone, UpSquareFill, UpSquareOutline, UserAddOutline, UsbTwoTone, UsergroupDeleteOutline, UpSquareTwoTone, UserOutline, UsbOutline, UserDeleteOutline, UserSwitchOutline, VerticalLeftOutline, VerticalAlignBottomOutline, VerifiedOutline, UsergroupAddOutline, UploadOutline, VerticalAlignMiddleOutline, VerticalAlignTopOutline, VerticalRightOutline, VideoCameraOutline, VideoCameraAddOutline, VideoCameraTwoTone, VideoCameraFill, WalletOutline, WalletFill, WarningFill, WarningOutline, WechatOutline, WalletTwoTone, WeiboCircleFill, WarningTwoTone, WeiboSquareFill, WeiboOutline, WeiboSquareOutline, WeiboCircleOutline, WechatFill, WhatsAppOutline, WifiOutline, WomanOutline, YoutubeFill, YahooOutline, WindowsFill, WindowsOutline, YoutubeOutline, YuqueOutline, ZhihuCircleFill, YuqueFill, ZhihuOutline, ZhihuSquareFill, ZoomInOutline, ZoomOutOutline, YahooFill } from '@ant-design/icons-angular/icons';
66
- import * as i3$4 from '@yelon/acl';
67
-
68
- class YunzaiClearStorageComponent {
69
- constructor(modalSrv, messageSrv) {
70
- this.modalSrv = modalSrv;
71
- this.messageSrv = messageSrv;
72
- }
73
- _click() {
74
- this.modalSrv.confirm({
75
- nzTitle: 'Make sure clear all local storage?',
76
- nzOnOk: () => {
77
- localStorage.clear();
78
- this.messageSrv.success('Clear Finished!');
79
- }
80
- });
81
- }
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiClearStorageComponent, deps: [{ token: i1.NzModalService }, { token: i1$1.NzMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
83
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiClearStorageComponent, selector: "yunzai-clearstorage", host: { listeners: { "click": "_click()" }, properties: { "class.d-block": "true" } }, ngImport: i0, template: `
84
- <i nz-icon nzType="tool"></i>
85
- {{ 'storage.clear' | i18n }}
86
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
87
- }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiClearStorageComponent, decorators: [{
89
- type: Component,
90
- args: [{
91
- selector: 'yunzai-clearstorage',
92
- template: `
93
- <i nz-icon nzType="tool"></i>
94
- {{ 'storage.clear' | i18n }}
95
- `,
96
- host: {
97
- '[class.d-block]': 'true'
98
- },
99
- changeDetection: ChangeDetectionStrategy.OnPush
100
- }]
101
- }], ctorParameters: () => [{ type: i1.NzModalService }, { type: i1$1.NzMessageService }], propDecorators: { _click: [{
102
- type: HostListener,
103
- args: ['click']
104
- }] } });
19
+ import * as i2$2 from '@angular/router';
20
+ import { RouterModule } from '@angular/router';
21
+ import * as i3$2 from '@yelon/abc/reuse-tab';
22
+ import { ReuseTabModule } from '@yelon/abc/reuse-tab';
23
+ import * as i10 from '@yelon/bis/yunzai-widgets';
24
+ import { YunzaiWidgetsModule } from '@yelon/bis/yunzai-widgets';
25
+ import { StompService } from '@yelon/socket';
26
+ import * as i1$2 from '@yelon/theme/layout-default';
27
+ import { LayoutDisplayService, LayoutDefaultModule } from '@yelon/theme/layout-default';
28
+ import * as i9 from '@yelon/theme/theme-btn';
29
+ 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 * as i7 from 'ng-zorro-antd/avatar';
32
+ import { NzAvatarModule } from 'ng-zorro-antd/avatar';
33
+ import { Subject, takeUntil } from 'rxjs';
34
+ import { mergeBisConfig } from '@yelon/bis/config';
35
+ import * as i2$1 from 'ng-zorro-antd/menu';
105
36
 
106
- class YunzaiFullScreenComponent {
37
+ class YunzaiNavApplicationComponent {
107
38
  constructor() {
108
- this.status = false;
109
- }
110
- _resize() {
111
- this.status = screenfull.isFullscreen;
112
- }
113
- _click() {
114
- if (screenfull.isEnabled) {
115
- screenfull.toggle();
116
- }
117
- }
118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiFullScreenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
119
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiFullScreenComponent, selector: "yunzai-fullscreen", host: { listeners: { "window:resize": "_resize()", "click": "_click()" }, properties: { "class.d-block": "true" } }, ngImport: i0, template: `
120
- <i nz-icon [nzType]="status ? 'fullscreen-exit' : 'fullscreen'"></i>
121
- {{ (status ? 'exitFullscreen' : 'fullscreen') | i18n }}
122
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
123
- }
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiFullScreenComponent, decorators: [{
125
- type: Component,
126
- args: [{
127
- selector: 'yunzai-fullscreen',
128
- template: `
129
- <i nz-icon [nzType]="status ? 'fullscreen-exit' : 'fullscreen'"></i>
130
- {{ (status ? 'exitFullscreen' : 'fullscreen') | i18n }}
131
- `,
132
- host: {
133
- '[class.d-block]': 'true'
134
- },
135
- changeDetection: ChangeDetectionStrategy.OnPush
136
- }]
137
- }], propDecorators: { _resize: [{
138
- type: HostListener,
139
- args: ['window:resize']
140
- }], _click: [{
141
- type: HostListener,
142
- args: ['click']
143
- }] } });
144
-
145
- const YUNZAI_LANGS = {
146
- 'zh-CN': {
147
- text: '简体中文',
148
- ng: ngZh,
149
- zorro: zh_CN,
150
- date: zhCN,
151
- yelon: zh_CN$1,
152
- abbr: '🇨🇳'
153
- },
154
- 'zh-TW': {
155
- text: '繁体中文',
156
- ng: ngZhTw,
157
- zorro: zh_TW,
158
- date: zhTW,
159
- yelon: zh_TW$1,
160
- abbr: '🇭🇰'
161
- },
162
- 'en-US': {
163
- text: 'English',
164
- ng: ngEn,
165
- zorro: en_US,
166
- date: enUS,
167
- yelon: en_US$1,
168
- abbr: '🇬🇧'
169
- },
170
- 'el-GR': {
171
- text: 'Ελληνικά',
172
- ng: ngElGr,
173
- zorro: el_GR,
174
- date: el,
175
- yelon: el_GR$1,
176
- abbr: '🇬🇷'
177
- },
178
- 'es-ES': {
179
- text: 'Español',
180
- ng: ngEsEs,
181
- zorro: es_ES,
182
- date: es,
183
- yelon: es_ES$1,
184
- abbr: '🇪🇸'
185
- },
186
- 'fr-FR': {
187
- text: 'Français',
188
- ng: ngFr,
189
- zorro: fr_FR,
190
- date: fr,
191
- yelon: fr_FR$1,
192
- abbr: '🇫🇷'
193
- },
194
- 'hr-HR': {
195
- text: 'Hrvatski',
196
- ng: ngHr,
197
- zorro: hr_HR,
198
- date: hr,
199
- yelon: hr_HR$1,
200
- abbr: '🇭🇷'
201
- },
202
- 'it-IT': {
203
- text: 'Italiano',
204
- ng: ngIt,
205
- zorro: it_IT,
206
- date: it,
207
- yelon: it_IT$1,
208
- abbr: '🇮🇹'
209
- },
210
- 'ko-KR': {
211
- text: '한국어',
212
- ng: ngKo,
213
- zorro: ko_KR,
214
- date: ko,
215
- yelon: ko_KR$1,
216
- abbr: '🇰🇷'
217
- },
218
- 'pl-PL': {
219
- text: 'Polski',
220
- ng: ngPl,
221
- zorro: pl_PL,
222
- date: pl,
223
- yelon: pl_PL$1,
224
- abbr: '🇵🇱'
225
- },
226
- 'sl-SI': {
227
- text: 'Slovenščina',
228
- ng: ngSl,
229
- zorro: sl_SI,
230
- date: sl,
231
- yelon: sl_SI$1,
232
- abbr: '🇸🇮'
233
- },
234
- 'tr-TR': {
235
- text: 'Türkçe',
236
- ng: ngTr,
237
- zorro: tr_TR,
238
- date: tr,
239
- yelon: tr_TR$1,
240
- abbr: '🇹🇷'
241
- }
242
- };
243
-
244
- const DEFAULT = 'zh-CN';
245
- class YunzaiI18NService extends YunzaiI18nBaseService {
246
- constructor(http, settings, nzI18nService, yelonLocaleService, platform, tokenService, cogSrv) {
247
- super(cogSrv);
248
- this.http = http;
249
- this.settings = settings;
250
- this.nzI18nService = nzI18nService;
251
- this.yelonLocaleService = yelonLocaleService;
252
- this.platform = platform;
253
- this.tokenService = tokenService;
254
- this._defaultLang = DEFAULT;
255
- this.$destroy = new Subject();
256
- if (this.tokenService.get()?.access_token) {
257
- const defaultLang = this.getDefaultLang();
258
- this.getLangs()
259
- .pipe(takeUntil(this.$destroy))
260
- .subscribe(langs => {
261
- this._defaultLang = langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;
262
- });
263
- }
264
- }
265
- getDefaultLang() {
266
- if (!this.platform.isBrowser) {
267
- return DEFAULT;
268
- }
269
- if (this.settings.layout.lang) {
270
- return this.settings.layout.lang;
271
- }
272
- let res = (navigator.languages ? navigator.languages[0] : null) || navigator.language;
273
- const arr = res.split('-');
274
- return arr.length <= 1 ? res : `${arr[0]}-${arr[1].toUpperCase()}`;
275
- }
276
- loadLangData(lang) {
277
- if (ngDevMode) {
278
- return this.http.get(`assets/tmp/i18n/${lang}.json`);
279
- }
280
- else {
281
- return this.http
282
- .get(`/i18n/api/v2/language/${lang}`)
283
- .pipe(catchError(() => this.http.get(`assets/tmp/i18n/${lang}.json`)));
284
- }
285
- }
286
- use(lang, data) {
287
- if (this._currentLang === lang)
288
- return;
289
- this._data = this.flatData(data, []);
290
- const item = YUNZAI_LANGS[lang];
291
- if (item) {
292
- registerLocaleData(item.ng);
293
- this.nzI18nService.setLocale(item.zorro);
294
- this.nzI18nService.setDateLocale(item.date);
295
- this.yelonLocaleService.setLocale(item.yelon);
296
- this._currentLang = lang;
297
- this._change$.next(lang);
298
- }
299
- else {
300
- registerLocaleData(ngEn);
301
- this.nzI18nService.setLocale(en_US);
302
- this.nzI18nService.setDateLocale(enUS);
303
- this.yelonLocaleService.setLocale(en_US$1);
304
- this._currentLang = lang;
305
- this._change$.next(lang);
306
- }
307
- }
308
- getLangs() {
309
- const langs = Object.keys(YUNZAI_LANGS).map(code => {
310
- const item = YUNZAI_LANGS[code];
311
- return { code, text: item.text, abbr: item.abbr, image: undefined };
312
- });
313
- if (ngDevMode) {
314
- return of(langs);
315
- }
316
- else {
317
- return this.http.get(`/i18n/api/v2/language`).pipe(map((response) => {
318
- return response.data;
319
- }), catchError(() => of(langs)));
320
- }
321
- }
322
- ngOnDestroy() {
323
- this.$destroy.complete();
324
- }
325
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiI18NService, deps: [{ token: i1$3._HttpClient }, { token: i1$3.SettingsService }, { token: i2.NzI18nService }, { token: i1$3.YelonLocaleService }, { token: i3.Platform }, { token: YA_SERVICE_TOKEN }, { token: i4.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
326
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiI18NService, providedIn: 'root' }); }
327
- }
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiI18NService, decorators: [{
329
- type: Injectable,
330
- args: [{ providedIn: 'root' }]
331
- }], ctorParameters: () => [{ type: i1$3._HttpClient }, { type: i1$3.SettingsService }, { type: i2.NzI18nService }, { type: i1$3.YelonLocaleService }, { type: i3.Platform }, { type: undefined, decorators: [{
332
- type: Inject,
333
- args: [YA_SERVICE_TOKEN]
334
- }] }, { type: i4.YunzaiConfigService }] });
335
-
336
- class YunzaiI18NComponent {
337
- get curLangCode() {
338
- return this.settings.layout.lang;
339
- }
340
- constructor(settings, i18n, doc) {
341
- this.settings = settings;
342
- this.i18n = i18n;
343
- this.doc = doc;
344
- /** Whether to display language text */
345
- this.showLangText = true;
346
- this.$destroy = new Subject();
347
- this.langs = [];
348
- this.i18n
349
- .getLangs()
350
- .pipe(takeUntil(this.$destroy))
351
- .subscribe(langs => {
352
- this.langs = langs;
353
- });
354
- }
355
- change(lang) {
356
- const spinEl = this.doc.createElement('div');
357
- spinEl.setAttribute('class', `page-loading ant-spin ant-spin-lg ant-spin-spinning`);
358
- spinEl.innerHTML = `<span class="ant-spin-dot ant-spin-dot-spin"><i></i><i></i><i></i><i></i></span>`;
359
- this.doc.body.appendChild(spinEl);
360
- this.i18n.loadLangData(lang).subscribe(res => {
361
- this.i18n.use(lang, res);
362
- this.settings.setLayout('lang', lang);
363
- setTimeout(() => this.doc.location.reload());
364
- });
365
- }
366
- ngOnDestroy() {
367
- this.$destroy.complete();
368
- }
369
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiI18NComponent, deps: [{ token: i1$3.SettingsService }, { token: YUNZAI_I18N_TOKEN }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
370
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiI18NComponent, selector: "yunzai-i18n", inputs: { showLangText: "showLangText" }, ngImport: i0, template: `
371
- <div *ngIf="showLangText" nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
372
- <i nz-icon nzType="global"></i>
373
- {{ 'lang.nav' | i18n }}
374
- <i nz-icon nzType="down"></i>
375
- </div>
376
- <i
377
- *ngIf="!showLangText"
378
- nz-dropdown
379
- [nzDropdownMenu]="langMenu"
380
- nzPlacement="bottomRight"
381
- nz-icon
382
- nzType="global"
383
- ></i>
384
- <nz-dropdown-menu data-event-id="_nav_lang" #langMenu="nzDropdownMenu">
385
- <ul nz-menu>
386
- <li
387
- data-event-id="_nav_lang"
388
- [attr.data-text]="item.text"
389
- nz-menu-item
390
- *ngFor="let item of langs"
391
- [nzSelected]="item.code === curLangCode"
392
- (click)="change(item.code)"
393
- >
394
- <span *ngIf="!item.icon" role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
395
- <img
396
- *ngIf="item.icon"
397
- style="margin-right:4px"
398
- width="50px"
399
- height="30px"
400
- ngSrc="'data:image/png;base64,' + item.icon"
401
- [alt]="item.abbr"
402
- class="pr-xs"
403
- />
404
- {{ item.text }}
405
- </li>
406
- </ul>
407
- </nz-dropdown-menu>
408
- `, isInline: true, dependencies: [{ kind: "directive", type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$1.NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i5.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i5.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i1$2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
409
- }
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiI18NComponent, decorators: [{
411
- type: Component,
412
- args: [{
413
- selector: 'yunzai-i18n',
414
- template: `
415
- <div *ngIf="showLangText" nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
416
- <i nz-icon nzType="global"></i>
417
- {{ 'lang.nav' | i18n }}
418
- <i nz-icon nzType="down"></i>
419
- </div>
420
- <i
421
- *ngIf="!showLangText"
422
- nz-dropdown
423
- [nzDropdownMenu]="langMenu"
424
- nzPlacement="bottomRight"
425
- nz-icon
426
- nzType="global"
427
- ></i>
428
- <nz-dropdown-menu data-event-id="_nav_lang" #langMenu="nzDropdownMenu">
429
- <ul nz-menu>
430
- <li
431
- data-event-id="_nav_lang"
432
- [attr.data-text]="item.text"
433
- nz-menu-item
434
- *ngFor="let item of langs"
435
- [nzSelected]="item.code === curLangCode"
436
- (click)="change(item.code)"
437
- >
438
- <span *ngIf="!item.icon" role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
439
- <img
440
- *ngIf="item.icon"
441
- style="margin-right:4px"
442
- width="50px"
443
- height="30px"
444
- ngSrc="'data:image/png;base64,' + item.icon"
445
- [alt]="item.abbr"
446
- class="pr-xs"
447
- />
448
- {{ item.text }}
449
- </li>
450
- </ul>
451
- </nz-dropdown-menu>
452
- `,
453
- changeDetection: ChangeDetectionStrategy.OnPush
454
- }]
455
- }], ctorParameters: () => [{ type: i1$3.SettingsService }, { type: YunzaiI18NService, decorators: [{
456
- type: Inject,
457
- args: [YUNZAI_I18N_TOKEN]
458
- }] }, { type: undefined, decorators: [{
459
- type: Inject,
460
- args: [DOCUMENT]
461
- }] }], propDecorators: { showLangText: [{
462
- type: Input
463
- }] } });
464
-
465
- class YunzaiNotifyComponent {
466
- constructor(injector, msg, y18n, nzI18n, cdr, httpClient) {
467
- this.injector = injector;
468
- this.msg = msg;
469
- this.y18n = y18n;
470
- this.nzI18n = nzI18n;
471
- this.cdr = cdr;
472
- this.httpClient = httpClient;
473
- this.data = [
474
- {
475
- key: 'msg',
476
- title: this.y18n.fanyi('notify.message'),
477
- list: [],
478
- emptyText: this.y18n.fanyi('notify.message.empty'),
479
- emptyImage: './assets/tmp/img/message.svg',
480
- clearText: this.y18n.fanyi('notify.message.clear')
481
- },
482
- {
483
- key: 'todo',
484
- title: this.y18n.fanyi('notify.todo'),
485
- list: [],
486
- emptyText: this.y18n.fanyi('notify.todo.empty'),
487
- emptyImage: './assets/tmp/img/todo.svg',
488
- clearText: this.y18n.fanyi('notify.todo.clear')
489
- },
490
- {
491
- key: 'notice',
492
- title: this.y18n.fanyi('notify.notice'),
493
- list: [],
494
- emptyText: this.y18n.fanyi('notify.notice.empty'),
495
- emptyImage: './assets/tmp/img/notice.svg',
496
- clearText: this.y18n.fanyi('notify.notice.clear')
497
- }
498
- ];
499
- this.loading = false;
500
- this.count = 0;
501
- this.subs = [];
502
- }
503
- ngOnInit() {
504
- this.loadData();
505
- }
506
- loadData() {
507
- this.count = 0;
508
- this.loading = true;
509
- this.subs.push(
510
- // @ts-ignore
511
- forkJoin(this.loadTodo(), this.loadMessage()).subscribe(() => {
512
- this.loading = false;
513
- this.cdr.detectChanges();
514
- }));
515
- }
516
- loadMessage() {
517
- log('notify.component: ', 'fetch message list');
518
- const formatMessageStatus = (status) => {
519
- switch (status) {
520
- case '0':
521
- return { extra: this.y18n.fanyi('notify.unread'), color: 'red' };
522
- case '1':
523
- return { extra: this.y18n.fanyi('notify.readed'), color: 'green' };
524
- default:
525
- return { extra: this.y18n.fanyi('notify.nostatus'), color: 'primary' };
526
- }
527
- };
528
- return this.httpClient
529
- .post(`/message-center-3/my-msg-and-todo/msg-list`, {
530
- pageNum: 1,
531
- pageSize: 10,
532
- status: '0'
533
- })
534
- .pipe(map$1((response) => {
535
- const viewMessage = this.data.filter(d => d.key === 'msg')[0];
536
- viewMessage.list = response.data.list.map((m) => {
537
- return {
538
- ...m,
539
- avatar: m?.imgUrl || './assets/tmp/img/message.png',
540
- title: m.systemName,
541
- description: m.content,
542
- extra: formatMessageStatus(m.status).extra,
543
- color: formatMessageStatus(m.status).color,
544
- datetime: formatDistanceToNow(new Date(m.date), { locale: this.nzI18n.getDateLocale() })
545
- };
546
- });
547
- this.count += viewMessage.list.length;
548
- }));
549
- }
550
- loadTodo() {
551
- log('notify.component: ', 'fetch todo list');
552
- const formatTodoStatus = (status) => {
553
- switch (status) {
554
- case '0':
555
- return { extra: this.y18n.fanyi('notify.unstart'), color: 'red' };
556
- case '1':
557
- return { extra: this.y18n.fanyi('notify.started'), color: 'green' };
558
- default:
559
- return { extra: this.y18n.fanyi('notify.nostatus'), color: 'primary' };
560
- }
561
- };
562
- return this.httpClient
563
- .post(`/message-center-3/my-msg-and-todo/todo-list`, {
564
- pageNum: 1,
565
- pageSize: 10,
566
- status: '0'
567
- })
568
- .pipe(map$1((response) => {
569
- const viewTodo = this.data.filter(d => d.key === 'todo')[0];
570
- viewTodo.list = response.data.list.map((t) => {
571
- return {
572
- ...t,
573
- avatar: t?.imgUrl || './assets/tmp/img/todo.png',
574
- title: t.systemName,
575
- description: t.content,
576
- datetime: formatDistanceToNow(new Date(t.date), { locale: this.nzI18n.getDateLocale() }),
577
- extra: formatTodoStatus(t.status).extra,
578
- color: formatTodoStatus(t.status).color
579
- };
580
- });
581
- this.count += viewTodo.list.length;
582
- }));
583
- }
584
- clear(type) {
585
- const t = this.data.filter(d => d.title === type)[0];
586
- if (t.key == 'msg' || t.key == 'notice') {
587
- this.subs.push(this.httpClient.post(`/message-center-3/my-msg-and-todo/msg-clear`, {}).subscribe(_ => {
588
- this.msg.success(`${this.y18n.fanyi('notify.clear')} ${type}`);
589
- this.loadData();
590
- }));
591
- }
592
- if (t.key == 'todo') {
593
- this.loadData();
594
- }
595
- }
596
- select(res) {
597
- this.injector.get(WINDOW).open(res.item.url);
598
- this.loadData();
599
- }
600
- ngOnDestroy() {
601
- this.subs.forEach(a => a.unsubscribe());
602
- }
603
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiNotifyComponent, deps: [{ token: i0.Injector }, { token: i1$1.NzMessageService }, { token: YUNZAI_I18N_TOKEN }, { token: i2.NzI18nService }, { token: i0.ChangeDetectorRef }, { token: i1$3._HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
604
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiNotifyComponent, selector: "yunzai-notify", ngImport: i0, template: `
605
- <notice-icon
606
- [data]="data"
607
- [count]="count"
608
- [loading]="loading"
609
- btnClass="yunzai-default__nav-item"
610
- btnIconClass="yunzai-default__nav-item-icon"
611
- (select)="select($event)"
612
- (clear)="clear($event)"
613
- />
614
- `, isInline: true, dependencies: [{ kind: "component", type: i4$3.NoticeIconComponent, selector: "notice-icon", inputs: ["data", "count", "loading", "popoverVisible", "btnClass", "btnIconClass", "centered"], outputs: ["select", "clear", "popoverVisibleChange"], exportAs: ["noticeIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
615
- }
616
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiNotifyComponent, decorators: [{
617
- type: Component,
618
- args: [{
619
- selector: 'yunzai-notify',
620
- template: `
621
- <notice-icon
622
- [data]="data"
623
- [count]="count"
624
- [loading]="loading"
625
- btnClass="yunzai-default__nav-item"
626
- btnIconClass="yunzai-default__nav-item-icon"
627
- (select)="select($event)"
628
- (clear)="clear($event)"
629
- />
630
- `,
631
- changeDetection: ChangeDetectionStrategy.OnPush
632
- }]
633
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$1.NzMessageService }, { type: YunzaiI18NService, decorators: [{
634
- type: Inject,
635
- args: [YUNZAI_I18N_TOKEN]
636
- }] }, { type: i2.NzI18nService }, { type: i0.ChangeDetectorRef }, { type: i1$3._HttpClient }] });
637
-
638
- class YunzaiThemeBtnComponent {
639
- constructor(renderer, configSrv, platform, doc, directionality, KEYS) {
640
- this.renderer = renderer;
641
- this.configSrv = configSrv;
642
- this.platform = platform;
643
- this.doc = doc;
644
- this.directionality = directionality;
645
- this.KEYS = KEYS;
646
- this.theme = 'default';
647
- this.types = [
648
- { key: 'default', text: 'theme.default', color: '#2163ff' },
649
- { key: 'compact', text: 'theme.compact', color: '#2163ff' },
650
- { key: 'dark', text: 'theme.dark', color: '#020202' },
651
- { key: 'yuhong', text: 'theme.yuhong', color: '#C04851' },
652
- { key: 'danjuhuang', text: 'theme.danjuhuang', color: '#FBA414' },
653
- { key: 'xinghuang', text: 'theme.xinghuang', color: '#F28E16' },
654
- { key: 'shilv', text: 'theme.shilv', color: '#57C3C2' },
655
- { key: 'zhulv', text: 'theme.zhulv', color: '#1BA784' },
656
- { key: 'youlan', text: 'theme.youlan', color: '#1781B5' },
657
- { key: 'dianqing', text: 'theme.dianqing', color: '#1661AB' },
658
- { key: 'shangengzi', text: 'theme.shangengzi', color: '#61649F' },
659
- { key: 'shuiniuhui', text: 'theme.shuiniuhui', color: '#2F2F35' }
660
- ];
661
- this.devTips = `When the dark.css file can't be found, you need to run it once: npm run theme`;
662
- this.deployUrl = '';
663
- this.dir = 'ltr';
664
- this.$destroy = new Subject();
665
- }
666
- ngOnInit() {
667
- this.dir = this.directionality.value;
668
- this.directionality.change?.pipe(takeUntil(this.$destroy)).subscribe((direction) => {
669
- this.dir = direction;
670
- });
671
- this.initTheme();
672
- }
673
- initTheme() {
674
- if (!this.platform.isBrowser) {
675
- return;
676
- }
677
- this.theme = localStorage.getItem(this.KEYS) || 'default';
678
- this.updateChartTheme();
679
- this.onThemeChange(this.theme);
680
- }
681
- updateChartTheme() {
682
- this.configSrv.set('chart', { theme: this.theme === 'dark' ? 'dark' : '' });
683
- }
684
- onThemeChange(theme) {
685
- if (!this.platform.isBrowser) {
686
- return;
687
- }
688
- this.theme = theme;
689
- this.renderer.setAttribute(this.doc.body, 'data-theme', theme);
690
- const dom = this.doc.getElementById(this.KEYS);
691
- if (dom) {
692
- dom.remove();
693
- }
694
- localStorage.removeItem(this.KEYS);
695
- if (theme !== 'default') {
696
- const el = this.doc.createElement('link');
697
- el.type = 'text/css';
698
- el.rel = 'stylesheet';
699
- el.id = this.KEYS;
700
- el.href = `${this.deployUrl}assets/style.${theme}.css`;
701
- localStorage.setItem(this.KEYS, theme);
702
- this.doc.body.append(el);
703
- }
704
- this.updateChartTheme();
705
- }
706
- ngOnDestroy() {
707
- this.$destroy.complete();
708
- const el = this.doc.getElementById(this.KEYS);
709
- if (el != null) {
710
- this.doc.body.removeChild(el);
711
- }
712
- }
713
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiThemeBtnComponent, deps: [{ token: i0.Renderer2 }, { token: i4.YunzaiConfigService }, { token: i3.Platform }, { token: DOCUMENT }, { token: i3$1.Directionality, optional: true }, { token: YUNZAI_THEME_BTN_KEYS }], target: i0.ɵɵFactoryTarget.Component }); }
714
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiThemeBtnComponent, selector: "yunzai-theme-btn", inputs: { types: "types", devTips: "devTips", deployUrl: "deployUrl" }, ngImport: i0, template: `
715
- <div
716
- data-event-id="_nav_theme"
717
- class="yunzai-default__nav-item"
718
- nz-dropdown
719
- [nzDropdownMenu]="iconMenu"
720
- nzTrigger="click"
721
- nzPlacement="bottomRight"
722
- >
723
- <svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
724
- <g fill-rule="evenodd">
725
- <g fill-rule="nonzero">
726
- <path
727
- d="M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z"
728
- />
729
- </g>
730
- </g>
731
- </svg>
732
- </div>
733
- <nz-dropdown-menu #iconMenu="nzDropdownMenu">
734
- <ul nz-menu>
735
- <li
736
- nz-menu-item
737
- data-event-id="_nav_theme"
738
- [attr.data-text]="theme.text | i18n"
739
- *ngFor="let theme of types"
740
- (click)="onThemeChange(theme.key)"
741
- [style]="{ color: theme.color }"
742
- >
743
- <i nz-icon nzType="bg-colors"></i>
744
- {{ theme.text | i18n }}
745
- </li>
746
- </ul>
747
- <!-- <div nz-menu class="wd-xl animated jello">-->
748
- <!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
749
- <!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
750
- <!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
751
- <!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
752
- <!-- </div>-->
753
- <!-- </div>-->
754
- <!-- </div>-->
755
- </nz-dropdown-menu>
756
- `, isInline: true, dependencies: [{ kind: "directive", type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5$1.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i5.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i5.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i1$2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
757
- }
758
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiThemeBtnComponent, decorators: [{
759
- type: Component,
760
- args: [{
761
- selector: 'yunzai-theme-btn',
762
- template: `
763
- <div
764
- data-event-id="_nav_theme"
765
- class="yunzai-default__nav-item"
766
- nz-dropdown
767
- [nzDropdownMenu]="iconMenu"
768
- nzTrigger="click"
769
- nzPlacement="bottomRight"
770
- >
771
- <svg nz-tooltip class="anticon" role="img" width="21" height="21" viewBox="0 0 21 21" fill="currentColor">
772
- <g fill-rule="evenodd">
773
- <g fill-rule="nonzero">
774
- <path
775
- d="M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z"
776
- />
777
- </g>
778
- </g>
779
- </svg>
780
- </div>
781
- <nz-dropdown-menu #iconMenu="nzDropdownMenu">
782
- <ul nz-menu>
783
- <li
784
- nz-menu-item
785
- data-event-id="_nav_theme"
786
- [attr.data-text]="theme.text | i18n"
787
- *ngFor="let theme of types"
788
- (click)="onThemeChange(theme.key)"
789
- [style]="{ color: theme.color }"
790
- >
791
- <i nz-icon nzType="bg-colors"></i>
792
- {{ theme.text | i18n }}
793
- </li>
794
- </ul>
795
- <!-- <div nz-menu class="wd-xl animated jello">-->
796
- <!-- <div nz-row [nzJustify]="'space-between'" [nzAlign]="'middle'" class="app-icons">-->
797
- <!-- <div nz-col [nzSpan]="4" *ngFor="let theme of types" (click)="onThemeChange(theme.key)">-->
798
- <!-- <i nz-icon nzType="bg-colors" class="text-white" [style]="{ backgroundColor: theme.color }"></i>-->
799
- <!-- <span [ngStyle]="{ color: theme.color }">{{ theme.text | i18n }}</span>-->
800
- <!-- </div>-->
801
- <!-- </div>-->
802
- <!-- </div>-->
803
- </nz-dropdown-menu>
804
- `,
805
- // eslint-disable-next-line prettier/prettier
806
- changeDetection: ChangeDetectionStrategy.OnPush,
807
- }]
808
- }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i4.YunzaiConfigService }, { type: i3.Platform }, { type: undefined, decorators: [{
809
- type: Inject,
810
- args: [DOCUMENT]
811
- }] }, { type: i3$1.Directionality, decorators: [{
812
- type: Optional
813
- }] }, { type: undefined, decorators: [{
814
- type: Inject,
815
- args: [YUNZAI_THEME_BTN_KEYS]
816
- }] }], propDecorators: { types: [{
817
- type: Input
818
- }], devTips: [{
819
- type: Input
820
- }], deployUrl: [{
821
- type: Input
822
- }] } });
823
-
824
- const BUSINESS_DEFAULT_CONFIG = {
825
- baseUrl: '/backstage',
826
- systemCode: 'portal',
827
- nav: {
828
- mine: true,
829
- all: true
830
- },
831
- loginForm: null,
832
- refreshTokenEnabled: true,
833
- refreshTokenType: 're-request'
834
- };
835
- function mergeBisConfig(srv) {
836
- return srv.merge('bis', BUSINESS_DEFAULT_CONFIG);
837
- }
838
-
839
- class YunzaiUserComponent {
840
- constructor(injector, msg, tokenService,
841
- // @ts-ignore
842
- configService) {
843
- this.injector = injector;
844
- this.msg = msg;
845
- this.tokenService = tokenService;
846
- this.configService = configService;
847
- this.icon = '';
848
- this.username = '';
849
- this.menus = [];
850
- this.config = mergeBisConfig(configService);
851
- }
852
- ngOnInit() {
853
- const [, getProjectInfo] = useLocalStorageProjectInfo();
854
- const [, getUser] = useLocalStorageUser();
855
- const projectInfo = getProjectInfo();
856
- const user = getUser();
857
- this.username = user.realname ? user.realname : '未命名';
858
- this.icon = user.avatarId
859
- ? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`
860
- : `./assets/tmp/img/avatar.jpg`;
861
- this.menus = projectInfo.profileList;
862
- }
863
- logout() {
864
- localStorage.clear();
865
- this.tokenService.clear();
866
- this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;
867
- }
868
- to(href) {
869
- if (href) {
870
- this.injector.get(WINDOW).open(href);
871
- }
872
- else {
873
- this.msg.error('该菜单没有配置链接!');
874
- }
875
- }
876
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiUserComponent, deps: [{ token: i0.Injector }, { token: i1$1.NzMessageService }, { token: YA_SERVICE_TOKEN }, { token: i1$4.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
877
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiUserComponent, selector: "yunzai-user", ngImport: i0, template: `
878
- <div
879
- class="yunzai-default__nav-item d-flex align-items-center px-sm"
880
- data-event-id="_nav_user"
881
- nz-dropdown
882
- nzPlacement="bottomRight"
883
- [nzDropdownMenu]="userMenu"
884
- >
885
- <div class="yz-user-name">
886
- <nz-avatar [nzSrc]="icon" nzSize="small" class="mr-sm" />
887
- {{ username }}
888
- </div>
889
- </div>
890
- <nz-dropdown-menu #userMenu="nzDropdownMenu">
891
- <div nz-menu class="width-sm">
892
- <div
893
- data-event-id="_nav_user"
894
- [attr.data-name]="m.name | i18n"
895
- nz-menu-item
896
- *ngFor="let m of menus"
897
- (click)="to(m.url)"
898
- >
899
- <i nz-icon [nzType]="m.icon" class="mr-sm"></i>
900
- {{ m.name | i18n }}
901
- </div>
902
- <li nz-menu-divider></li>
903
- <div data-event-id="_nav_user" data-name="注销登录" nz-menu-item (click)="logout()">
904
- <i nz-icon nzType="logout" class="mr-sm"></i>
905
- {{ 'logout' | i18n }}
906
- </div>
907
- </div>
908
- </nz-dropdown-menu>
909
- `, isInline: true, dependencies: [{ kind: "directive", type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i4$2.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "directive", type: i5.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i5.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: i6.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "directive", type: i1$2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
910
- }
911
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiUserComponent, decorators: [{
912
- type: Component,
913
- args: [{
914
- selector: 'yunzai-user',
915
- template: `
916
- <div
917
- class="yunzai-default__nav-item d-flex align-items-center px-sm"
918
- data-event-id="_nav_user"
919
- nz-dropdown
920
- nzPlacement="bottomRight"
921
- [nzDropdownMenu]="userMenu"
922
- >
923
- <div class="yz-user-name">
924
- <nz-avatar [nzSrc]="icon" nzSize="small" class="mr-sm" />
925
- {{ username }}
926
- </div>
927
- </div>
928
- <nz-dropdown-menu #userMenu="nzDropdownMenu">
929
- <div nz-menu class="width-sm">
930
- <div
931
- data-event-id="_nav_user"
932
- [attr.data-name]="m.name | i18n"
933
- nz-menu-item
934
- *ngFor="let m of menus"
935
- (click)="to(m.url)"
936
- >
937
- <i nz-icon [nzType]="m.icon" class="mr-sm"></i>
938
- {{ m.name | i18n }}
939
- </div>
940
- <li nz-menu-divider></li>
941
- <div data-event-id="_nav_user" data-name="注销登录" nz-menu-item (click)="logout()">
942
- <i nz-icon nzType="logout" class="mr-sm"></i>
943
- {{ 'logout' | i18n }}
944
- </div>
945
- </div>
946
- </nz-dropdown-menu>
947
- `,
948
- changeDetection: ChangeDetectionStrategy.OnPush
949
- }]
950
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$1.NzMessageService }, { type: undefined, decorators: [{
951
- type: Inject,
952
- args: [YA_SERVICE_TOKEN]
953
- }] }, { type: i1$4.YunzaiConfigService }] });
954
-
955
- class LayoutNavApplicationComponent {
956
- get showAllMenu() {
957
- if (this.bis.nav)
958
- return this.bis.nav.all;
959
- return true;
960
- }
961
- get showMineMenu() {
962
- if (this.bis.nav)
963
- return this.bis.nav.mine;
964
- return true;
965
- }
966
- constructor(i18n, http, inject,
967
- // @ts-ignore
968
- configService, win) {
969
- this.i18n = i18n;
970
- this.http = http;
971
- this.inject = inject;
972
- this.configService = configService;
973
- this.win = win;
974
- this.bis = BUSINESS_DEFAULT_CONFIG;
975
- this.$destroy = new Subject();
39
+ this.config = mergeBisConfig(inject(YunzaiConfigService));
40
+ this.http = inject(_HttpClient);
41
+ this.win = inject(WINDOW);
42
+ this.i18n = inject(YunzaiHttpI18NService);
43
+ this.destroy$ = new Subject();
976
44
  this.state = {
977
45
  active: false,
978
46
  type: 'all',
@@ -981,7 +49,16 @@ class LayoutNavApplicationComponent {
981
49
  list: [],
982
50
  search: null
983
51
  };
984
- this.bis = mergeBisConfig(configService);
52
+ }
53
+ get showAllMenu() {
54
+ if (this.config.nav)
55
+ return this.config.nav.all;
56
+ return true;
57
+ }
58
+ get showMineMenu() {
59
+ if (this.config.nav)
60
+ return this.config.nav.mine;
61
+ return true;
985
62
  }
986
63
  ngOnInit() {
987
64
  this.fetchAllTopic();
@@ -1053,21 +130,21 @@ class LayoutNavApplicationComponent {
1053
130
  appId: topic.key,
1054
131
  createDate: new Date()
1055
132
  })
1056
- .pipe(takeUntil(this.$destroy))
133
+ .pipe(takeUntil(this.destroy$))
1057
134
  .subscribe();
1058
135
  }
1059
136
  switch (topic.target) {
1060
137
  case 'href':
1061
- this.inject.get(WINDOW).location.href = topic.url;
138
+ this.win.location.href = topic.url;
1062
139
  break;
1063
140
  case 'blank':
1064
- this.inject.get(WINDOW).location.href = topic.url;
141
+ this.win.location.href = topic.url;
1065
142
  break;
1066
143
  case 'target':
1067
- this.inject.get(WINDOW).location.href = topic.url;
144
+ this.win.location.href = topic.url;
1068
145
  break;
1069
146
  default:
1070
- this.inject.get(WINDOW).location.href = topic.url;
147
+ this.win.location.href = topic.url;
1071
148
  break;
1072
149
  }
1073
150
  }
@@ -1097,11 +174,10 @@ class LayoutNavApplicationComponent {
1097
174
  }
1098
175
  }
1099
176
  ngOnDestroy() {
1100
- this.$destroy.complete();
177
+ this.destroy$.complete();
1101
178
  }
1102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayoutNavApplicationComponent, deps: [{ token: YunzaiI18NService }, { token: i1$3._HttpClient }, { token: i0.Injector }, { token: i1$4.YunzaiConfigService }, { token: WINDOW }], target: i0.ɵɵFactoryTarget.Component }); }
1103
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: LayoutNavApplicationComponent, selector: "layout-nav-application", ngImport: i0, template: `
1104
- <!-- search start-->
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: `
1105
181
  <ng-template #search>
1106
182
  <div nz-row class="yz-application-list-search">
1107
183
  <nz-input-group [nzPrefix]="prefixTemplate">
@@ -1119,99 +195,94 @@ class LayoutNavApplicationComponent {
1119
195
  </nz-input-group>
1120
196
  </div>
1121
197
  </ng-template>
1122
- <!-- search end -->
1123
198
 
1124
- <!-- right menu start -->
1125
199
  <ng-template #ld>
1126
200
  <div class="yz-application-list">
1127
201
  <ul>
1128
- <li *ngFor="let topic of state.list">
1129
- <h5>{{ topic.name | i18n }}</h5>
1130
- <a
1131
- data-event-id="_nav_item"
1132
- [attr.data-name]="nav.name | i18n"
1133
- href="javascript:;"
1134
- *ngFor="let nav of topic.children"
1135
- (click)="open(nav)"
1136
- >{{ nav.name | i18n }}</a
1137
- >
1138
- </li>
202
+ @for (topic of state.list; track topic) {
203
+ <li>
204
+ <h5>{{ topic.name | i18n }}</h5>
205
+ @for (nav of topic.children; track nav) {
206
+ <a
207
+ data-event-id="_nav_item"
208
+ [attr.data-name]="nav.name | i18n"
209
+ href="javascript:;"
210
+ (click)="open(nav)"
211
+ >{{ nav.name | i18n }}</a
212
+ >
213
+ }
214
+ </li>
215
+ }
1139
216
  </ul>
1140
217
  </div>
1141
218
  </ng-template>
1142
- <!-- right menu end -->
1143
219
 
1144
- <!-- button start-->
1145
- <div data-event-id="_nav_app" id="navBtn" class="yunzai-default__nav-item" (click)="diffChange()">{{
1146
- 'mode.nav' | i18n
1147
- }}</div>
1148
- <!-- button end-->
220
+ <div data-event-id="_nav_app" id="navBtn" class="yunzai-default__nav-item" (click)="diffChange()"
221
+ >{{ 'mode.nav' | i18n }}
222
+ </div>
1149
223
 
1150
- <!-- header start-->
1151
224
  <div class="yz-application" id="navDropdown" nz-row *ngIf="state.active">
1152
225
  <div nz-col [nzSpan]="3" class="yz-application-topic">
1153
- <div
1154
- *ngIf="showAllMenu"
1155
- data-event-id="_nav_topic"
1156
- data-name="全部应用"
1157
- class="yz-application-text"
1158
- (click)="attachNav('all')"
1159
- >{{ 'mode.nav.all' | i18n }}</div
1160
- >
1161
- <div
1162
- *ngIf="showMineMenu"
1163
- data-event-id="_nav_topic"
1164
- data-name="我的应用"
1165
- class="yz-application-text"
1166
- (click)="attachNav('mine')"
1167
- >{{ 'mode.nav.mine' | i18n }}</div
1168
- >
1169
- <div
1170
- data-event-id="_nav_topic"
1171
- [attr.data-name]="nav.name | i18n"
1172
- class="yz-application-text"
1173
- *ngFor="let nav of state.topics"
1174
- (click)="attachNav('other', nav)"
1175
- >{{ nav.name | i18n }}</div
1176
- >
1177
- </div>
1178
- <div nz-col [nzSpan]="21" [ngSwitch]="state.topic" class="yz-application-container">
1179
- <div *ngIf="state.type === 'all'">
1180
- <ng-template [ngTemplateOutlet]="search" />
1181
- <ng-template [ngTemplateOutlet]="ld" />
1182
- </div>
1183
- <div *ngIf="state.type === 'mine'">
1184
- <ng-template [ngTemplateOutlet]="search" />
1185
- <ng-template [ngTemplateOutlet]="ld" />
1186
- </div>
1187
- <div *ngIf="state.type === 'other'" class="yz-application-list">
1188
- <div class="yz-application-list-item">
1189
- <ul>
1190
- <li
1191
- data-event-id="_nav_item"
1192
- [attr.data-name]="nav.name | i18n"
1193
- *ngFor="let nav of state.list"
1194
- (click)="open(nav)"
1195
- >
1196
- <a href="javascript:;">
1197
- <h4>{{ nav.name | i18n }}</h4>
1198
- <p>{{ nav.intro | i18n }}</p>
1199
- </a>
1200
- </li>
1201
- </ul>
226
+ @if (showAllMenu) {
227
+ <div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
228
+ >{{ 'mode.nav.all' | i18n }}
1202
229
  </div>
1203
- </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
+ }
245
+ </div>
246
+ <div nz-col [nzSpan]="21" class="yz-application-container">
247
+ @switch (state.type) {
248
+ @case ('all') {
249
+ <div>
250
+ <ng-template [ngTemplateOutlet]="search" />
251
+ <ng-template [ngTemplateOutlet]="ld" />
252
+ </div>
253
+ }
254
+ @case ('mine') {
255
+ <div>
256
+ <ng-template [ngTemplateOutlet]="search" />
257
+ <ng-template [ngTemplateOutlet]="ld" />
258
+ </div>
259
+ }
260
+ @case ('other') {
261
+ <div class="yz-application-list">
262
+ <div class="yz-application-list-item">
263
+ <ul>
264
+ @for (nav of state.list; track nav) {
265
+ <li data-event-id="_nav_item" [attr.data-name]="nav.name | i18n" (click)="open(nav)">
266
+ <a href="javascript:;">
267
+ <h4>{{ nav.name | i18n }}</h4>
268
+ <p>{{ nav.intro | i18n }}</p>
269
+ </a>
270
+ </li>
271
+ }
272
+ </ul>
273
+ </div>
274
+ </div>
275
+ }
276
+ }
1204
277
  </div>
1205
278
  </div>
1206
- <!-- header end-->
1207
- `, isInline: true, dependencies: [{ kind: "directive", type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6$1.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: i6$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i7.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i7.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i7.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "directive", type: i1$2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }] }); }
279
+ `, 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 }] }); }
1208
280
  }
1209
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayoutNavApplicationComponent, decorators: [{
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiNavApplicationComponent, decorators: [{
1210
282
  type: Component,
1211
283
  args: [{
1212
- selector: `layout-nav-application`,
284
+ selector: `yunzai-layout-nav-application`,
1213
285
  template: `
1214
- <!-- search start-->
1215
286
  <ng-template #search>
1216
287
  <div nz-row class="yz-application-list-search">
1217
288
  <nz-input-group [nzPrefix]="prefixTemplate">
@@ -1229,103 +300,97 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
1229
300
  </nz-input-group>
1230
301
  </div>
1231
302
  </ng-template>
1232
- <!-- search end -->
1233
303
 
1234
- <!-- right menu start -->
1235
304
  <ng-template #ld>
1236
305
  <div class="yz-application-list">
1237
306
  <ul>
1238
- <li *ngFor="let topic of state.list">
1239
- <h5>{{ topic.name | i18n }}</h5>
1240
- <a
1241
- data-event-id="_nav_item"
1242
- [attr.data-name]="nav.name | i18n"
1243
- href="javascript:;"
1244
- *ngFor="let nav of topic.children"
1245
- (click)="open(nav)"
1246
- >{{ nav.name | i18n }}</a
1247
- >
1248
- </li>
307
+ @for (topic of state.list; track topic) {
308
+ <li>
309
+ <h5>{{ topic.name | i18n }}</h5>
310
+ @for (nav of topic.children; track nav) {
311
+ <a
312
+ data-event-id="_nav_item"
313
+ [attr.data-name]="nav.name | i18n"
314
+ href="javascript:;"
315
+ (click)="open(nav)"
316
+ >{{ nav.name | i18n }}</a
317
+ >
318
+ }
319
+ </li>
320
+ }
1249
321
  </ul>
1250
322
  </div>
1251
323
  </ng-template>
1252
- <!-- right menu end -->
1253
324
 
1254
- <!-- button start-->
1255
- <div data-event-id="_nav_app" id="navBtn" class="yunzai-default__nav-item" (click)="diffChange()">{{
1256
- 'mode.nav' | i18n
1257
- }}</div>
1258
- <!-- button end-->
325
+ <div data-event-id="_nav_app" id="navBtn" class="yunzai-default__nav-item" (click)="diffChange()"
326
+ >{{ 'mode.nav' | i18n }}
327
+ </div>
1259
328
 
1260
- <!-- header start-->
1261
329
  <div class="yz-application" id="navDropdown" nz-row *ngIf="state.active">
1262
330
  <div nz-col [nzSpan]="3" class="yz-application-topic">
1263
- <div
1264
- *ngIf="showAllMenu"
1265
- data-event-id="_nav_topic"
1266
- data-name="全部应用"
1267
- class="yz-application-text"
1268
- (click)="attachNav('all')"
1269
- >{{ 'mode.nav.all' | i18n }}</div
1270
- >
1271
- <div
1272
- *ngIf="showMineMenu"
1273
- data-event-id="_nav_topic"
1274
- data-name="我的应用"
1275
- class="yz-application-text"
1276
- (click)="attachNav('mine')"
1277
- >{{ 'mode.nav.mine' | i18n }}</div
1278
- >
1279
- <div
1280
- data-event-id="_nav_topic"
1281
- [attr.data-name]="nav.name | i18n"
1282
- class="yz-application-text"
1283
- *ngFor="let nav of state.topics"
1284
- (click)="attachNav('other', nav)"
1285
- >{{ nav.name | i18n }}</div
1286
- >
1287
- </div>
1288
- <div nz-col [nzSpan]="21" [ngSwitch]="state.topic" class="yz-application-container">
1289
- <div *ngIf="state.type === 'all'">
1290
- <ng-template [ngTemplateOutlet]="search" />
1291
- <ng-template [ngTemplateOutlet]="ld" />
1292
- </div>
1293
- <div *ngIf="state.type === 'mine'">
1294
- <ng-template [ngTemplateOutlet]="search" />
1295
- <ng-template [ngTemplateOutlet]="ld" />
1296
- </div>
1297
- <div *ngIf="state.type === 'other'" class="yz-application-list">
1298
- <div class="yz-application-list-item">
1299
- <ul>
1300
- <li
1301
- data-event-id="_nav_item"
1302
- [attr.data-name]="nav.name | i18n"
1303
- *ngFor="let nav of state.list"
1304
- (click)="open(nav)"
1305
- >
1306
- <a href="javascript:;">
1307
- <h4>{{ nav.name | i18n }}</h4>
1308
- <p>{{ nav.intro | i18n }}</p>
1309
- </a>
1310
- </li>
1311
- </ul>
331
+ @if (showAllMenu) {
332
+ <div data-event-id="_nav_topic" data-name="全部应用" class="yz-application-text" (click)="attachNav('all')"
333
+ >{{ 'mode.nav.all' | i18n }}
1312
334
  </div>
1313
- </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
+ }
350
+ </div>
351
+ <div nz-col [nzSpan]="21" class="yz-application-container">
352
+ @switch (state.type) {
353
+ @case ('all') {
354
+ <div>
355
+ <ng-template [ngTemplateOutlet]="search" />
356
+ <ng-template [ngTemplateOutlet]="ld" />
357
+ </div>
358
+ }
359
+ @case ('mine') {
360
+ <div>
361
+ <ng-template [ngTemplateOutlet]="search" />
362
+ <ng-template [ngTemplateOutlet]="ld" />
363
+ </div>
364
+ }
365
+ @case ('other') {
366
+ <div class="yz-application-list">
367
+ <div class="yz-application-list-item">
368
+ <ul>
369
+ @for (nav of state.list; track nav) {
370
+ <li data-event-id="_nav_item" [attr.data-name]="nav.name | i18n" (click)="open(nav)">
371
+ <a href="javascript:;">
372
+ <h4>{{ nav.name | i18n }}</h4>
373
+ <p>{{ nav.intro | i18n }}</p>
374
+ </a>
375
+ </li>
376
+ }
377
+ </ul>
378
+ </div>
379
+ </div>
380
+ }
381
+ }
1314
382
  </div>
1315
383
  </div>
1316
- <!-- header end-->
1317
- `
384
+ `,
385
+ standalone: true,
386
+ imports: [I18nPipe, FormsModule, NzFormModule, NzInputModule, CommonModule, NzGridModule]
1318
387
  }]
1319
- }], ctorParameters: () => [{ type: YunzaiI18NService }, { type: i1$3._HttpClient }, { type: i0.Injector }, { type: i1$4.YunzaiConfigService }, { type: undefined, decorators: [{
1320
- type: Inject,
1321
- args: [WINDOW]
1322
- }] }] });
388
+ }] });
1323
389
 
1324
- class LayoutNavGroupComponent {
1325
- constructor(inject, http) {
1326
- this.inject = inject;
1327
- this.http = http;
1328
- this.$destroy = new Subject();
390
+ class YunzaiLayoutNavGroupComponent {
391
+ constructor() {
392
+ this.http = inject(_HttpClient);
393
+ this.destroy$ = new Subject();
1329
394
  this.state = {
1330
395
  topics: []
1331
396
  };
@@ -1341,112 +406,171 @@ class LayoutNavGroupComponent {
1341
406
  appId: topic.key,
1342
407
  createDate: new Date()
1343
408
  })
1344
- .pipe(takeUntil(this.$destroy))
409
+ .pipe(takeUntil(this.destroy$))
1345
410
  .subscribe();
1346
411
  }
1347
412
  switch (topic.target) {
1348
413
  case 'href':
1349
- this.inject.get(WINDOW).location.href = topic.url;
414
+ inject(WINDOW).location.href = topic.url;
1350
415
  break;
1351
416
  case 'blank':
1352
- this.inject.get(WINDOW).location.href = topic.url;
417
+ inject(WINDOW).location.href = topic.url;
1353
418
  break;
1354
419
  case 'target':
1355
- this.inject.get(WINDOW).location.href = topic.url;
420
+ inject(WINDOW).location.href = topic.url;
1356
421
  break;
1357
422
  default:
1358
- this.inject.get(WINDOW).location.href = topic.url;
423
+ inject(WINDOW).location.href = topic.url;
1359
424
  break;
1360
425
  }
1361
426
  }
1362
427
  ngOnDestroy() {
1363
- this.$destroy.complete();
428
+ this.destroy$.complete();
1364
429
  }
1365
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayoutNavGroupComponent, deps: [{ token: i0.Injector }, { token: i1$3._HttpClient }], target: i0.ɵɵFactoryTarget.Component }); }
1366
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: LayoutNavGroupComponent, selector: "layout-nav-group", ngImport: i0, template: `
430
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutNavGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
431
+ 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: `
1367
432
  <div class="yz-application-group">
1368
433
  <nz-tabset>
1369
- <nz-tab *ngFor="let menu of state.topics" [nzTitle]="groupTitleTpl">
1370
- <ng-template #groupTitleTpl>
1371
- <a
1372
- data-event-id="_nav_topic"
1373
- [attr.data-name]="menu.name | i18n"
1374
- nz-dropdown
1375
- [nzDropdownMenu]="menuTpl"
1376
- [nzTrigger]="'click'"
1377
- [nzOverlayClassName]="'yz-application-dropdown'"
1378
- >
1379
- <i nz-icon *ngIf="menu.icon" [nzType]="menu.icon" nzTheme="outline"></i>
1380
- {{ menu.name | i18n }}
1381
- <i *ngIf="menu.children && menu.children.length > 0" nz-icon nzType="down" nzTheme="outline"></i>
1382
- </a>
1383
- <nz-dropdown-menu #menuTpl="nzDropdownMenu">
1384
- <ul nz-menu nzSelectable *ngIf="menu.children && menu.children.length > 0">
1385
- <ng-container *ngFor="let item of menu.children">
1386
- <li data-event-id="_nav_item" [attr.data-name]="item.name | i18n" nz-menu-item (click)="open(item)">
1387
- <i nz-icon *ngIf="item.icon" [nzType]="item.icon" nzTheme="outline"></i>{{ item.name | i18n }}
1388
- </li>
1389
- </ng-container>
1390
- </ul>
1391
- </nz-dropdown-menu>
1392
- </ng-template>
1393
- </nz-tab>
434
+ @for (menu of state.topics; track menu) {
435
+ <nz-tab [nzTitle]="groupTitleTpl">
436
+ <ng-template #groupTitleTpl>
437
+ <a
438
+ data-event-id="_nav_topic"
439
+ [attr.data-name]="menu.name | i18n"
440
+ nz-dropdown
441
+ [nzDropdownMenu]="menuTpl"
442
+ [nzTrigger]="'click'"
443
+ [nzOverlayClassName]="'yz-application-dropdown'"
444
+ >
445
+ @if (menu.icon) {
446
+ <i nz-icon [nzType]="menu.icon" nzTheme="outline"></i>
447
+ }
448
+ {{ menu.name | i18n }}
449
+ @if (menu.children && menu.children.length > 0) {
450
+ <i nz-icon nzType="down" nzTheme="outline"></i>
451
+ }
452
+ </a>
453
+ <nz-dropdown-menu #menuTpl="nzDropdownMenu">
454
+ @if (menu.children && menu.children.length > 0) {
455
+ <ul nz-menu nzSelectable>
456
+ @for (item of menu.children; track item) {
457
+ <ng-container>
458
+ <li
459
+ data-event-id="_nav_item"
460
+ [attr.data-name]="item.name | i18n"
461
+ nz-menu-item
462
+ (click)="open(item)"
463
+ >
464
+ @if (item.icon) {
465
+ <i nz-icon [nzType]="item.icon" nzTheme="outline"></i>{{ item.name | i18n }}
466
+ }
467
+ </li>
468
+ </ng-container>
469
+ }
470
+ </ul>
471
+ }
472
+ </nz-dropdown-menu>
473
+ </ng-template>
474
+ </nz-tab>
475
+ }
1394
476
  </nz-tabset>
1395
477
  </div>
1396
- `, isInline: true, dependencies: [{ kind: "directive", type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.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: i3$2.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i5.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "directive", type: i5.NzDropDownADirective, selector: "a[nz-dropdown]" }, { kind: "component", type: i5.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i1$2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }] }); }
478
+ `, 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"] }] }); }
1397
479
  }
1398
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayoutNavGroupComponent, decorators: [{
480
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutNavGroupComponent, decorators: [{
1399
481
  type: Component,
1400
482
  args: [{
1401
- selector: `layout-nav-group`,
483
+ selector: `yunzai-layout-nav-group`,
1402
484
  template: `
1403
485
  <div class="yz-application-group">
1404
486
  <nz-tabset>
1405
- <nz-tab *ngFor="let menu of state.topics" [nzTitle]="groupTitleTpl">
1406
- <ng-template #groupTitleTpl>
1407
- <a
1408
- data-event-id="_nav_topic"
1409
- [attr.data-name]="menu.name | i18n"
1410
- nz-dropdown
1411
- [nzDropdownMenu]="menuTpl"
1412
- [nzTrigger]="'click'"
1413
- [nzOverlayClassName]="'yz-application-dropdown'"
1414
- >
1415
- <i nz-icon *ngIf="menu.icon" [nzType]="menu.icon" nzTheme="outline"></i>
1416
- {{ menu.name | i18n }}
1417
- <i *ngIf="menu.children && menu.children.length > 0" nz-icon nzType="down" nzTheme="outline"></i>
1418
- </a>
1419
- <nz-dropdown-menu #menuTpl="nzDropdownMenu">
1420
- <ul nz-menu nzSelectable *ngIf="menu.children && menu.children.length > 0">
1421
- <ng-container *ngFor="let item of menu.children">
1422
- <li data-event-id="_nav_item" [attr.data-name]="item.name | i18n" nz-menu-item (click)="open(item)">
1423
- <i nz-icon *ngIf="item.icon" [nzType]="item.icon" nzTheme="outline"></i>{{ item.name | i18n }}
1424
- </li>
1425
- </ng-container>
1426
- </ul>
1427
- </nz-dropdown-menu>
1428
- </ng-template>
1429
- </nz-tab>
487
+ @for (menu of state.topics; track menu) {
488
+ <nz-tab [nzTitle]="groupTitleTpl">
489
+ <ng-template #groupTitleTpl>
490
+ <a
491
+ data-event-id="_nav_topic"
492
+ [attr.data-name]="menu.name | i18n"
493
+ nz-dropdown
494
+ [nzDropdownMenu]="menuTpl"
495
+ [nzTrigger]="'click'"
496
+ [nzOverlayClassName]="'yz-application-dropdown'"
497
+ >
498
+ @if (menu.icon) {
499
+ <i nz-icon [nzType]="menu.icon" nzTheme="outline"></i>
500
+ }
501
+ {{ menu.name | i18n }}
502
+ @if (menu.children && menu.children.length > 0) {
503
+ <i nz-icon nzType="down" nzTheme="outline"></i>
504
+ }
505
+ </a>
506
+ <nz-dropdown-menu #menuTpl="nzDropdownMenu">
507
+ @if (menu.children && menu.children.length > 0) {
508
+ <ul nz-menu nzSelectable>
509
+ @for (item of menu.children; track item) {
510
+ <ng-container>
511
+ <li
512
+ data-event-id="_nav_item"
513
+ [attr.data-name]="item.name | i18n"
514
+ nz-menu-item
515
+ (click)="open(item)"
516
+ >
517
+ @if (item.icon) {
518
+ <i nz-icon [nzType]="item.icon" nzTheme="outline"></i>{{ item.name | i18n }}
519
+ }
520
+ </li>
521
+ </ng-container>
522
+ }
523
+ </ul>
524
+ }
525
+ </nz-dropdown-menu>
526
+ </ng-template>
527
+ </nz-tab>
528
+ }
1430
529
  </nz-tabset>
1431
530
  </div>
1432
- `
531
+ `,
532
+ standalone: true,
533
+ imports: [NzIconModule, NzDropDownModule, I18nPipe, NzTabsModule]
1433
534
  }]
1434
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$3._HttpClient }] });
535
+ }] });
1435
536
 
1436
- class LayoutNavTileComponent {
1437
- constructor() { }
1438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayoutNavTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1439
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: LayoutNavTileComponent, selector: "layout-nav-tile", ngImport: i0, template: `<ng-template />`, isInline: true }); }
537
+ class YunzaiLayoutNavTileComponent {
538
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutNavTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
539
+ 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 }); }
1440
540
  }
1441
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: LayoutNavTileComponent, decorators: [{
541
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutNavTileComponent, decorators: [{
1442
542
  type: Component,
1443
543
  args: [{
1444
- selector: `layout-nav-tile`,
1445
- template: `<ng-template />`
544
+ selector: `yunzai-layout-nav-tile`,
545
+ template: `<ng-template />`,
546
+ standalone: true
1446
547
  }]
1447
- }], ctorParameters: () => [] });
548
+ }] });
1448
549
 
1449
550
  class YunzaiLayoutBasicComponent {
551
+ constructor() {
552
+ this.stomp = inject(StompService);
553
+ this.win = inject(WINDOW);
554
+ this.layoutDisplayService = inject(LayoutDisplayService);
555
+ this.NavType = NavType;
556
+ this.state = {
557
+ options: {
558
+ logoExpanded: `./assets/logo-full.svg`,
559
+ logoCollapsed: `./assets/logo.svg`
560
+ },
561
+ aside: {
562
+ name: '',
563
+ intro: '',
564
+ icon: ''
565
+ },
566
+ display: {
567
+ nav: true,
568
+ aside: true,
569
+ reusetab: true
570
+ },
571
+ navType: NavType.APPLICATION
572
+ };
573
+ }
1450
574
  get options() {
1451
575
  return this.state.options;
1452
576
  }
@@ -1475,36 +599,13 @@ class YunzaiLayoutBasicComponent {
1475
599
  }
1476
600
  return cascadingStyleSheet;
1477
601
  }
1478
- constructor(layoutDisplayService, stompService, win) {
1479
- this.layoutDisplayService = layoutDisplayService;
1480
- this.stompService = stompService;
1481
- this.win = win;
1482
- this.NavType = NavType;
1483
- this.state = {
1484
- options: {
1485
- logoExpanded: `./assets/logo-full.svg`,
1486
- logoCollapsed: `./assets/logo.svg`
1487
- },
1488
- aside: {
1489
- name: '',
1490
- intro: '',
1491
- icon: ''
1492
- },
1493
- display: {
1494
- nav: true,
1495
- aside: true,
1496
- reusetab: true
1497
- },
1498
- navType: NavType.APPLICATION
1499
- };
1500
- }
1501
602
  ngOnInit() {
1502
603
  this.initLogo();
1503
604
  this.initFavicon();
1504
605
  this.initNavType();
1505
606
  this.initAside();
1506
607
  this.addLayoutDisplayListener();
1507
- this.stompService.listen();
608
+ this.stomp.listen();
1508
609
  this.toIndex();
1509
610
  }
1510
611
  initFavicon() {
@@ -1554,7 +655,7 @@ class YunzaiLayoutBasicComponent {
1554
655
  toIndex() {
1555
656
  const [, getDefaultRoute] = useLocalStorageDefaultRoute();
1556
657
  const defaultRoute = getDefaultRoute();
1557
- log$1('YunzaiLayoutBasicComponent: ', `todo: the default route was ${defaultRoute}, 但是还没想好如何实现.`);
658
+ log('YunzaiLayoutBasicComponent: ', `todo: the default route was ${defaultRoute}, 但是还没想好如何实现.`);
1558
659
  }
1559
660
  onNavTypeChange(type) {
1560
661
  const [setHeaderType] = useLocalStorageHeaderType();
@@ -1572,34 +673,31 @@ class YunzaiLayoutBasicComponent {
1572
673
  this.state.display.aside = display;
1573
674
  });
1574
675
  }
1575
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutBasicComponent, deps: [{ token: i1$5.LayoutDisplayService }, { token: i2$1.StompService }, { token: WINDOW }], target: i0.ɵɵFactoryTarget.Component }); }
1576
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiLayoutBasicComponent, selector: "yz-layout-basic", ngImport: i0, template: `
676
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutBasicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
677
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: YunzaiLayoutBasicComponent, isStandalone: true, selector: "yunzai-layout-basic", ngImport: i0, template: `
1577
678
  <layout-default [options]="options" [asideUser]="asideUserTpl" [content]="displayReusetab ? contentTpl : noneTpl">
1578
- <!-- nav -->
1579
679
  <layout-default-header-item direction="left">
1580
680
  <ng-container [ngSwitch]="navType">
1581
681
  <ng-container *ngSwitchCase="NavType.APPLICATION">
1582
- <layout-nav-application />
682
+ <yunzai-layout-nav-application />
1583
683
  </ng-container>
1584
684
  <ng-container *ngSwitchCase="NavType.GROUP">
1585
- <layout-nav-group />
685
+ <yunzai-layout-nav-group />
1586
686
  </ng-container>
1587
687
  <ng-container *ngSwitchCase="NavType.TILE">
1588
- <layout-nav-tile />
688
+ <yunzai-layout-nav-tile />
1589
689
  </ng-container>
1590
690
  <ng-container *ngSwitchDefault>
1591
- <layout-nav-application />
691
+ <yunzai-layout-nav-application />
1592
692
  </ng-container>
1593
693
  </ng-container>
1594
694
  </layout-default-header-item>
1595
- <!-- nav end -->
1596
695
  <layout-default-header-item direction="right" hidden="mobile">
1597
- <yunzai-notify />
696
+ <yunzai-header-notify />
1598
697
  </layout-default-header-item>
1599
698
  <layout-default-header-item direction="right" hidden="mobile">
1600
- <yunzai-theme-btn />
699
+ <theme-btn />
1601
700
  </layout-default-header-item>
1602
- <!-- setting -->
1603
701
  <layout-default-header-item direction="right" hidden="mobile">
1604
702
  <div
1605
703
  data-event-id="_nav_settings"
@@ -1616,7 +714,6 @@ class YunzaiLayoutBasicComponent {
1616
714
  <div data-event-id="_nav_mode" nz-menu-item>
1617
715
  {{ 'mode.nav' | i18n }}
1618
716
  </div>
1619
-
1620
717
  <div
1621
718
  data-event-id="_nav_mode"
1622
719
  data-type="application"
@@ -1635,21 +732,20 @@ class YunzaiLayoutBasicComponent {
1635
732
  {{ 'mode.nav.tile' | i18n }}
1636
733
  </div>
1637
734
  <div data-event-id="_nav_fullscreen" nz-menu-item>
1638
- <yunzai-fullscreen />
735
+ <yunzai-header-fullscreen />
1639
736
  </div>
1640
737
  <div data-event-id="_nav_clearstorage" nz-menu-item>
1641
- <yunzai-clearstorage />
738
+ <yunzai-header-clear-storage />
1642
739
  </div>
1643
740
  <div data-event-id="_nav_i18n" nz-menu-item>
1644
- <yunzai-i18n />
741
+ <yunzai-header-i18n />
1645
742
  </div>
1646
743
  </div>
1647
744
  </nz-dropdown-menu>
1648
745
  </layout-default-header-item>
1649
746
  <layout-default-header-item direction="right">
1650
- <yunzai-user />
747
+ <yunzai-header-user />
1651
748
  </layout-default-header-item>
1652
- <!-- setting end -->
1653
749
  </layout-default>
1654
750
  <ng-template #asideUserTpl>
1655
751
  <div
@@ -1676,39 +772,36 @@ class YunzaiLayoutBasicComponent {
1676
772
  <router-outlet (activate)="reuseTab.activate($event)" (attach)="reuseTab.activate($event)" />
1677
773
  </ng-template>
1678
774
  <ng-template #noneTpl> <router-outlet /> </ng-template>
1679
- `, isInline: true, dependencies: [{ kind: "directive", type: i3$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i3$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i4$4.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: "component", type: i1$5.LayoutDefaultComponent, selector: "layout-default", inputs: ["options", "asideUser", "asideBottom", "nav", "content", "customError", "fetchingStrictly", "fetching"], exportAs: ["layoutDefault"] }, { kind: "component", type: i1$5.LayoutDefaultHeaderItemComponent, selector: "layout-default-header-item", inputs: ["hidden", "direction"] }, { kind: "directive", type: i1$5.LayoutDefaultHeaderItemTriggerDirective, selector: "[layout-default-header-item-trigger]" }, { kind: "directive", type: i4$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i4$2.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i4$2.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i5.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i5.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "component", type: i6.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "directive", type: i1$2.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: YunzaiClearStorageComponent, selector: "yunzai-clearstorage" }, { kind: "component", type: YunzaiFullScreenComponent, selector: "yunzai-fullscreen" }, { kind: "component", type: YunzaiI18NComponent, selector: "yunzai-i18n", inputs: ["showLangText"] }, { kind: "component", type: YunzaiNotifyComponent, selector: "yunzai-notify" }, { kind: "component", type: YunzaiThemeBtnComponent, selector: "yunzai-theme-btn", inputs: ["types", "devTips", "deployUrl"] }, { kind: "component", type: YunzaiUserComponent, selector: "yunzai-user" }, { kind: "component", type: LayoutNavApplicationComponent, selector: "layout-nav-application" }, { kind: "component", type: LayoutNavGroupComponent, selector: "layout-nav-group" }, { kind: "component", type: LayoutNavTileComponent, selector: "layout-nav-tile" }, { kind: "pipe", type: i1$3.I18nPipe, name: "i18n" }] }); }
775
+ `, 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" }] }); }
1680
776
  }
1681
777
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutBasicComponent, decorators: [{
1682
778
  type: Component,
1683
779
  args: [{
1684
- selector: `yz-layout-basic`,
780
+ selector: `yunzai-layout-basic`,
1685
781
  template: `
1686
782
  <layout-default [options]="options" [asideUser]="asideUserTpl" [content]="displayReusetab ? contentTpl : noneTpl">
1687
- <!-- nav -->
1688
783
  <layout-default-header-item direction="left">
1689
784
  <ng-container [ngSwitch]="navType">
1690
785
  <ng-container *ngSwitchCase="NavType.APPLICATION">
1691
- <layout-nav-application />
786
+ <yunzai-layout-nav-application />
1692
787
  </ng-container>
1693
788
  <ng-container *ngSwitchCase="NavType.GROUP">
1694
- <layout-nav-group />
789
+ <yunzai-layout-nav-group />
1695
790
  </ng-container>
1696
791
  <ng-container *ngSwitchCase="NavType.TILE">
1697
- <layout-nav-tile />
792
+ <yunzai-layout-nav-tile />
1698
793
  </ng-container>
1699
794
  <ng-container *ngSwitchDefault>
1700
- <layout-nav-application />
795
+ <yunzai-layout-nav-application />
1701
796
  </ng-container>
1702
797
  </ng-container>
1703
798
  </layout-default-header-item>
1704
- <!-- nav end -->
1705
799
  <layout-default-header-item direction="right" hidden="mobile">
1706
- <yunzai-notify />
800
+ <yunzai-header-notify />
1707
801
  </layout-default-header-item>
1708
802
  <layout-default-header-item direction="right" hidden="mobile">
1709
- <yunzai-theme-btn />
803
+ <theme-btn />
1710
804
  </layout-default-header-item>
1711
- <!-- setting -->
1712
805
  <layout-default-header-item direction="right" hidden="mobile">
1713
806
  <div
1714
807
  data-event-id="_nav_settings"
@@ -1725,7 +818,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
1725
818
  <div data-event-id="_nav_mode" nz-menu-item>
1726
819
  {{ 'mode.nav' | i18n }}
1727
820
  </div>
1728
-
1729
821
  <div
1730
822
  data-event-id="_nav_mode"
1731
823
  data-type="application"
@@ -1744,21 +836,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
1744
836
  {{ 'mode.nav.tile' | i18n }}
1745
837
  </div>
1746
838
  <div data-event-id="_nav_fullscreen" nz-menu-item>
1747
- <yunzai-fullscreen />
839
+ <yunzai-header-fullscreen />
1748
840
  </div>
1749
841
  <div data-event-id="_nav_clearstorage" nz-menu-item>
1750
- <yunzai-clearstorage />
842
+ <yunzai-header-clear-storage />
1751
843
  </div>
1752
844
  <div data-event-id="_nav_i18n" nz-menu-item>
1753
- <yunzai-i18n />
845
+ <yunzai-header-i18n />
1754
846
  </div>
1755
847
  </div>
1756
848
  </nz-dropdown-menu>
1757
849
  </layout-default-header-item>
1758
850
  <layout-default-header-item direction="right">
1759
- <yunzai-user />
851
+ <yunzai-header-user />
1760
852
  </layout-default-header-item>
1761
- <!-- setting end -->
1762
853
  </layout-default>
1763
854
  <ng-template #asideUserTpl>
1764
855
  <div
@@ -1785,1546 +876,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
1785
876
  <router-outlet (activate)="reuseTab.activate($event)" (attach)="reuseTab.activate($event)" />
1786
877
  </ng-template>
1787
878
  <ng-template #noneTpl> <router-outlet /> </ng-template>
1788
- `
879
+ `,
880
+ standalone: true,
881
+ imports: [
882
+ LayoutDefaultModule,
883
+ RouterModule,
884
+ ReuseTabModule,
885
+ CommonModule,
886
+ I18nPipe,
887
+ NzDropDownModule,
888
+ NzAvatarModule,
889
+ NzIconModule,
890
+ ThemeBtnModule,
891
+ YunzaiWidgetsModule,
892
+ YunzaiNavApplicationComponent,
893
+ YunzaiLayoutNavGroupComponent,
894
+ YunzaiLayoutNavTileComponent
895
+ ]
1789
896
  }]
1790
- }], ctorParameters: () => [{ type: i1$5.LayoutDisplayService }, { type: i2$1.StompService }, { type: undefined, decorators: [{
1791
- type: Inject,
1792
- args: [WINDOW]
1793
- }] }] });
1794
-
1795
- class ActGuardService {
1796
- constructor(configService, pathToRegexp, router) {
1797
- this.configService = configService;
1798
- this.pathToRegexp = pathToRegexp;
1799
- this.router = router;
1800
- this.bis = BUSINESS_DEFAULT_CONFIG;
1801
- this.menus = [];
1802
- this.links = [];
1803
- log$1('act: ');
1804
- this.bis = mergeBisConfig(this.configService);
1805
- log$1('act: config ', this.bis);
1806
- const [, getUser] = useLocalStorageUser();
1807
- const user = getUser();
1808
- log$1('act: user ', user);
1809
- // @ts-ignore
1810
- this.menus = deepCopy(user.menu || []).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
1811
- log$1('act: menus ', this.menus);
1812
- this.getAllLinks(this.menus, this.links);
1813
- log$1('act: links ', this.links);
1814
- }
1815
- process(url) {
1816
- log$1('act: can activate ', url);
1817
- if (this.preHandle(url)) {
1818
- return true;
1819
- }
1820
- log$1('act: can activate child prehandle success');
1821
- let canactivate = false;
1822
- this.links.forEach((link) => {
1823
- // path = /xxx
1824
- if (link === url.split('?')[0]) {
1825
- canactivate = true;
1826
- log$1(`act: link value ${link} equals url value ${url}`);
1827
- return;
1828
- }
1829
- // paht = /xxx/:xx
1830
- const regexp = this.pathToRegexp.stringToRegexp(link, null, null);
1831
- log$1(`act: ${link} test ${url.split('?')[0]}`);
1832
- if (regexp.test(url.split('?')[0])) {
1833
- canactivate = true;
1834
- log$1(`act: test value ${canactivate}`);
1835
- return;
1836
- }
1837
- });
1838
- if (canactivate) {
1839
- log$1(`act: test sucess`);
1840
- return true;
1841
- }
1842
- else {
1843
- log$1(`act: test error`);
1844
- this.router.navigate(['displayIndex']);
1845
- return false;
1846
- }
1847
- }
1848
- preHandle(url) {
1849
- return (url.includes('error') ||
1850
- url.includes('exception') ||
1851
- url.includes('displayIndex') ||
1852
- url === '' ||
1853
- url === null ||
1854
- url === '/' ||
1855
- url.includes('iframePage'));
1856
- }
1857
- getAllLinks(menu, links) {
1858
- menu.forEach((sider) => {
1859
- if (sider.link) {
1860
- links.push(sider.link);
1861
- }
1862
- if (sider.children && sider.children.length > 0) {
1863
- this.getAllLinks(sider.children, links);
1864
- }
1865
- });
1866
- }
1867
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ActGuardService, deps: [{ token: i1$4.YunzaiConfigService }, { token: i1$4.PathToRegexpService }, { token: i3$3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
1868
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ActGuardService, providedIn: 'root' }); }
1869
- }
1870
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: ActGuardService, decorators: [{
1871
- type: Injectable,
1872
- args: [{ providedIn: 'root' }]
1873
- }], ctorParameters: () => [{ type: i1$4.YunzaiConfigService }, { type: i1$4.PathToRegexpService }, { type: i3$3.Router }] });
1874
- const actGuardCanActive = (_, state) => inject(ActGuardService).process(state.url);
1875
- const actGuardCanActiveChild = (_, state) => inject(ActGuardService).process(state.url);
1876
-
1877
- class YunzaiAuthService {
1878
- constructor(injector) {
1879
- this.injector = injector;
1880
- this.config = mergeBisConfig(this.configService);
1881
- }
1882
- get configService() {
1883
- return this.injector.get(YunzaiConfigService);
1884
- }
1885
- get tokenService() {
1886
- return this.injector.get(YA_SERVICE_TOKEN);
1887
- }
1888
- get httpClient() {
1889
- return this.injector.get(_HttpClient);
1890
- }
1891
- askToken() {
1892
- log$1('yz.auth.service: ', 'askToken');
1893
- if (this.config.loginForm) {
1894
- return this.fetchTokenByUP();
1895
- }
1896
- else {
1897
- return this.fetchTokenByCas();
1898
- }
1899
- }
1900
- fetchTokenByUP() {
1901
- log$1('yz.auth.service: ', 'fetchTokenByUP');
1902
- return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.config.loginForm).pipe(map$1((response) => {
1903
- return response;
1904
- }));
1905
- }
1906
- fetchTokenByCas() {
1907
- log$1('yz.auth.service: ', 'fetchTokenByCas');
1908
- const uri = encodeURIComponent(this.injector.get(WINDOW).location.href);
1909
- return this.httpClient
1910
- .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true&timestamp=${new Date().getTime()}`)
1911
- .pipe(map$1((response) => {
1912
- switch (response.errcode) {
1913
- case 2000:
1914
- return response.data;
1915
- case 2001:
1916
- this.injector.get(WINDOW).location.href = response.msg;
1917
- throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
1918
- default:
1919
- if (response.data) {
1920
- console.error(response.data);
1921
- throw Error(response.data);
1922
- }
1923
- else if (response.msg) {
1924
- console.error(response.msg);
1925
- throw Error(response.msg);
1926
- }
1927
- else {
1928
- console.error('cas unknown error');
1929
- throw Error('Unknown Error: Cas auth exception!');
1930
- }
1931
- }
1932
- }));
1933
- }
1934
- login() {
1935
- log$1('yz.auth.service: ', 'login white login form->', this.config.loginForm);
1936
- return this.askToken().pipe(mergeMap(token => {
1937
- log$1('yz.auth.service: get token->', token);
1938
- this.configService.set('auth', {
1939
- token_send_key: 'Authorization',
1940
- token_send_template: `${token.token_type} \${access_token}`,
1941
- token_send_place: 'header'
1942
- });
1943
- log$1('yz.auth.service: ', 'set token');
1944
- this.tokenService.set(token);
1945
- return of(null);
1946
- }), mergeMap(() => this.cacheInit()));
1947
- }
1948
- cacheInit() {
1949
- log$1('yz.auth.service: ', 'cacheInit');
1950
- const [setTenant] = useLocalStorageTenant();
1951
- const [setUser] = useLocalStorageUser();
1952
- const [setHeader] = useLocalStorageHeader();
1953
- const [setProject] = useLocalStorageProjectInfo();
1954
- return combineLatest([
1955
- this.httpClient.get(`/auth/user`),
1956
- this.httpClient.get(`/auth/allheader/v2`),
1957
- this.httpClient.get(`/app-manager/project/info`)
1958
- ]).pipe(map$1(([user, header, project]) => {
1959
- log$1('yz.auth.service: ', 'set user');
1960
- setUser(user.principal);
1961
- log$1('yz.auth.service: ', 'set tenant');
1962
- setTenant(user.tenantId);
1963
- log$1('yz.auth.service: ', 'set header');
1964
- setHeader(header.data);
1965
- log$1('yz.auth.service: ', 'set project');
1966
- setProject(project.data);
1967
- return void 0;
1968
- }));
1969
- }
1970
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAuthService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1971
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAuthService, providedIn: 'root' }); }
1972
- }
1973
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAuthService, decorators: [{
1974
- type: Injectable,
1975
- args: [{ providedIn: 'root' }]
1976
- }], ctorParameters: () => [{ type: i0.Injector }] });
1977
-
1978
- const CODEMESSAGE = {
1979
- 200: '服务器成功返回请求的数据。',
1980
- 201: '新建或修改数据成功。',
1981
- 202: '一个请求已经进入后台排队(异步任务)。',
1982
- 204: '删除数据成功。',
1983
- 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
1984
- 401: '用户没有权限(令牌、用户名、密码错误)。',
1985
- 403: '用户得到授权,但是访问是被禁止的。',
1986
- 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
1987
- 406: '请求的格式不可得。',
1988
- 410: '请求的资源被永久删除,且不会再得到的。',
1989
- 422: '当创建一个对象时,发生一个验证错误。',
1990
- 500: '服务器发生错误,请检查服务器。',
1991
- 502: '网关错误。',
1992
- 503: '服务不可用,服务器暂时过载或维护。',
1993
- 504: '网关超时。'
1994
- };
1995
- class YunzaiDefaultInterceptor {
1996
- get notification() {
1997
- return this.injector.get(NzNotificationService);
1998
- }
1999
- get tokenSrv() {
2000
- return this.injector.get(YA_SERVICE_TOKEN);
2001
- }
2002
- get http() {
2003
- return this.injector.get(_HttpClient);
2004
- }
2005
- get config() {
2006
- return mergeBisConfig(this.injector.get(YunzaiConfigService$1));
2007
- }
2008
- goTo(url) {
2009
- setTimeout(() => this.injector.get(Router).navigateByUrl(url));
2010
- }
2011
- constructor(injector) {
2012
- this.injector = injector;
2013
- this.jump = false;
2014
- this.refreshToking = false;
2015
- this.refreshToken$ = new BehaviorSubject(null);
2016
- if (this.config.refreshTokenType === 'auth-refresh') {
2017
- console.error("can't use auth-refresh, please change yz.default.interceptor to default.interceptor!");
2018
- }
2019
- }
2020
- checkStatus(ev) {
2021
- if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {
2022
- return;
2023
- }
2024
- if (ev instanceof HttpErrorResponse && (ev.error.message || ev.error.errorMessage)) {
2025
- if (ev.error.errorMessage) {
2026
- this.notification.error(`发生了一些错误 `, ev.error.errorMessage);
2027
- }
2028
- else {
2029
- this.notification.error(`发生了一些错误 `, ev.error.message);
2030
- }
2031
- return;
2032
- }
2033
- if (ev instanceof HttpResponse && ev.body.errorMessage) {
2034
- this.notification.error(`发生了一些错误 `, ev.body.errorMessage);
2035
- return;
2036
- }
2037
- const errortext = CODEMESSAGE[ev.status] || ev.statusText;
2038
- this.notification.error(`请求错误 ${ev.status}: ${ev.url}`, errortext);
2039
- }
2040
- ToLogin() {
2041
- this.notification.error(`未登录或登录状态已过期,5秒后将跳转到登录页面。`, ``);
2042
- setTimeout(() => {
2043
- localStorage.clear();
2044
- this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;
2045
- }, 5000);
2046
- }
2047
- reAttachToken(req) {
2048
- const token = this.tokenSrv.get()?.access_token;
2049
- return req.clone({
2050
- setHeaders: {
2051
- Authorization: `Bearer ${token}`
2052
- }
2053
- });
2054
- }
2055
- refreshTokenRequest() {
2056
- const model = this.tokenSrv.get();
2057
- const form = new FormData();
2058
- form.set('refresh_token', model?.refresh_token);
2059
- form.set('grant_type', 'refresh_token');
2060
- form.set('scope', 'webapp');
2061
- log('yz.default.interceptor: use the refresh token to request a new token', model?.refresh_token);
2062
- return this.http.post(`/auth/oauth/getOrCreateToken/webapp`, form);
2063
- }
2064
- tryRefreshToken(ev, req, next) {
2065
- // 连刷新Token的请求都错了,那就是真错了
2066
- if (['/auth/oauth/getOrCreateToken/webapp'].some(url => req.url.includes(url))) {
2067
- this.ToLogin();
2068
- return throwError(() => ev);
2069
- }
2070
- // 正在刷新token,所有其他请求排队
2071
- if (this.refreshToking) {
2072
- return this.refreshToken$.pipe(filter(v => !!v), take(1), switchMap(() => next.handle(this.reAttachToken(req))));
2073
- }
2074
- //尝试调用刷新 Token
2075
- this.refreshToking = true;
2076
- this.refreshToken$.next(null);
2077
- // 处理Token
2078
- return this.refreshTokenRequest().pipe(switchMap(res => {
2079
- log('yz.default.interceptor: refresh token accessed -> ', res);
2080
- // 重新保存新 token
2081
- this.tokenSrv.set(res);
2082
- // 通知后续请求继续执行
2083
- this.refreshToking = false;
2084
- this.refreshToken$.next(res);
2085
- // 重新发起请求
2086
- return next.handle(this.reAttachToken(req));
2087
- }), catchError(err => {
2088
- this.refreshToking = false;
2089
- this.ToLogin();
2090
- return throwError(() => err);
2091
- }));
2092
- }
2093
- getAdditionalHeaders(headers) {
2094
- const res = {};
2095
- const lang = this.injector.get(YUNZAI_I18N_TOKEN).currentLang;
2096
- if (!headers?.has('Accept-Language') && lang) {
2097
- res['Accept-Language'] = lang;
2098
- }
2099
- return res;
2100
- }
2101
- handleData(ev, req, next) {
2102
- this.checkStatus(ev);
2103
- switch (ev.status) {
2104
- case 200:
2105
- return of(ev);
2106
- case 401:
2107
- log('http401: ', req.url);
2108
- if (this.config.refreshTokenEnabled && this.config.refreshTokenType === 're-request') {
2109
- const unAuthorizationReq = req.clone();
2110
- unAuthorizationReq.headers.delete('Authorization');
2111
- return this.tryRefreshToken(ev, unAuthorizationReq, next);
2112
- }
2113
- this.ToLogin();
2114
- break;
2115
- case 403:
2116
- case 404:
2117
- case 500:
2118
- if (this.jump) {
2119
- this.goTo(`/exception/${ev.status}`);
2120
- }
2121
- break;
2122
- default:
2123
- if (ev instanceof HttpErrorResponse) {
2124
- console.warn('未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起,请参考 https://ng.yunzainfo.com/docs/server 解决跨域问题', ev);
2125
- }
2126
- break;
2127
- }
2128
- if (ev instanceof HttpErrorResponse) {
2129
- return throwError(() => ev);
2130
- }
2131
- else {
2132
- return of(ev);
2133
- }
2134
- }
2135
- intercept(req, next) {
2136
- if (req.context.get(ALLOW_ANONYMOUS))
2137
- return next.handle(req);
2138
- log('yz.default.interceptor.ts: ', 'request ', req);
2139
- // 统一加前缀
2140
- let url = req.url;
2141
- if (!url.startsWith('https://') && !url.startsWith('http://')) {
2142
- url = this.config.baseUrl + url;
2143
- }
2144
- if (url.includes('.json') && url.includes('assets')) {
2145
- url = req.url;
2146
- }
2147
- // if (url.includes('i18n')) return next.handle(req);
2148
- // 加入语言头
2149
- const newReq = req.clone({ url, setHeaders: this.getAdditionalHeaders(req.headers) });
2150
- return next.handle(newReq).pipe(mergeMap(ev => {
2151
- // 允许统一对请求错误处理
2152
- if (ev instanceof HttpResponseBase) {
2153
- return this.handleData(ev, newReq, next);
2154
- }
2155
- // 若一切都正常,则后续操作
2156
- return of(ev);
2157
- }), catchError((err) => this.handleData(err, newReq, next)));
2158
- }
2159
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiDefaultInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
2160
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiDefaultInterceptor }); }
2161
- }
2162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiDefaultInterceptor, decorators: [{
2163
- type: Injectable
2164
- }], ctorParameters: () => [{ type: i0.Injector }] });
897
+ }] });
2165
898
 
2166
- const COMPONENTS = [
2167
- YunzaiClearStorageComponent,
2168
- YunzaiFullScreenComponent,
2169
- YunzaiI18NComponent,
2170
- YunzaiNotifyComponent,
2171
- YunzaiThemeBtnComponent,
2172
- YunzaiUserComponent,
2173
- YunzaiLayoutBasicComponent,
2174
- LayoutNavApplicationComponent,
2175
- LayoutNavGroupComponent,
2176
- LayoutNavTileComponent
2177
- ];
899
+ const COMPONENTS = [YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent];
2178
900
  class YunzaiLayoutModule {
2179
901
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2180
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, declarations: [YunzaiClearStorageComponent,
2181
- YunzaiFullScreenComponent,
2182
- YunzaiI18NComponent,
2183
- YunzaiNotifyComponent,
2184
- YunzaiThemeBtnComponent,
2185
- YunzaiUserComponent,
2186
- YunzaiLayoutBasicComponent,
2187
- LayoutNavApplicationComponent,
2188
- LayoutNavGroupComponent,
2189
- LayoutNavTileComponent], imports: [RouterModule,
2190
- ReuseTabModule,
2191
- LayoutDefaultModule,
2192
- CommonModule,
2193
- NzTabsModule,
2194
- NgOptimizedImage,
2195
- NzToolTipModule,
2196
- NzDropDownModule,
2197
- NzAvatarModule,
2198
- NoticeIconModule,
902
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, imports: [I18nPipe,
2199
903
  FormsModule,
2200
- NzGridModule,
2201
- YunzaiThemeModule,
904
+ NzFormModule,
2202
905
  NzInputModule,
2203
- NzIconModule], exports: [YunzaiClearStorageComponent,
2204
- YunzaiFullScreenComponent,
2205
- YunzaiI18NComponent,
2206
- YunzaiNotifyComponent,
2207
- YunzaiThemeBtnComponent,
2208
- YunzaiUserComponent,
2209
- YunzaiLayoutBasicComponent,
2210
- LayoutNavApplicationComponent,
2211
- LayoutNavGroupComponent,
2212
- LayoutNavTileComponent] }); }
2213
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, providers: [
2214
- {
2215
- provide: YUNZAI_THEME_BTN_KEYS,
2216
- useValue: 'site-theme'
2217
- }
2218
- ], imports: [RouterModule,
2219
- ReuseTabModule,
2220
- LayoutDefaultModule,
2221
906
  CommonModule,
2222
- NzTabsModule,
2223
- NzToolTipModule,
2224
- NzDropDownModule,
2225
- NzAvatarModule,
2226
- NoticeIconModule,
2227
- FormsModule,
2228
907
  NzGridModule,
2229
- YunzaiThemeModule,
908
+ NzIconModule,
909
+ NzDropDownModule,
910
+ NzTabsModule, YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent], exports: [YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent] }); }
911
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, imports: [FormsModule,
912
+ NzFormModule,
2230
913
  NzInputModule,
2231
- NzIconModule] }); }
914
+ CommonModule,
915
+ NzGridModule,
916
+ NzIconModule,
917
+ NzDropDownModule,
918
+ NzTabsModule, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent] }); }
2232
919
  }
2233
920
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, decorators: [{
2234
921
  type: NgModule,
2235
922
  args: [{
2236
923
  imports: [
2237
- RouterModule,
2238
- ReuseTabModule,
2239
- LayoutDefaultModule,
2240
- CommonModule,
2241
- NzTabsModule,
2242
- NgOptimizedImage,
2243
- NzToolTipModule,
2244
- NzDropDownModule,
2245
- NzAvatarModule,
2246
- NoticeIconModule,
924
+ I18nPipe,
2247
925
  FormsModule,
2248
- NzGridModule,
2249
- YunzaiThemeModule,
926
+ NzFormModule,
2250
927
  NzInputModule,
2251
- NzIconModule
2252
- ],
2253
- declarations: COMPONENTS,
2254
- providers: [
2255
- {
2256
- provide: YUNZAI_THEME_BTN_KEYS,
2257
- useValue: 'site-theme'
2258
- }
928
+ CommonModule,
929
+ NzGridModule,
930
+ NzIconModule,
931
+ NzDropDownModule,
932
+ NzTabsModule,
933
+ ...COMPONENTS
2259
934
  ],
2260
935
  exports: COMPONENTS
2261
936
  }]
2262
937
  }] });
2263
938
 
2264
- /*
2265
- * Automatically generated by 'ng g ng-yunzai:plugin icon'
2266
- * @see https://ng.yunzainfo.com/cli/plugin#icon
2267
- */
2268
- const ICONS = [
2269
- AccountBookTwoTone,
2270
- AccountBookFill,
2271
- AccountBookOutline,
2272
- AlertTwoTone,
2273
- AlertFill,
2274
- AlibabaOutline,
2275
- AimOutline,
2276
- AlipayCircleFill,
2277
- AlertOutline,
2278
- AlignCenterOutline,
2279
- AlipayCircleOutline,
2280
- AlipayOutline,
2281
- AlignLeftOutline,
2282
- AlignRightOutline,
2283
- AmazonOutline,
2284
- AliwangwangOutline,
2285
- AliyunOutline,
2286
- AlipaySquareFill,
2287
- AmazonCircleFill,
2288
- AndroidFill,
2289
- AliwangwangFill,
2290
- AntCloudOutline,
2291
- AmazonSquareFill,
2292
- AndroidOutline,
2293
- ApartmentOutline,
2294
- ApiTwoTone,
2295
- ApiFill,
2296
- ApiOutline,
2297
- AntDesignOutline,
2298
- AppstoreAddOutline,
2299
- AppstoreFill,
2300
- AppleOutline,
2301
- AppstoreOutline,
2302
- ArrowDownOutline,
2303
- AppleFill,
2304
- ArrowsAltOutline,
2305
- AppstoreTwoTone,
2306
- ArrowUpOutline,
2307
- AreaChartOutline,
2308
- ArrowLeftOutline,
2309
- AudioFill,
2310
- ArrowRightOutline,
2311
- AudioTwoTone,
2312
- AuditOutline,
2313
- AudioMutedOutline,
2314
- BackwardFill,
2315
- AudioOutline,
2316
- BackwardOutline,
2317
- BankFill,
2318
- BarcodeOutline,
2319
- BellFill,
2320
- BankTwoTone,
2321
- BarsOutline,
2322
- BankOutline,
2323
- BehanceCircleFill,
2324
- BehanceSquareFill,
2325
- BoldOutline,
2326
- BellOutline,
2327
- BehanceOutline,
2328
- BlockOutline,
2329
- BehanceSquareOutline,
2330
- BgColorsOutline,
2331
- BellTwoTone,
2332
- BarChartOutline,
2333
- BookTwoTone,
2334
- BookFill,
2335
- BorderOuterOutline,
2336
- BorderLeftOutline,
2337
- BorderBottomOutline,
2338
- BorderHorizontalOutline,
2339
- BorderTopOutline,
2340
- BorderOutline,
2341
- BorderInnerOutline,
2342
- BorderRightOutline,
2343
- BoxPlotOutline,
2344
- BoxPlotFill,
2345
- BoxPlotTwoTone,
2346
- BookOutline,
2347
- BorderlessTableOutline,
2348
- BorderVerticleOutline,
2349
- BuildTwoTone,
2350
- BuildOutline,
2351
- BugFill,
2352
- BugOutline,
2353
- BugTwoTone,
2354
- BulbFill,
2355
- BulbTwoTone,
2356
- BuildFill,
2357
- BulbOutline,
2358
- CalculatorFill,
2359
- CalculatorTwoTone,
2360
- CalendarFill,
2361
- CalendarOutline,
2362
- CalculatorOutline,
2363
- CalendarTwoTone,
2364
- CameraOutline,
2365
- CameraFill,
2366
- CameraTwoTone,
2367
- CarTwoTone,
2368
- CaretDownOutline,
2369
- CarOutline,
2370
- CaretLeftFill,
2371
- CarFill,
2372
- CaretRightOutline,
2373
- CaretDownFill,
2374
- CaretUpOutline,
2375
- CaretRightFill,
2376
- CarryOutFill,
2377
- CarryOutOutline,
2378
- CaretLeftOutline,
2379
- CaretUpFill,
2380
- BranchesOutline,
2381
- CarryOutTwoTone,
2382
- CheckCircleFill,
2383
- CheckCircleOutline,
2384
- CheckSquareOutline,
2385
- CheckCircleTwoTone,
2386
- CiCircleTwoTone,
2387
- CheckOutline,
2388
- CheckSquareTwoTone,
2389
- CiOutline,
2390
- CheckSquareFill,
2391
- CiTwoTone,
2392
- ChromeOutline,
2393
- ClockCircleOutline,
2394
- CiCircleOutline,
2395
- ChromeFill,
2396
- ClearOutline,
2397
- CloseCircleTwoTone,
2398
- CiCircleFill,
2399
- CloseCircleOutline,
2400
- ClockCircleFill,
2401
- CloseCircleFill,
2402
- ClockCircleTwoTone,
2403
- CloseOutline,
2404
- CloseSquareOutline,
2405
- CloseSquareFill,
2406
- CloudFill,
2407
- CloseSquareTwoTone,
2408
- CloudDownloadOutline,
2409
- CloudTwoTone,
2410
- CloudServerOutline,
2411
- CloudUploadOutline,
2412
- CloudSyncOutline,
2413
- ClusterOutline,
2414
- CodeSandboxCircleFill,
2415
- CodeFill,
2416
- CodepenCircleOutline,
2417
- CloudOutline,
2418
- CodeSandboxOutline,
2419
- CodeOutline,
2420
- CodeSandboxSquareFill,
2421
- CodeTwoTone,
2422
- CodepenSquareFill,
2423
- CodepenOutline,
2424
- CoffeeOutline,
2425
- ColumnWidthOutline,
2426
- CompressOutline,
2427
- ColumnHeightOutline,
2428
- CodepenCircleFill,
2429
- CompassTwoTone,
2430
- CommentOutline,
2431
- ContainerFill,
2432
- CompassOutline,
2433
- ConsoleSqlOutline,
2434
- ContactsOutline,
2435
- ContainerTwoTone,
2436
- ContactsFill,
2437
- ContactsTwoTone,
2438
- ContainerOutline,
2439
- ControlFill,
2440
- CopyFill,
2441
- CopyOutline,
2442
- CompassFill,
2443
- CopyTwoTone,
2444
- CopyrightOutline,
2445
- CopyrightCircleOutline,
2446
- ControlTwoTone,
2447
- ControlOutline,
2448
- CreditCardFill,
2449
- CopyrightTwoTone,
2450
- CrownFill,
2451
- CopyrightCircleFill,
2452
- CrownOutline,
2453
- CustomerServiceTwoTone,
2454
- CreditCardOutline,
2455
- CustomerServiceOutline,
2456
- DashboardTwoTone,
2457
- CrownTwoTone,
2458
- CreditCardTwoTone,
2459
- CustomerServiceFill,
2460
- DashboardFill,
2461
- DashOutline,
2462
- DatabaseOutline,
2463
- DatabaseTwoTone,
2464
- DatabaseFill,
2465
- DashboardOutline,
2466
- DeleteTwoTone,
2467
- DeleteRowOutline,
2468
- DeleteColumnOutline,
2469
- DeliveredProcedureOutline,
2470
- DeleteOutline,
2471
- CopyrightCircleTwoTone,
2472
- DesktopOutline,
2473
- DeleteFill,
2474
- DiffOutline,
2475
- DiffFill,
2476
- DeploymentUnitOutline,
2477
- DiffTwoTone,
2478
- DingtalkOutline,
2479
- DollarCircleFill,
2480
- DislikeFill,
2481
- DingtalkSquareFill,
2482
- DisconnectOutline,
2483
- DollarCircleTwoTone,
2484
- DollarOutline,
2485
- DingtalkCircleFill,
2486
- DislikeTwoTone,
2487
- DollarTwoTone,
2488
- DownCircleFill,
2489
- DislikeOutline,
2490
- DollarCircleOutline,
2491
- DoubleLeftOutline,
2492
- DownSquareFill,
2493
- DownOutline,
2494
- DownSquareOutline,
2495
- DownSquareTwoTone,
2496
- DownCircleTwoTone,
2497
- DoubleRightOutline,
2498
- DownCircleOutline,
2499
- DownloadOutline,
2500
- DotChartOutline,
2501
- DribbbleCircleFill,
2502
- DribbbleOutline,
2503
- DribbbleSquareOutline,
2504
- DropboxCircleFill,
2505
- DingdingOutline,
2506
- EditOutline,
2507
- DribbbleSquareFill,
2508
- DropboxSquareFill,
2509
- EllipsisOutline,
2510
- EnvironmentFill,
2511
- EditFill,
2512
- EnterOutline,
2513
- EuroCircleFill,
2514
- EuroTwoTone,
2515
- EuroCircleOutline,
2516
- EditTwoTone,
2517
- EuroOutline,
2518
- EnvironmentTwoTone,
2519
- ExclamationCircleFill,
2520
- ExpandAltOutline,
2521
- EuroCircleTwoTone,
2522
- ExclamationCircleTwoTone,
2523
- EnvironmentOutline,
2524
- ExperimentOutline,
2525
- ExperimentFill,
2526
- ExpandOutline,
2527
- ExceptionOutline,
2528
- ExportOutline,
2529
- ExperimentTwoTone,
2530
- ExclamationCircleOutline,
2531
- ExclamationOutline,
2532
- EyeFill,
2533
- EyeInvisibleFill,
2534
- EyeInvisibleTwoTone,
2535
- DropboxOutline,
2536
- DragOutline,
2537
- FacebookOutline,
2538
- FacebookFill,
2539
- EyeTwoTone,
2540
- EyeOutline,
2541
- FastForwardFill,
2542
- FieldBinaryOutline,
2543
- FieldNumberOutline,
2544
- FastBackwardOutline,
2545
- FileAddFill,
2546
- FastBackwardFill,
2547
- FileExcelFill,
2548
- FastForwardOutline,
2549
- FieldStringOutline,
2550
- FileDoneOutline,
2551
- FileAddTwoTone,
2552
- FileExcelTwoTone,
2553
- FileExclamationFill,
2554
- FileAddOutline,
2555
- FileExclamationOutline,
2556
- FieldTimeOutline,
2557
- FileImageTwoTone,
2558
- FileExcelOutline,
2559
- FileExclamationTwoTone,
2560
- FileImageFill,
2561
- FileGifOutline,
2562
- FileFill,
2563
- FileMarkdownTwoTone,
2564
- FileMarkdownOutline,
2565
- FallOutline,
2566
- FileImageOutline,
2567
- EyeInvisibleOutline,
2568
- FilePdfOutline,
2569
- FileSearchOutline,
2570
- FilePptTwoTone,
2571
- FilePdfTwoTone,
2572
- FileJpgOutline,
2573
- FileTextFill,
2574
- FilePptOutline,
2575
- FileSyncOutline,
2576
- FilePptFill,
2577
- FileUnknownOutline,
2578
- FileProtectOutline,
2579
- FileTextTwoTone,
2580
- FileWordFill,
2581
- FileUnknownTwoTone,
2582
- FileWordTwoTone,
2583
- FileUnknownFill,
2584
- FileTextOutline,
2585
- FileZipFill,
2586
- FilterTwoTone,
2587
- FilterFill,
2588
- FileWordOutline,
2589
- FireOutline,
2590
- FireTwoTone,
2591
- FileZipOutline,
2592
- FilterOutline,
2593
- FlagTwoTone,
2594
- FileTwoTone,
2595
- FilePdfFill,
2596
- FileOutline,
2597
- FileMarkdownFill,
2598
- FileZipTwoTone,
2599
- FlagOutline,
2600
- FolderAddTwoTone,
2601
- FolderOpenFill,
2602
- FireFill,
2603
- FlagFill,
2604
- FolderOutline,
2605
- FolderViewOutline,
2606
- FolderTwoTone,
2607
- FontColorsOutline,
2608
- FolderOpenTwoTone,
2609
- FolderFill,
2610
- ForwardOutline,
2611
- FolderOpenOutline,
2612
- ForkOutline,
2613
- ForwardFill,
2614
- FormatPainterOutline,
2615
- FormatPainterFill,
2616
- FormOutline,
2617
- FrownFill,
2618
- FrownTwoTone,
2619
- FullscreenOutline,
2620
- FontSizeOutline,
2621
- FundFill,
2622
- FunctionOutline,
2623
- FundViewOutline,
2624
- FullscreenExitOutline,
2625
- GifOutline,
2626
- FundProjectionScreenOutline,
2627
- FundTwoTone,
2628
- FolderAddFill,
2629
- FunnelPlotTwoTone,
2630
- GiftOutline,
2631
- FunnelPlotFill,
2632
- FundOutline,
2633
- FrownOutline,
2634
- GithubOutline,
2635
- GoldFill,
2636
- FolderAddOutline,
2637
- GitlabFill,
2638
- GiftFill,
2639
- GitlabOutline,
2640
- GoldTwoTone,
2641
- GoogleCircleFill,
2642
- GiftTwoTone,
2643
- GooglePlusCircleFill,
2644
- GoldOutline,
2645
- GithubFill,
2646
- GoogleOutline,
2647
- GooglePlusOutline,
2648
- GoogleSquareFill,
2649
- GoldenFill,
2650
- HddTwoTone,
2651
- GooglePlusSquareFill,
2652
- GlobalOutline,
2653
- HeartOutline,
2654
- HeartTwoTone,
2655
- GroupOutline,
2656
- HeartFill,
2657
- HeatMapOutline,
2658
- GatewayOutline,
2659
- FunnelPlotOutline,
2660
- HddFill,
2661
- HomeFill,
2662
- HighlightFill,
2663
- HomeOutline,
2664
- HistoryOutline,
2665
- HighlightOutline,
2666
- HddOutline,
2667
- HourglassFill,
2668
- HomeTwoTone,
2669
- HourglassTwoTone,
2670
- Html5Outline,
2671
- Html5Fill,
2672
- IdcardFill,
2673
- Html5TwoTone,
2674
- HourglassOutline,
2675
- IdcardTwoTone,
2676
- IdcardOutline,
2677
- IeOutline,
2678
- IeCircleFill,
2679
- IeSquareFill,
2680
- InboxOutline,
2681
- ImportOutline,
2682
- InfoCircleOutline,
2683
- InfoCircleTwoTone,
2684
- InsertRowAboveOutline,
2685
- InsertRowRightOutline,
2686
- InfoCircleFill,
2687
- InfoOutline,
2688
- InsertRowBelowOutline,
2689
- HighlightTwoTone,
2690
- InsuranceFill,
2691
- InstagramFill,
2692
- InteractionFill,
2693
- InsertRowLeftOutline,
2694
- InstagramOutline,
2695
- InteractionOutline,
2696
- ItalicOutline,
2697
- InteractionTwoTone,
2698
- LayoutOutline,
2699
- IssuesCloseOutline,
2700
- LayoutFill,
2701
- LaptopOutline,
2702
- LeftCircleFill,
2703
- LayoutTwoTone,
2704
- KeyOutline,
2705
- LeftOutline,
2706
- LeftCircleOutline,
2707
- LeftSquareOutline,
2708
- LeftSquareFill,
2709
- LeftCircleTwoTone,
2710
- LikeFill,
2711
- LeftSquareTwoTone,
2712
- LineOutline,
2713
- LikeTwoTone,
2714
- LinkedinOutline,
2715
- LineChartOutline,
2716
- LineHeightOutline,
2717
- LinkedinFill,
2718
- LinkOutline,
2719
- LikeOutline,
2720
- InsuranceOutline,
2721
- Loading3QuartersOutline,
2722
- LockFill,
2723
- InsuranceTwoTone,
2724
- MacCommandOutline,
2725
- LockTwoTone,
2726
- LoadingOutline,
2727
- MailOutline,
2728
- LoginOutline,
2729
- MedicineBoxOutline,
2730
- MailFill,
2731
- MailTwoTone,
2732
- MacCommandFill,
2733
- ManOutline,
2734
- MedicineBoxFill,
2735
- MedicineBoxTwoTone,
2736
- MediumCircleFill,
2737
- MediumOutline,
2738
- MehFill,
2739
- MediumWorkmarkOutline,
2740
- MenuFoldOutline,
2741
- MehOutline,
2742
- MediumSquareFill,
2743
- MessageTwoTone,
2744
- MehTwoTone,
2745
- MergeCellsOutline,
2746
- MinusCircleFill,
2747
- MenuOutline,
2748
- MenuUnfoldOutline,
2749
- MessageFill,
2750
- MinusCircleTwoTone,
2751
- LockOutline,
2752
- MinusOutline,
2753
- MinusCircleOutline,
2754
- LogoutOutline,
2755
- MessageOutline,
2756
- MoneyCollectFill,
2757
- MinusSquareOutline,
2758
- MinusSquareTwoTone,
2759
- MobileOutline,
2760
- MobileTwoTone,
2761
- MoneyCollectOutline,
2762
- MoreOutline,
2763
- NotificationFill,
2764
- NotificationOutline,
2765
- MoneyCollectTwoTone,
2766
- NodeIndexOutline,
2767
- NodeExpandOutline,
2768
- MonitorOutline,
2769
- OrderedListOutline,
2770
- NodeCollapseOutline,
2771
- NumberOutline,
2772
- PaperClipOutline,
2773
- NotificationTwoTone,
2774
- PauseCircleFill,
2775
- PartitionOutline,
2776
- PauseOutline,
2777
- OneToOneOutline,
2778
- PayCircleOutline,
2779
- PayCircleFill,
2780
- MinusSquareFill,
2781
- PauseCircleOutline,
2782
- PauseCircleTwoTone,
2783
- PicCenterOutline,
2784
- PicRightOutline,
2785
- PercentageOutline,
2786
- MobileFill,
2787
- PictureOutline,
2788
- PictureFill,
2789
- PhoneTwoTone,
2790
- PhoneFill,
2791
- PieChartFill,
2792
- PictureTwoTone,
2793
- PieChartOutline,
2794
- PlaySquareFill,
2795
- PlayCircleTwoTone,
2796
- PlayCircleFill,
2797
- PlusCircleFill,
2798
- PlaySquareTwoTone,
2799
- PlaySquareOutline,
2800
- PlayCircleOutline,
2801
- PieChartTwoTone,
2802
- PlusCircleOutline,
2803
- PlusSquareFill,
2804
- PoundCircleFill,
2805
- PlusSquareOutline,
2806
- PlusOutline,
2807
- PoundOutline,
2808
- PoundCircleOutline,
2809
- PlusSquareTwoTone,
2810
- PlusCircleTwoTone,
2811
- PoweroffOutline,
2812
- PoundCircleTwoTone,
2813
- PhoneOutline,
2814
- PrinterFill,
2815
- PicLeftOutline,
2816
- ProjectTwoTone,
2817
- PrinterOutline,
2818
- ProjectFill,
2819
- ProfileOutline,
2820
- ProfileTwoTone,
2821
- ProjectOutline,
2822
- PropertySafetyFill,
2823
- PullRequestOutline,
2824
- PropertySafetyOutline,
2825
- PushpinOutline,
2826
- PushpinTwoTone,
2827
- PropertySafetyTwoTone,
2828
- PushpinFill,
2829
- QqOutline,
2830
- QqCircleFill,
2831
- QrcodeOutline,
2832
- QqSquareFill,
2833
- QuestionCircleTwoTone,
2834
- QuestionCircleFill,
2835
- RadarChartOutline,
2836
- RadiusUprightOutline,
2837
- QuestionCircleOutline,
2838
- QuestionOutline,
2839
- ReadFill,
2840
- RadiusUpleftOutline,
2841
- RadiusBottomleftOutline,
2842
- RadiusSettingOutline,
2843
- RadiusBottomrightOutline,
2844
- ProfileFill,
2845
- PrinterTwoTone,
2846
- ReadOutline,
2847
- ReconciliationFill,
2848
- ReloadOutline,
2849
- ReconciliationOutline,
2850
- RedEnvelopeTwoTone,
2851
- RedditCircleFill,
2852
- RedoOutline,
2853
- RedEnvelopeFill,
2854
- RedditOutline,
2855
- RestTwoTone,
2856
- RightCircleOutline,
2857
- RestOutline,
2858
- RedditSquareFill,
2859
- RestFill,
2860
- RightCircleTwoTone,
2861
- RightOutline,
2862
- RightSquareFill,
2863
- RightCircleFill,
2864
- RightSquareOutline,
2865
- RetweetOutline,
2866
- RiseOutline,
2867
- RightSquareTwoTone,
2868
- RobotFill,
2869
- RocketOutline,
2870
- RobotOutline,
2871
- RocketTwoTone,
2872
- RocketFill,
2873
- RedEnvelopeOutline,
2874
- RollbackOutline,
2875
- RotateRightOutline,
2876
- RotateLeftOutline,
2877
- ReconciliationTwoTone,
2878
- SafetyCertificateTwoTone,
2879
- SaveOutline,
2880
- SafetyOutline,
2881
- SaveFill,
2882
- SaveTwoTone,
2883
- ScheduleFill,
2884
- SafetyCertificateOutline,
2885
- ScanOutline,
2886
- ScheduleTwoTone,
2887
- SearchOutline,
2888
- ScheduleOutline,
2889
- SecurityScanTwoTone,
2890
- SecurityScanOutline,
2891
- ScissorOutline,
2892
- SelectOutline,
2893
- SecurityScanFill,
2894
- SendOutline,
2895
- SettingOutline,
2896
- SettingTwoTone,
2897
- SettingFill,
2898
- ShareAltOutline,
2899
- ShopOutline,
2900
- ShopFill,
2901
- ShopTwoTone,
2902
- ShrinkOutline,
2903
- ShakeOutline,
2904
- ShoppingOutline,
2905
- ShoppingCartOutline,
2906
- ShoppingFill,
2907
- SisternodeOutline,
2908
- ShoppingTwoTone,
2909
- SafetyCertificateFill,
2910
- SkinOutline,
2911
- SignalFill,
2912
- SketchOutline,
2913
- SkinTwoTone,
2914
- SketchSquareFill,
2915
- SkypeFill,
2916
- SkinFill,
2917
- SlackCircleFill,
2918
- SlackSquareFill,
2919
- SlidersTwoTone,
2920
- SkypeOutline,
2921
- SlidersFill,
2922
- SlackSquareOutline,
2923
- SmallDashOutline,
2924
- SmileTwoTone,
2925
- SlidersOutline,
2926
- SnippetsFill,
2927
- SnippetsOutline,
2928
- SmileOutline,
2929
- SolutionOutline,
2930
- SlackOutline,
2931
- SnippetsTwoTone,
2932
- SoundTwoTone,
2933
- SortAscendingOutline,
2934
- SoundFill,
2935
- SortDescendingOutline,
2936
- SmileFill,
2937
- SoundOutline,
2938
- SplitCellsOutline,
2939
- SketchCircleFill,
2940
- StarOutline,
2941
- StockOutline,
2942
- StarTwoTone,
2943
- StepForwardFill,
2944
- StarFill,
2945
- StepBackwardFill,
2946
- StepForwardOutline,
2947
- StopFill,
2948
- SubnodeOutline,
2949
- SwapLeftOutline,
2950
- StopOutline,
2951
- StopTwoTone,
2952
- SwapRightOutline,
2953
- SwapOutline,
2954
- SwitcherTwoTone,
2955
- SwitcherOutline,
2956
- SyncOutline,
2957
- StrikethroughOutline,
2958
- SwitcherFill,
2959
- TagOutline,
2960
- TabletTwoTone,
2961
- TabletOutline,
2962
- TabletFill,
2963
- TableOutline,
2964
- TagsFill,
2965
- TagFill,
2966
- TagsTwoTone,
2967
- TaobaoCircleOutline,
2968
- StepBackwardOutline,
2969
- TagsOutline,
2970
- TagTwoTone,
2971
- TaobaoOutline,
2972
- ThunderboltOutline,
2973
- TaobaoSquareFill,
2974
- TeamOutline,
2975
- TaobaoCircleFill,
2976
- ThunderboltTwoTone,
2977
- ToolFill,
2978
- ThunderboltFill,
2979
- ToTopOutline,
2980
- ToolOutline,
2981
- ToolTwoTone,
2982
- TrademarkCircleFill,
2983
- TrophyFill,
2984
- TrademarkCircleTwoTone,
2985
- TransactionOutline,
2986
- TrademarkCircleOutline,
2987
- TranslationOutline,
2988
- TwitterCircleFill,
2989
- TrophyOutline,
2990
- TrademarkOutline,
2991
- TrophyTwoTone,
2992
- TwitterSquareFill,
2993
- UnlockFill,
2994
- TwitterOutline,
2995
- UnderlineOutline,
2996
- UndoOutline,
2997
- UpCircleFill,
2998
- UngroupOutline,
2999
- UnlockTwoTone,
3000
- UnlockOutline,
3001
- UpOutline,
3002
- UsbFill,
3003
- UpCircleOutline,
3004
- UnorderedListOutline,
3005
- UpCircleTwoTone,
3006
- UpSquareFill,
3007
- UpSquareOutline,
3008
- UserAddOutline,
3009
- UsbTwoTone,
3010
- UsergroupDeleteOutline,
3011
- UpSquareTwoTone,
3012
- UserOutline,
3013
- UsbOutline,
3014
- UserDeleteOutline,
3015
- UserSwitchOutline,
3016
- VerticalLeftOutline,
3017
- VerticalAlignBottomOutline,
3018
- VerifiedOutline,
3019
- UsergroupAddOutline,
3020
- UploadOutline,
3021
- VerticalAlignMiddleOutline,
3022
- VerticalAlignTopOutline,
3023
- VerticalRightOutline,
3024
- VideoCameraOutline,
3025
- VideoCameraAddOutline,
3026
- VideoCameraTwoTone,
3027
- VideoCameraFill,
3028
- WalletOutline,
3029
- WalletFill,
3030
- WarningFill,
3031
- WarningOutline,
3032
- WechatOutline,
3033
- WalletTwoTone,
3034
- WeiboCircleFill,
3035
- WarningTwoTone,
3036
- WeiboSquareFill,
3037
- WeiboOutline,
3038
- WeiboSquareOutline,
3039
- WeiboCircleOutline,
3040
- WechatFill,
3041
- WhatsAppOutline,
3042
- WifiOutline,
3043
- WomanOutline,
3044
- YoutubeFill,
3045
- YahooOutline,
3046
- WindowsFill,
3047
- WindowsOutline,
3048
- YoutubeOutline,
3049
- YuqueOutline,
3050
- ZhihuCircleFill,
3051
- YuqueFill,
3052
- ZhihuOutline,
3053
- ZhihuSquareFill,
3054
- ZoomInOutline,
3055
- ZoomOutOutline,
3056
- YahooFill
3057
- ];
3058
-
3059
- class YunzaiStartupService {
3060
- constructor(iconSrv, menuService, i18n, win, settingService, aclService, titleService, yzAuthService, configService) {
3061
- this.menuService = menuService;
3062
- this.i18n = i18n;
3063
- this.win = win;
3064
- this.settingService = settingService;
3065
- this.aclService = aclService;
3066
- this.titleService = titleService;
3067
- this.yzAuthService = yzAuthService;
3068
- this.configService = configService;
3069
- this.config = BUSINESS_DEFAULT_CONFIG;
3070
- this.config = mergeBisConfig(this.configService);
3071
- iconSrv.addIcon(...ICONS);
3072
- }
3073
- load() {
3074
- log$1('startup.service: ', 'load');
3075
- let defaultLang = this.settingService.layout.lang || this.i18n.defaultLang;
3076
- return this.yzAuthService.login().pipe(mergeMap(() => {
3077
- return this.i18n.loadLangData(defaultLang);
3078
- }), mergeMap(langData => {
3079
- log$1('startup.service: ', 'set i18n, defaultLang->', defaultLang, ' langData->', langData);
3080
- this.i18n.use(defaultLang, langData);
3081
- return of(void 0);
3082
- }), mergeMap(v => {
3083
- this.systemInit();
3084
- log$1('startup.service: preloader finish');
3085
- if (this.win && this.win.appBootstrap) {
3086
- this.win.appBootstrap();
3087
- }
3088
- return of(v);
3089
- }));
3090
- }
3091
- systemInit() {
3092
- log$1('startup.service: system init');
3093
- const [setCurrent] = useLocalStorageCurrent();
3094
- const [, getUser] = useLocalStorageUser();
3095
- const [setDefaultRoute] = useLocalStorageDefaultRoute();
3096
- const yunzaiUser = getUser();
3097
- // @ts-ignore
3098
- const yunzaiMenus = deepCopy(yunzaiUser.menu).filter(m => m.systemCode && m.systemCode === this.config.systemCode);
3099
- mapYzSideToYelonMenu(yunzaiMenus);
3100
- const currentMenu = yunzaiMenus.pop();
3101
- if (currentMenu) {
3102
- this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });
3103
- this.settingService.setUser({
3104
- name: yunzaiUser.realname,
3105
- avatar: `${this.config.baseUrl}/filecenter/file/${yunzaiUser.avatarId}` || '',
3106
- email: yunzaiUser.email
3107
- });
3108
- this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';
3109
- this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');
3110
- const abilities = [];
3111
- generateAbility([currentMenu], abilities, '');
3112
- this.aclService.attachRole(yunzaiUser?.roles
3113
- .map((role) => {
3114
- return role.roleValue;
3115
- })
3116
- .filter((a) => !!a) || []);
3117
- this.aclService.attachAbility(abilities);
3118
- this.menuService.add([currentMenu]);
3119
- setCurrent({
3120
- name: currentMenu.text,
3121
- intro: currentMenu.intro || '',
3122
- icon: currentMenu.appIconUrl || './assets/tmp/img/avatar.jpg'
3123
- });
3124
- const attributes = currentMenu.attribute;
3125
- if (attributes) {
3126
- const attr = JSON.parse(attributes);
3127
- if (attr && attr.defaultRoute) {
3128
- setDefaultRoute(attr.defaultRoute);
3129
- }
3130
- else {
3131
- setDefaultRoute('/displayIndex');
3132
- }
3133
- }
3134
- else {
3135
- setDefaultRoute('/displayIndex');
3136
- }
3137
- }
3138
- }
3139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiStartupService, deps: [{ token: i1$2.NzIconService }, { token: i1$3.MenuService }, { token: YUNZAI_I18N_TOKEN }, { token: WINDOW }, { token: i1$3.SettingsService }, { token: i3$4.ACLService }, { token: i1$3.TitleService }, { token: YunzaiAuthService }, { token: i1$4.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3140
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiStartupService }); }
3141
- }
3142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiStartupService, decorators: [{
3143
- type: Injectable
3144
- }], ctorParameters: () => [{ type: i1$2.NzIconService }, { type: i1$3.MenuService }, { type: YunzaiI18NService, decorators: [{
3145
- type: Inject,
3146
- args: [YUNZAI_I18N_TOKEN]
3147
- }] }, { type: undefined, decorators: [{
3148
- type: Inject,
3149
- args: [WINDOW]
3150
- }] }, { type: i1$3.SettingsService }, { type: i3$4.ACLService }, { type: i1$3.TitleService }, { type: YunzaiAuthService }, { type: i1$4.YunzaiConfigService }] });
3151
- function mapYzSideToYelonMenu(menus) {
3152
- menus.forEach(menu => {
3153
- if (menu.children && menu.hideChildren) {
3154
- menu.children.forEach(c => (c.hide = true));
3155
- }
3156
- menu.badgeDot = menu.badge_dot || null;
3157
- menu.badgeStatus = menu.badge_status || null;
3158
- menu.shortcutRoot = menu.shortcut_root || null;
3159
- menu.reuse = true;
3160
- if (menu.children) {
3161
- mapYzSideToYelonMenu(menu.children);
3162
- }
3163
- });
3164
- }
3165
- function generateAbility(menus, abilities, prefix) {
3166
- menus.forEach(menu => {
3167
- if (menu.link) {
3168
- prefix += menu.link;
3169
- }
3170
- else {
3171
- prefix += '';
3172
- }
3173
- if (menu.menuAuths) {
3174
- menu.menuAuths.forEach((a) => {
3175
- abilities.push(`${prefix}:${a}`);
3176
- abilities.push(a);
3177
- });
3178
- }
3179
- if (menu.children) {
3180
- generateAbility(menu.children, abilities, prefix);
3181
- }
3182
- });
3183
- }
3184
- function YunzaiStartupServiceFactory(startupService) {
3185
- return () => startupService.load();
3186
- }
3187
- //@ts-ignore
3188
- const YUNZAI_APPINIT_PROVIDES = [
3189
- YunzaiStartupService,
3190
- {
3191
- provide: APP_INITIALIZER,
3192
- useFactory: YunzaiStartupServiceFactory,
3193
- deps: [YunzaiStartupService],
3194
- multi: true
3195
- }
3196
- ];
3197
-
3198
- // 埋点转换表
3199
- const HTML_NAMES_MAPPING = {
3200
- _route_icon: '路由-图标',
3201
- _route_link: '路由-跳转',
3202
- _route_toggle: '路由-显示/隐藏',
3203
- _route_group: '路由-分组',
3204
- _route_user: '路由-用户头像',
3205
- _route_backhome: '路由-返回首页',
3206
- _nav_search: '导航-搜索',
3207
- _nav_topic: '导航-主题',
3208
- _nav_item: '导航-应用',
3209
- _nav_notify: '导航-铃铛',
3210
- _nav_msg: '导航-消息',
3211
- _nav_todo: '导航-待办',
3212
- _nav_notice: '导航-通知',
3213
- _nav_clear_msg: '导航-清空消息',
3214
- _nav_clear_todo: '导航-清空待办',
3215
- _nav_clear_notice: '导航-清空通知',
3216
- _nav_theme: '导航-主题',
3217
- _nav_settings: '导航-设置',
3218
- _nav_user: '导航-用户头像',
3219
- _nav_lang: '导航-语言',
3220
- _nav_logo: '导航-Logo',
3221
- _nav_toggle: '导航-显示/隐藏',
3222
- _nav_app: '导航-应用与服务',
3223
- _reusetab: '多标签',
3224
- _reusetab_refresh: '多标签-刷新',
3225
- _reusetab_close: '多标签-关闭',
3226
- _reusetab_closeOther: '多标签-关闭其他',
3227
- _reusetab_closeRight: '多标签-关闭右侧',
3228
- _reusetab_custom: '多标签-自定义'
3229
- };
3230
-
3231
- class YunzaiAnalysisAddonGuardService {
3232
- constructor(configService, pathToRegexp, win, tokenService) {
3233
- this.configService = configService;
3234
- this.pathToRegexp = pathToRegexp;
3235
- this.win = win;
3236
- this.tokenService = tokenService;
3237
- this.bis = BUSINESS_DEFAULT_CONFIG;
3238
- this.menus = [];
3239
- this.links = [];
3240
- this.value = {};
3241
- this.bis = mergeBisConfig(this.configService);
3242
- const [, getUser] = useLocalStorageUser();
3243
- const user = getUser();
3244
- // @ts-ignore
3245
- this.menus = deepCopy(user.menu || []).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
3246
- if (user) {
3247
- this.value = {
3248
- systemCode: this.bis.systemCode,
3249
- userid: user.id,
3250
- realname: user.realname,
3251
- usertype: user.userType,
3252
- usercode: user.userCode,
3253
- username: user.username,
3254
- account: user.username,
3255
- deptid: user.deptId,
3256
- deptname: user.deptName,
3257
- token: this.tokenService.get()?.access_token
3258
- };
3259
- }
3260
- if (this.menus && this.menus.length > 0) {
3261
- this.value['system'] = this.menus[0].text;
3262
- }
3263
- this.getAllLinks(this.menus, this.links);
3264
- }
3265
- process(url) {
3266
- let flag = false;
3267
- this.links.forEach(link => {
3268
- if (link.link === url.split('?')[0]) {
3269
- flag = true;
3270
- this.value['routename'] = link.title;
3271
- this.value['routeurl'] = link.link;
3272
- if (this.win['yunzai']) {
3273
- this.win['yunzai'].setExtra(this.value);
3274
- }
3275
- return;
3276
- }
3277
- const regexp = this.pathToRegexp.stringToRegexp(link, null, null);
3278
- if (regexp.test(url.split('?')[0])) {
3279
- flag = true;
3280
- this.value['routename'] = link.title;
3281
- this.value['routeurl'] = link.link;
3282
- if (this.win['yunzai']) {
3283
- this.win['yunzai'].setExtra(this.value);
3284
- }
3285
- return;
3286
- }
3287
- });
3288
- if (!flag) {
3289
- this.value['routename'] = url;
3290
- this.value['routeurl'] = url;
3291
- if (this.win['yunzai']) {
3292
- this.win['yunzai'].setExtra(this.value);
3293
- }
3294
- }
3295
- return true;
3296
- }
3297
- getAllLinks(menu, links) {
3298
- menu.forEach((sider) => {
3299
- if (sider.link) {
3300
- links.push({ title: sider.text ? sider.text : sider.link, link: sider.link });
3301
- }
3302
- if (sider.children && sider.children.length > 0) {
3303
- this.getAllLinks(sider.children, links);
3304
- }
3305
- });
3306
- }
3307
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAnalysisAddonGuardService, deps: [{ token: i1$4.YunzaiConfigService }, { token: i1$4.PathToRegexpService }, { token: WINDOW }, { token: YA_SERVICE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
3308
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAnalysisAddonGuardService, providedIn: 'root' }); }
3309
- }
3310
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiAnalysisAddonGuardService, decorators: [{
3311
- type: Injectable,
3312
- args: [{
3313
- providedIn: 'root'
3314
- }]
3315
- }], ctorParameters: () => [{ type: i1$4.YunzaiConfigService }, { type: i1$4.PathToRegexpService }, { type: undefined, decorators: [{
3316
- type: Inject,
3317
- args: [WINDOW]
3318
- }] }, { type: undefined, decorators: [{
3319
- type: Inject,
3320
- args: [YA_SERVICE_TOKEN]
3321
- }] }] });
3322
- const analysisAddonCanActive = (_, state) => inject(YunzaiAnalysisAddonGuardService).process(state.url);
3323
- const analysisAddonCanActiveChild = (_, state) => inject(YunzaiAnalysisAddonGuardService).process(state.url);
3324
-
3325
939
  /**
3326
940
  * Generated bundle index. Do not edit.
3327
941
  */
3328
942
 
3329
- export { ActGuardService, BUSINESS_DEFAULT_CONFIG, HTML_NAMES_MAPPING, LayoutNavApplicationComponent, LayoutNavGroupComponent, LayoutNavTileComponent, YUNZAI_APPINIT_PROVIDES, YUNZAI_LANGS, YunzaiAnalysisAddonGuardService, YunzaiAuthService, YunzaiClearStorageComponent, YunzaiDefaultInterceptor, YunzaiFullScreenComponent, YunzaiI18NComponent, YunzaiI18NService, YunzaiLayoutBasicComponent, YunzaiLayoutModule, YunzaiNotifyComponent, YunzaiStartupService, YunzaiStartupServiceFactory, YunzaiThemeBtnComponent, YunzaiUserComponent, YunzaiDefaultInterceptor as YzDefaultInterceptor, actGuardCanActive, actGuardCanActiveChild, analysisAddonCanActive, analysisAddonCanActiveChild, generateAbility, mapYzSideToYelonMenu, mergeBisConfig };
943
+ export { YunzaiLayoutBasicComponent, YunzaiLayoutModule, YunzaiLayoutNavGroupComponent, YunzaiLayoutNavTileComponent, YunzaiNavApplicationComponent };
3330
944
  //# sourceMappingURL=layout.mjs.map