@yelon/bis 15.0.0-beta.7 → 15.1.0-18de49a5

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.
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ChangeDetectionStrategy, HostListener, Injectable, Inject, Input, Optional, NgModule, APP_INITIALIZER } from '@angular/core';
3
- import { forkJoin, map, Subject, takeUntil, of, mergeMap, mergeAll, BehaviorSubject, throwError, filter, take, switchMap, catchError } from 'rxjs';
4
- import * as i1$3 from '@yelon/util';
5
- import { WINDOW, log as log$1, deepCopy, YunzaiConfigService } from '@yelon/util';
3
+ import { Subject, takeUntil, of, catchError, forkJoin, map, mergeMap, mergeAll, BehaviorSubject, throwError, filter, take, switchMap } from 'rxjs';
4
+ import * as i1$4 from '@yelon/util';
5
+ import { WINDOW, hasFavicon, setFavicon, log as log$1, deepCopy, YunzaiConfigService } from '@yelon/util';
6
6
  import * as i1$5 from '@yelon/theme/layout-default';
7
- import * as i1$4 from '@yelon/cache';
7
+ import * as i1$3 from '@yelon/cache';
8
8
  import { CacheService } from '@yelon/cache';
9
9
  import * as i3$3 from '@yelon/socket';
10
10
  import * as i4$1 from '@angular/common';
@@ -20,16 +20,25 @@ import * as i9 from 'ng-zorro-antd/avatar';
20
20
  import * as i1 from 'ng-zorro-antd/modal';
21
21
  import * as i1$1 from 'ng-zorro-antd/message';
22
22
  import * as i1$2 from '@yelon/theme';
23
- import { zh_CN as zh_CN$1, zh_TW as zh_TW$1, en_US as en_US$1, YunzaiI18nBaseService, YUNZAI_I18N_TOKEN, _HttpClient } from '@yelon/theme';
23
+ 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 } from '@yelon/theme';
24
24
  import screenfull from 'screenfull';
25
25
  import { __decorate } from 'tslib';
26
26
  import { InputBoolean } from '@yelon/util/decorator';
27
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 * as i2 from 'ng-zorro-antd/i18n';
30
+ 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';
31
+ import ngElGr from '@angular/common/locales/el';
32
+ import ngEsEs from '@angular/common/locales/es';
33
+ import ngFr from '@angular/common/locales/fr';
34
+ import ngHr from '@angular/common/locales/hr';
35
+ import ngIt from '@angular/common/locales/it';
36
+ import ngKo from '@angular/common/locales/ko';
37
+ import ngPl from '@angular/common/locales/pl';
38
+ import ngSl from '@angular/common/locales/sl';
39
+ import ngTr from '@angular/common/locales/tr';
28
40
  import ngZh from '@angular/common/locales/zh';
29
41
  import ngZhTw from '@angular/common/locales/zh-Hant';
30
- import { zhCN, zhTW, enUS } from 'date-fns/locale';
31
- import * as i2 from 'ng-zorro-antd/i18n';
32
- import { zh_CN, zh_TW, en_US } from 'ng-zorro-antd/i18n';
33
42
  import * as i3$1 from '@angular/cdk/platform';
34
43
  import * as i4 from '@yelon/util/config';
35
44
  import { YunzaiConfigService as YunzaiConfigService$1 } from '@yelon/util/config';
@@ -76,7 +85,7 @@ class YunzaiClearStorageComponent {
76
85
  YunzaiClearStorageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiClearStorageComponent, deps: [{ token: i1.NzModalService }, { token: i1$1.NzMessageService }], target: i0.ɵɵFactoryTarget.Component });
77
86
  YunzaiClearStorageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: YunzaiClearStorageComponent, selector: "yunzai-clearstorage", host: { listeners: { "click": "_click()" }, properties: { "class.d-block": "true" } }, ngImport: i0, template: `
78
87
  <i nz-icon nzType="tool"></i>
79
- {{ 'menu.clear.local.storage' | i18n }}
88
+ {{ 'storage.clear' | i18n }}
80
89
  `, isInline: true, dependencies: [{ kind: "directive", type: i3.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i8.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$2.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
81
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiClearStorageComponent, decorators: [{
82
91
  type: Component,
@@ -84,7 +93,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
84
93
  selector: 'yunzai-clearstorage',
85
94
  template: `
86
95
  <i nz-icon nzType="tool"></i>
87
- {{ 'menu.clear.local.storage' | i18n }}
96
+ {{ 'storage.clear' | i18n }}
88
97
  `,
89
98
  host: {
90
99
  '[class.d-block]': 'true'
@@ -112,7 +121,7 @@ class YunzaiFullScreenComponent {
112
121
  YunzaiFullScreenComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiFullScreenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
113
122
  YunzaiFullScreenComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: YunzaiFullScreenComponent, selector: "yunzai-fullscreen", host: { listeners: { "window:resize": "_resize()", "click": "_click()" }, properties: { "class.d-block": "true" } }, ngImport: i0, template: `
114
123
  <i nz-icon [nzType]="status ? 'fullscreen-exit' : 'fullscreen'"></i>
115
- {{ (status ? 'menu.fullscreen.exit' : 'menu.fullscreen') | i18n }}
124
+ {{ (status ? 'exitFullscreen' : 'fullscreen') | i18n }}
116
125
  `, isInline: true, dependencies: [{ kind: "directive", type: i3.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i8.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "pipe", type: i1$2.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
117
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiFullScreenComponent, decorators: [{
118
127
  type: Component,
@@ -120,7 +129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
120
129
  selector: 'yunzai-fullscreen',
121
130
  template: `
122
131
  <i nz-icon [nzType]="status ? 'fullscreen-exit' : 'fullscreen'"></i>
123
- {{ (status ? 'menu.fullscreen.exit' : 'menu.fullscreen') | i18n }}
132
+ {{ (status ? 'exitFullscreen' : 'fullscreen') | i18n }}
124
133
  `,
125
134
  host: {
126
135
  '[class.d-block]': 'true'
@@ -135,8 +144,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
135
144
  args: ['click']
136
145
  }] } });
137
146
 
138
- const DEFAULT = 'zh-CN';
139
- const LANGS = {
147
+ const BUSINESS_DEFAULT_CONFIG = {
148
+ baseUrl: '/backstage',
149
+ systemCode: 'portal',
150
+ loginForm: null,
151
+ refreshTokenEnabled: true,
152
+ refreshTokenType: 're-request'
153
+ };
154
+ function mergeBisConfig(srv) {
155
+ return srv.merge('bis', BUSINESS_DEFAULT_CONFIG);
156
+ }
157
+
158
+ const YUNZAI_LANGS = {
140
159
  'zh-CN': {
141
160
  text: '简体中文',
142
161
  ng: ngZh,
@@ -160,23 +179,100 @@ const LANGS = {
160
179
  date: enUS,
161
180
  yelon: en_US$1,
162
181
  abbr: '🇬🇧'
182
+ },
183
+ 'el-GR': {
184
+ text: 'Ελληνικά',
185
+ ng: ngElGr,
186
+ zorro: el_GR,
187
+ date: el,
188
+ yelon: el_GR$1,
189
+ abbr: '🇬🇷'
190
+ },
191
+ 'es-ES': {
192
+ text: 'Español',
193
+ ng: ngEsEs,
194
+ zorro: es_ES,
195
+ date: es,
196
+ yelon: es_ES$1,
197
+ abbr: '🇪🇸'
198
+ },
199
+ 'fr-FR': {
200
+ text: 'Français',
201
+ ng: ngFr,
202
+ zorro: fr_FR,
203
+ date: fr,
204
+ yelon: fr_FR$1,
205
+ abbr: '🇫🇷'
206
+ },
207
+ 'hr-HR': {
208
+ text: 'Hrvatski',
209
+ ng: ngHr,
210
+ zorro: hr_HR,
211
+ date: hr,
212
+ yelon: hr_HR$1,
213
+ abbr: '🇭🇷'
214
+ },
215
+ 'it-IT': {
216
+ text: 'Italiano',
217
+ ng: ngIt,
218
+ zorro: it_IT,
219
+ date: it,
220
+ yelon: it_IT$1,
221
+ abbr: '🇮🇹'
222
+ },
223
+ 'ko-KR': {
224
+ text: '한국어',
225
+ ng: ngKo,
226
+ zorro: ko_KR,
227
+ date: ko,
228
+ yelon: ko_KR$1,
229
+ abbr: '🇰🇷'
230
+ },
231
+ 'pl-PL': {
232
+ text: 'Polski',
233
+ ng: ngPl,
234
+ zorro: pl_PL,
235
+ date: pl,
236
+ yelon: pl_PL$1,
237
+ abbr: '🇵🇱'
238
+ },
239
+ 'sl-SI': {
240
+ text: 'Slovenščina',
241
+ ng: ngSl,
242
+ zorro: sl_SI,
243
+ date: sl,
244
+ yelon: sl_SI$1,
245
+ abbr: '🇸🇮'
246
+ },
247
+ 'tr-TR': {
248
+ text: 'Türkçe',
249
+ ng: ngTr,
250
+ zorro: tr_TR,
251
+ date: tr,
252
+ yelon: tr_TR$1,
253
+ abbr: '🇹🇷'
163
254
  }
164
255
  };
256
+
257
+ const DEFAULT = 'zh-CN';
165
258
  class YunzaiI18NService extends YunzaiI18nBaseService {
166
- constructor(http, settings, nzI18nService, yelonLocaleService, platform, cogSrv) {
259
+ constructor(http, settings, nzI18nService, yelonLocaleService, platform, cogSrv, cacheService) {
167
260
  super(cogSrv);
168
261
  this.http = http;
169
262
  this.settings = settings;
170
263
  this.nzI18nService = nzI18nService;
171
264
  this.yelonLocaleService = yelonLocaleService;
172
265
  this.platform = platform;
266
+ this.cacheService = cacheService;
173
267
  this._defaultLang = DEFAULT;
174
- this._langs = Object.keys(LANGS).map(code => {
175
- const item = LANGS[code];
176
- return { code, text: item.text, abbr: item.abbr };
177
- });
268
+ this.destroy$ = new Subject();
178
269
  const defaultLang = this.getDefaultLang();
179
- this._defaultLang = this._langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;
270
+ this.bis = mergeBisConfig(cogSrv);
271
+ this.getLangs()
272
+ .pipe(takeUntil(this.destroy$))
273
+ .subscribe(langs => {
274
+ this._defaultLang = langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;
275
+ });
180
276
  }
181
277
  getDefaultLang() {
182
278
  if (!this.platform.isBrowser) {
@@ -190,35 +286,70 @@ class YunzaiI18NService extends YunzaiI18nBaseService {
190
286
  return arr.length <= 1 ? res : `${arr[0]}-${arr[1].toUpperCase()}`;
191
287
  }
192
288
  loadLangData(lang) {
193
- return this.http.get(`assets/tmp/i18n/${lang}.json`);
289
+ const key = `_yz_lang_${lang}`;
290
+ if (this.cacheService.getNone(key)) {
291
+ return of(this.cacheService.get(key));
292
+ }
293
+ else {
294
+ if (ngDevMode) {
295
+ return this.http.get(`assets/tmp/i18n/${lang}.json`);
296
+ }
297
+ else {
298
+ return this.http
299
+ .get(`${this.bis.baseUrl}/i18n/api/v2/${lang}?_allow_anonymous`)
300
+ .pipe(catchError(() => this.http.get(`assets/tmp/i18n/${lang}.json`)));
301
+ }
302
+ }
194
303
  }
195
304
  use(lang, data) {
196
305
  if (this._currentLang === lang)
197
306
  return;
307
+ const key = `_yz_lang_${lang}`;
308
+ this.cacheService.set(key, data);
309
+ this.cacheService.set(this.cacheDefaultKey, lang);
198
310
  this._data = this.flatData(data, []);
199
- const item = LANGS[lang];
200
- registerLocaleData(item.ng);
201
- this.nzI18nService.setLocale(item.zorro);
202
- this.nzI18nService.setDateLocale(item.date);
203
- this.yelonLocaleService.setLocale(item.yelon);
204
- this._currentLang = lang;
205
- this._change$.next(lang);
311
+ const item = YUNZAI_LANGS[lang];
312
+ if (item) {
313
+ registerLocaleData(item.ng);
314
+ this.nzI18nService.setLocale(item.zorro);
315
+ this.nzI18nService.setDateLocale(item.date);
316
+ this.yelonLocaleService.setLocale(item.yelon);
317
+ this._currentLang = lang;
318
+ this._change$.next(lang);
319
+ }
320
+ else {
321
+ registerLocaleData(ngEn);
322
+ this.nzI18nService.setLocale(en_US);
323
+ this.nzI18nService.setDateLocale(enUS);
324
+ this.yelonLocaleService.setLocale(en_US$1);
325
+ this._currentLang = lang;
326
+ this._change$.next(lang);
327
+ }
206
328
  }
207
329
  getLangs() {
208
- return this._langs;
330
+ const langs = Object.keys(YUNZAI_LANGS).map(code => {
331
+ const item = YUNZAI_LANGS[code];
332
+ return { code, text: item.text, abbr: item.abbr, icon: undefined };
333
+ });
334
+ if (ngDevMode) {
335
+ return of(langs);
336
+ }
337
+ else {
338
+ return this.http.get(`${this.bis.baseUrl}/i18n/api/v2/list?_allow_anonymous`).pipe(catchError(() => of(langs)));
339
+ }
340
+ }
341
+ ngOnDestroy() {
342
+ this.destroy$.complete();
209
343
  }
210
344
  }
211
- YunzaiI18NService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiI18NService, deps: [{ token: i1$2._HttpClient }, { token: i1$2.SettingsService }, { token: i2.NzI18nService }, { token: i1$2.YelonLocaleService }, { token: i3$1.Platform }, { token: i4.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
345
+ YunzaiI18NService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiI18NService, deps: [{ token: i1$2._HttpClient }, { token: i1$2.SettingsService }, { token: i2.NzI18nService }, { token: i1$2.YelonLocaleService }, { token: i3$1.Platform }, { token: i4.YunzaiConfigService }, { token: i1$3.CacheService }], target: i0.ɵɵFactoryTarget.Injectable });
212
346
  YunzaiI18NService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiI18NService, providedIn: 'root' });
213
347
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiI18NService, decorators: [{
214
348
  type: Injectable,
215
349
  args: [{ providedIn: 'root' }]
216
- }], ctorParameters: function () { return [{ type: i1$2._HttpClient }, { type: i1$2.SettingsService }, { type: i2.NzI18nService }, { type: i1$2.YelonLocaleService }, { type: i3$1.Platform }, { type: i4.YunzaiConfigService }]; } });
350
+ }], ctorParameters: function () { return [{ type: i1$2._HttpClient }, { type: i1$2.SettingsService }, { type: i2.NzI18nService }, { type: i1$2.YelonLocaleService }, { type: i3$1.Platform }, { type: i4.YunzaiConfigService }, { type: i1$3.CacheService }]; } });
217
351
 
218
352
  class YunzaiI18NComponent {
219
- get langs() {
220
- return this.i18n.getLangs();
221
- }
222
353
  get curLangCode() {
223
354
  return this.settings.layout.lang;
224
355
  }
@@ -226,8 +357,16 @@ class YunzaiI18NComponent {
226
357
  this.settings = settings;
227
358
  this.i18n = i18n;
228
359
  this.doc = doc;
360
+ this.destroy$ = new Subject();
229
361
  /** Whether to display language text */
230
362
  this.showLangText = true;
363
+ this.langs = [];
364
+ this.i18n
365
+ .getLangs()
366
+ .pipe(takeUntil(this.destroy$))
367
+ .subscribe(langs => {
368
+ this.langs = langs;
369
+ });
231
370
  }
232
371
  change(lang) {
233
372
  const spinEl = this.doc.createElement('div');
@@ -240,12 +379,15 @@ class YunzaiI18NComponent {
240
379
  setTimeout(() => this.doc.location.reload());
241
380
  });
242
381
  }
382
+ ngOnDestroy() {
383
+ this.destroy$.complete();
384
+ }
243
385
  }
244
386
  YunzaiI18NComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiI18NComponent, deps: [{ token: i1$2.SettingsService }, { token: YUNZAI_I18N_TOKEN }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
245
387
  YunzaiI18NComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: YunzaiI18NComponent, selector: "yunzai-i18n", inputs: { showLangText: "showLangText" }, ngImport: i0, template: `
246
388
  <div *ngIf="showLangText" nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
247
389
  <i nz-icon nzType="global"></i>
248
- {{ 'menu.lang' | i18n }}
390
+ {{ 'lang.nav' | i18n }}
249
391
  <i nz-icon nzType="down"></i>
250
392
  </div>
251
393
  <i
@@ -264,7 +406,12 @@ YunzaiI18NComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
264
406
  [nzSelected]="item.code === curLangCode"
265
407
  (click)="change(item.code)"
266
408
  >
267
- <span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
409
+ <template *ngIf="!item.icon">
410
+ <span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
411
+ </template>
412
+ <template *ngIf="item.icon">
413
+ <img [src]="'data:image/png;base64,' + item.icon" [alt]="item.abbr" class="pr-xs" />
414
+ </template>
268
415
  {{ item.text }}
269
416
  </li>
270
417
  </ul>
@@ -280,7 +427,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
280
427
  template: `
281
428
  <div *ngIf="showLangText" nz-dropdown [nzDropdownMenu]="langMenu" nzPlacement="bottomRight">
282
429
  <i nz-icon nzType="global"></i>
283
- {{ 'menu.lang' | i18n }}
430
+ {{ 'lang.nav' | i18n }}
284
431
  <i nz-icon nzType="down"></i>
285
432
  </div>
286
433
  <i
@@ -299,7 +446,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
299
446
  [nzSelected]="item.code === curLangCode"
300
447
  (click)="change(item.code)"
301
448
  >
302
- <span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
449
+ <template *ngIf="!item.icon">
450
+ <span role="img" [attr.aria-label]="item.text" class="pr-xs">{{ item.abbr }}</span>
451
+ </template>
452
+ <template *ngIf="item.icon">
453
+ <img [src]="'data:image/png;base64,' + item.icon" [alt]="item.abbr" class="pr-xs" />
454
+ </template>
303
455
  {{ item.text }}
304
456
  </li>
305
457
  </ul>
@@ -332,25 +484,25 @@ class YunzaiNotifyComponent {
332
484
  key: 'msg',
333
485
  title: this.y18n.fanyi('notify.message'),
334
486
  list: [],
335
- emptyText: this.y18n.fanyi('notify.message.emptyText'),
487
+ emptyText: this.y18n.fanyi('notify.message.empty'),
336
488
  emptyImage: './assets/tmp/img/message.svg',
337
- clearText: this.y18n.fanyi('notify.message.clearText')
489
+ clearText: this.y18n.fanyi('notify.message.clear')
338
490
  },
339
491
  {
340
492
  key: 'todo',
341
493
  title: this.y18n.fanyi('notify.todo'),
342
494
  list: [],
343
- emptyText: this.y18n.fanyi('notify.todo.emptyText'),
495
+ emptyText: this.y18n.fanyi('notify.todo.empty'),
344
496
  emptyImage: './assets/tmp/img/todo.svg',
345
- clearText: this.y18n.fanyi('notify.todo.clearText')
497
+ clearText: this.y18n.fanyi('notify.todo.clear')
346
498
  },
347
499
  {
348
500
  key: 'notice',
349
501
  title: this.y18n.fanyi('notify.notice'),
350
502
  list: [],
351
- emptyText: this.y18n.fanyi('notify.notice.emptyText'),
503
+ emptyText: this.y18n.fanyi('notify.notice.empty'),
352
504
  emptyImage: './assets/tmp/img/notice.svg',
353
- clearText: this.y18n.fanyi('notify.notice.clearText')
505
+ clearText: this.y18n.fanyi('notify.notice.clear')
354
506
  }
355
507
  ];
356
508
  this.loading = false;
@@ -659,17 +811,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
659
811
  type: Input
660
812
  }] } });
661
813
 
662
- const BUSINESS_DEFAULT_CONFIG = {
663
- baseUrl: '/backstage',
664
- systemCode: 'portal',
665
- loginForm: null,
666
- refreshTokenEnabled: true,
667
- refreshTokenType: 're-request'
668
- };
669
- function mergeBisConfig(srv) {
670
- return srv.merge('bis', BUSINESS_DEFAULT_CONFIG);
671
- }
672
-
673
814
  class YunzaiUserComponent {
674
815
  constructor(injector, msg, tokenService,
675
816
  // @ts-ignore
@@ -707,7 +848,7 @@ class YunzaiUserComponent {
707
848
  }
708
849
  }
709
850
  }
710
- YunzaiUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiUserComponent, deps: [{ token: i0.Injector }, { token: i1$1.NzMessageService }, { token: YA_SERVICE_TOKEN }, { token: i1$3.YunzaiConfigService }, { token: i1$4.CacheService }], target: i0.ɵɵFactoryTarget.Component });
851
+ YunzaiUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiUserComponent, deps: [{ token: i0.Injector }, { token: i1$1.NzMessageService }, { token: YA_SERVICE_TOKEN }, { token: i1$4.YunzaiConfigService }, { token: i1$3.CacheService }], target: i0.ɵɵFactoryTarget.Component });
711
852
  YunzaiUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: YunzaiUserComponent, selector: "yunzai-user", ngImport: i0, template: `
712
853
  <div
713
854
  class="yunzai-default__nav-item d-flex align-items-center px-sm"
@@ -729,7 +870,7 @@ YunzaiUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
729
870
  <li nz-menu-divider></li>
730
871
  <div nz-menu-item (click)="logout()">
731
872
  <i nz-icon nzType="logout" class="mr-sm"></i>
732
- {{ 'menu.account.logout' | i18n }}
873
+ {{ 'logout' | i18n }}
733
874
  </div>
734
875
  </div>
735
876
  </nz-dropdown-menu>
@@ -759,7 +900,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
759
900
  <li nz-menu-divider></li>
760
901
  <div nz-menu-item (click)="logout()">
761
902
  <i nz-icon nzType="logout" class="mr-sm"></i>
762
- {{ 'menu.account.logout' | i18n }}
903
+ {{ 'logout' | i18n }}
763
904
  </div>
764
905
  </div>
765
906
  </nz-dropdown-menu>
@@ -770,26 +911,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
770
911
  return [{ type: i0.Injector }, { type: i1$1.NzMessageService }, { type: undefined, decorators: [{
771
912
  type: Inject,
772
913
  args: [YA_SERVICE_TOKEN]
773
- }] }, { type: i1$3.YunzaiConfigService }, { type: i1$4.CacheService }];
914
+ }] }, { type: i1$4.YunzaiConfigService }, { type: i1$3.CacheService }];
774
915
  } });
775
916
 
776
- var TopicType;
777
- (function (TopicType) {
778
- TopicType[TopicType["FULL"] = 0] = "FULL";
779
- TopicType[TopicType["OWN"] = 1] = "OWN";
780
- TopicType[TopicType["EVERY"] = 2] = "EVERY";
781
- })(TopicType || (TopicType = {}));
782
-
783
917
  class LayoutNavApplicationComponent {
784
918
  constructor(cacheService, i18n, http, inject) {
785
919
  this.cacheService = cacheService;
786
920
  this.i18n = i18n;
787
921
  this.http = http;
788
922
  this.inject = inject;
789
- this.TopicType = TopicType;
790
923
  this.state = {
791
924
  active: false,
792
- type: TopicType.FULL,
925
+ type: 'all',
793
926
  topic: undefined,
794
927
  topics: [],
795
928
  list: [],
@@ -798,18 +931,32 @@ class LayoutNavApplicationComponent {
798
931
  };
799
932
  }
800
933
  ngOnInit() {
801
- this.state.list = this.state.topics = this.cacheService.get('_yz_header', { mode: 'none' });
934
+ this.fetchAllTopic();
935
+ this.attachNav('all');
802
936
  }
803
- initTopic(type) {
804
- this.state.search = null;
805
- this.state.list = this.cacheService.get('_yz_header', { mode: 'none' });
937
+ fetchAllTopic() {
938
+ this.state.topics = this.cacheService.get('_yz_header', { mode: 'none' });
939
+ }
940
+ attachNav(type, topic) {
806
941
  this.state.type = type;
942
+ this.clearSearch();
943
+ if (type === 'all') {
944
+ this.displayAllNav();
945
+ }
946
+ if (type === 'mine') {
947
+ this.displayMineNav();
948
+ }
949
+ if (type === 'other' && topic) {
950
+ this.displayOtherNav(topic);
951
+ }
807
952
  }
808
- full() {
809
- this.initTopic(TopicType.FULL);
953
+ clearSearch() {
954
+ this.state.search = null;
955
+ }
956
+ displayAllNav() {
957
+ this.state.list = this.cacheService.get('_yz_header', { mode: 'none' });
810
958
  }
811
- own() {
812
- this.initTopic(TopicType.OWN);
959
+ displayMineNav() {
813
960
  const temp = this.cacheService.get('_yz_header', { mode: 'none' });
814
961
  this.state.list = temp
815
962
  .filter((topic) => {
@@ -822,11 +969,10 @@ class LayoutNavApplicationComponent {
822
969
  return topic.children.length > 0;
823
970
  });
824
971
  }
825
- every(e) {
826
- this.initTopic(TopicType.EVERY);
827
- this.state.topic = e;
972
+ displayOtherNav(topic) {
973
+ this.state.topic = topic;
828
974
  const temp = this.cacheService.get('_yz_header', { mode: 'none' });
829
- this.state.list = [...temp.filter(t => t.key === e.key)[0].children];
975
+ this.state.list = temp.filter(t => t.key === topic.key)[0].children;
830
976
  }
831
977
  diffChange(flag) {
832
978
  if (flag) {
@@ -888,9 +1034,9 @@ class LayoutNavApplicationComponent {
888
1034
  this.state.destroy$.complete();
889
1035
  }
890
1036
  }
891
- LayoutNavApplicationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: LayoutNavApplicationComponent, deps: [{ token: i1$4.CacheService }, { token: YunzaiI18NService }, { token: i1$2._HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
1037
+ LayoutNavApplicationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: LayoutNavApplicationComponent, deps: [{ token: i1$3.CacheService }, { token: YunzaiI18NService }, { token: i1$2._HttpClient }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
892
1038
  LayoutNavApplicationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: LayoutNavApplicationComponent, selector: "layout-nav-application", ngImport: i0, template: `
893
- <!-- template start-->
1039
+ <!-- search start-->
894
1040
  <ng-template #search>
895
1041
  <div nz-row class="yz-application-list-search">
896
1042
  <nz-input-group [nzPrefix]="prefixTemplate">
@@ -907,45 +1053,50 @@ LayoutNavApplicationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "1
907
1053
  </nz-input-group>
908
1054
  </div>
909
1055
  </ng-template>
1056
+ <!-- search end -->
1057
+
1058
+ <!-- right menu start -->
910
1059
  <ng-template #ld>
911
1060
  <div class="yz-application-list">
912
1061
  <ul>
913
- <li *ngFor="let d of state.list">
914
- <h5>{{ d.name }}</h5>
915
- <a href="javascript:;" *ngFor="let cd of d.children" (click)="open(cd)">{{ cd.name }}</a>
1062
+ <li *ngFor="let topic of state.list">
1063
+ <h5>{{ topic.name | i18n }}</h5>
1064
+ <a href="javascript:;" *ngFor="let nav of topic.children" (click)="open(nav)">{{ nav.name | i18n }}</a>
916
1065
  </li>
917
1066
  </ul>
918
1067
  </div>
919
1068
  </ng-template>
920
- <!-- template end-->
1069
+ <!-- right menu end -->
921
1070
 
922
1071
  <!-- button start-->
923
- <div class="yunzai-default__nav-item" (click)="diffChange()"> {{ 'application.button' | i18n }}</div>
1072
+ <div class="yunzai-default__nav-item" (click)="diffChange()"> {{ 'mode.nav' | i18n }}</div>
924
1073
  <!-- button end-->
925
1074
 
926
1075
  <!-- header start-->
927
1076
  <div class="yz-application" nz-row *ngIf="state.active">
928
1077
  <div nz-col [nzSpan]="3" class="yz-application-topic">
929
- <div class="yz-application-text" (click)="full()">{{ 'application.all' | i18n }}</div>
930
- <div class="yz-application-text" (click)="own()">{{ 'application.mine' | i18n }}</div>
931
- <div class="yz-application-text" *ngFor="let d of state.topics" (click)="every(d)">{{ d.name }}</div>
1078
+ <div class="yz-application-text" (click)="attachNav('all')">{{ 'mode.nav.all' | i18n }}</div>
1079
+ <div class="yz-application-text" (click)="attachNav('mine')">{{ 'mode.nav.mine' | i18n }}</div>
1080
+ <div class="yz-application-text" *ngFor="let nav of state.topics" (click)="attachNav('other', nav)">{{
1081
+ nav.name | i18n
1082
+ }}</div>
932
1083
  </div>
933
1084
  <div nz-col [nzSpan]="21" [ngSwitch]="state.topic" class="yz-application-container">
934
- <div *ngSwitchCase="TopicType.FULL">
1085
+ <div *ngIf="state.type === 'all'">
935
1086
  <ng-template [ngTemplateOutlet]="search"></ng-template>
936
1087
  <ng-template [ngTemplateOutlet]="ld"></ng-template>
937
1088
  </div>
938
- <div *ngSwitchCase="TopicType.OWN">
1089
+ <div *ngIf="state.type === 'mine'">
939
1090
  <ng-template [ngTemplateOutlet]="search"></ng-template>
940
1091
  <ng-template [ngTemplateOutlet]="ld"></ng-template>
941
1092
  </div>
942
- <div *ngSwitchCase="TopicType.EVERY" class="yz-application-list">
1093
+ <div *ngIf="state.type === 'other'" class="yz-application-list">
943
1094
  <div class="yz-application-list-item">
944
1095
  <ul>
945
- <li *ngFor="let d of state.list" (click)="open(d)">
1096
+ <li *ngFor="let nav of state.list" (click)="open(nav)">
946
1097
  <a href="javascript:;">
947
- <h4>{{ d.name }}</h4>
948
- <p>{{ d.intro }}</p>
1098
+ <h4>{{ nav.name | i18n }}</h4>
1099
+ <p>{{ nav.intro | i18n }}</p>
949
1100
  </a>
950
1101
  </li>
951
1102
  </ul>
@@ -954,13 +1105,13 @@ LayoutNavApplicationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "1
954
1105
  </div>
955
1106
  </div>
956
1107
  <!-- header end-->
957
- `, 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: i4$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i7$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: i7$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i8.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i9$1.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i9$1.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i9$1.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "pipe", type: i1$2.I18nPipe, name: "i18n" }] });
1108
+ `, 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.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i7$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: i7$1.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: i8.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "directive", type: i9$1.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzSize", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "component", type: i9$1.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch", "nzCompact"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i9$1.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "pipe", type: i1$2.I18nPipe, name: "i18n" }] });
958
1109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: LayoutNavApplicationComponent, decorators: [{
959
1110
  type: Component,
960
1111
  args: [{
961
1112
  selector: `layout-nav-application`,
962
1113
  template: `
963
- <!-- template start-->
1114
+ <!-- search start-->
964
1115
  <ng-template #search>
965
1116
  <div nz-row class="yz-application-list-search">
966
1117
  <nz-input-group [nzPrefix]="prefixTemplate">
@@ -977,45 +1128,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
977
1128
  </nz-input-group>
978
1129
  </div>
979
1130
  </ng-template>
1131
+ <!-- search end -->
1132
+
1133
+ <!-- right menu start -->
980
1134
  <ng-template #ld>
981
1135
  <div class="yz-application-list">
982
1136
  <ul>
983
- <li *ngFor="let d of state.list">
984
- <h5>{{ d.name }}</h5>
985
- <a href="javascript:;" *ngFor="let cd of d.children" (click)="open(cd)">{{ cd.name }}</a>
1137
+ <li *ngFor="let topic of state.list">
1138
+ <h5>{{ topic.name | i18n }}</h5>
1139
+ <a href="javascript:;" *ngFor="let nav of topic.children" (click)="open(nav)">{{ nav.name | i18n }}</a>
986
1140
  </li>
987
1141
  </ul>
988
1142
  </div>
989
1143
  </ng-template>
990
- <!-- template end-->
1144
+ <!-- right menu end -->
991
1145
 
992
1146
  <!-- button start-->
993
- <div class="yunzai-default__nav-item" (click)="diffChange()"> {{ 'application.button' | i18n }}</div>
1147
+ <div class="yunzai-default__nav-item" (click)="diffChange()"> {{ 'mode.nav' | i18n }}</div>
994
1148
  <!-- button end-->
995
1149
 
996
1150
  <!-- header start-->
997
1151
  <div class="yz-application" nz-row *ngIf="state.active">
998
1152
  <div nz-col [nzSpan]="3" class="yz-application-topic">
999
- <div class="yz-application-text" (click)="full()">{{ 'application.all' | i18n }}</div>
1000
- <div class="yz-application-text" (click)="own()">{{ 'application.mine' | i18n }}</div>
1001
- <div class="yz-application-text" *ngFor="let d of state.topics" (click)="every(d)">{{ d.name }}</div>
1153
+ <div class="yz-application-text" (click)="attachNav('all')">{{ 'mode.nav.all' | i18n }}</div>
1154
+ <div class="yz-application-text" (click)="attachNav('mine')">{{ 'mode.nav.mine' | i18n }}</div>
1155
+ <div class="yz-application-text" *ngFor="let nav of state.topics" (click)="attachNav('other', nav)">{{
1156
+ nav.name | i18n
1157
+ }}</div>
1002
1158
  </div>
1003
1159
  <div nz-col [nzSpan]="21" [ngSwitch]="state.topic" class="yz-application-container">
1004
- <div *ngSwitchCase="TopicType.FULL">
1160
+ <div *ngIf="state.type === 'all'">
1005
1161
  <ng-template [ngTemplateOutlet]="search"></ng-template>
1006
1162
  <ng-template [ngTemplateOutlet]="ld"></ng-template>
1007
1163
  </div>
1008
- <div *ngSwitchCase="TopicType.OWN">
1164
+ <div *ngIf="state.type === 'mine'">
1009
1165
  <ng-template [ngTemplateOutlet]="search"></ng-template>
1010
1166
  <ng-template [ngTemplateOutlet]="ld"></ng-template>
1011
1167
  </div>
1012
- <div *ngSwitchCase="TopicType.EVERY" class="yz-application-list">
1168
+ <div *ngIf="state.type === 'other'" class="yz-application-list">
1013
1169
  <div class="yz-application-list-item">
1014
1170
  <ul>
1015
- <li *ngFor="let d of state.list" (click)="open(d)">
1171
+ <li *ngFor="let nav of state.list" (click)="open(nav)">
1016
1172
  <a href="javascript:;">
1017
- <h4>{{ d.name }}</h4>
1018
- <p>{{ d.intro }}</p>
1173
+ <h4>{{ nav.name | i18n }}</h4>
1174
+ <p>{{ nav.intro | i18n }}</p>
1019
1175
  </a>
1020
1176
  </li>
1021
1177
  </ul>
@@ -1026,7 +1182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
1026
1182
  <!-- header end-->
1027
1183
  `
1028
1184
  }]
1029
- }], ctorParameters: function () { return [{ type: i1$4.CacheService }, { type: YunzaiI18NService }, { type: i1$2._HttpClient }, { type: i0.Injector }]; } });
1185
+ }], ctorParameters: function () { return [{ type: i1$3.CacheService }, { type: YunzaiI18NService }, { type: i1$2._HttpClient }, { type: i0.Injector }]; } });
1030
1186
 
1031
1187
  class LayoutNavGroupComponent {
1032
1188
  constructor(inject, cacheService, http) {
@@ -1070,7 +1226,7 @@ class LayoutNavGroupComponent {
1070
1226
  this.state.destroy$.complete();
1071
1227
  }
1072
1228
  }
1073
- LayoutNavGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: LayoutNavGroupComponent, deps: [{ token: i0.Injector }, { token: i1$4.CacheService }, { token: i1$2._HttpClient }], target: i0.ɵɵFactoryTarget.Component });
1229
+ LayoutNavGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: LayoutNavGroupComponent, deps: [{ token: i0.Injector }, { token: i1$3.CacheService }, { token: i1$2._HttpClient }], target: i0.ɵɵFactoryTarget.Component });
1074
1230
  LayoutNavGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: LayoutNavGroupComponent, selector: "layout-nav-group", ngImport: i0, template: `
1075
1231
  <div class="yz-application-group">
1076
1232
  <nz-tabset>
@@ -1134,7 +1290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
1134
1290
  </div>
1135
1291
  `
1136
1292
  }]
1137
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$4.CacheService }, { type: i1$2._HttpClient }]; } });
1293
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$3.CacheService }, { type: i1$2._HttpClient }]; } });
1138
1294
 
1139
1295
  class LayoutNavTileComponent {
1140
1296
  constructor() { }
@@ -1199,12 +1355,27 @@ class YunzaiLayoutBasicComponent {
1199
1355
  }
1200
1356
  ngOnInit() {
1201
1357
  this.initLogo();
1358
+ this.initFavicon();
1202
1359
  this.initNavType();
1203
1360
  this.initAside();
1204
1361
  this.addLayoutDisplayListener();
1205
1362
  this.stompService.listen();
1206
1363
  this.toIndex();
1207
1364
  }
1365
+ initFavicon() {
1366
+ console.log('init favicon');
1367
+ const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });
1368
+ if (projectInfo.faviconUrl) {
1369
+ hasFavicon(projectInfo.faviconUrl).then((has) => {
1370
+ if (has) {
1371
+ setFavicon(projectInfo.faviconUrl);
1372
+ }
1373
+ else {
1374
+ setFavicon('./assets/favicon.ico');
1375
+ }
1376
+ });
1377
+ }
1378
+ }
1208
1379
  initAside() {
1209
1380
  const aside = this.cacheService.get('_yz_current', { mode: 'none' });
1210
1381
  this.state.aside = Object.assign({}, aside);
@@ -1256,7 +1427,7 @@ class YunzaiLayoutBasicComponent {
1256
1427
  this.state.destroy$.complete();
1257
1428
  }
1258
1429
  }
1259
- YunzaiLayoutBasicComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiLayoutBasicComponent, deps: [{ token: i1$5.LayoutDisplayService }, { token: i1$4.CacheService }, { token: i3$3.StompService }, { token: WINDOW }], target: i0.ɵɵFactoryTarget.Component });
1430
+ YunzaiLayoutBasicComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiLayoutBasicComponent, deps: [{ token: i1$5.LayoutDisplayService }, { token: i1$3.CacheService }, { token: i3$3.StompService }, { token: WINDOW }], target: i0.ɵɵFactoryTarget.Component });
1260
1431
  YunzaiLayoutBasicComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: YunzaiLayoutBasicComponent, selector: "yz-layout-basic", ngImport: i0, template: `<layout-default
1261
1432
  [options]="options"
1262
1433
  [asideUser]="asideUserTpl"
@@ -1294,20 +1465,20 @@ YunzaiLayoutBasicComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
1294
1465
  <nz-dropdown-menu #settingsMenu="nzDropdownMenu">
1295
1466
  <div nz-menu style="width: 200px;">
1296
1467
  <div nz-menu-item>
1297
- {{ 'menu.application.mode' | i18n }}
1468
+ {{ 'mode.nav' | i18n }}
1298
1469
  </div>
1299
1470
 
1300
1471
  <div nz-menu-item (click)="onNavTypeChange(NavType.APPLICATION)">
1301
1472
  <i nz-icon nzType="appstore" class="mr-sm"></i>
1302
- {{ 'menu.application.application' | i18n }}
1473
+ {{ 'mode.nav.application' | i18n }}
1303
1474
  </div>
1304
1475
  <div nz-menu-item (click)="onNavTypeChange(NavType.GROUP)">
1305
1476
  <i nz-icon nzType="group" class="mr-sm"></i>
1306
- {{ 'menu.application.group' | i18n }}
1477
+ {{ 'mode.nav.group' | i18n }}
1307
1478
  </div>
1308
1479
  <div nz-menu-item (click)="onNavTypeChange(NavType.TILE)">
1309
1480
  <i nz-icon nzType="appstore" class="mr-sm"></i>
1310
- {{ 'menu.application.tile' | i18n }}
1481
+ {{ 'mode.nav.tile' | i18n }}
1311
1482
  </div>
1312
1483
  <div nz-menu-item> <yunzai-fullscreen></yunzai-fullscreen> </div>
1313
1484
  <div nz-menu-item> <yunzai-clearstorage></yunzai-clearstorage> </div>
@@ -1324,13 +1495,13 @@ YunzaiLayoutBasicComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0
1324
1495
  <div nz-dropdown nzTrigger="click" [nzDropdownMenu]="userMenu" class="yunzai-default__aside-user">
1325
1496
  <nz-avatar class="yunzai-default__aside-user-avatar" [nzSrc]="aside.icon"></nz-avatar>
1326
1497
  <div class="yunzai-default__aside-user-info">
1327
- <strong>{{ aside.name }}</strong>
1328
- <p class="mb0">{{ aside.intro }}</p>
1498
+ <strong>{{ aside.name | i18n }}</strong>
1499
+ <p class="mb0">{{ aside.intro | i18n }}</p>
1329
1500
  </div>
1330
1501
  </div>
1331
1502
  <nz-dropdown-menu #userMenu="nzDropdownMenu">
1332
1503
  <ul nz-menu>
1333
- <li nz-menu-item routerLink="/">{{ 'menu.backtohome' | i18n }}</li>
1504
+ <li nz-menu-item routerLink="/">{{ 'back.home' | i18n }}</li>
1334
1505
  </ul>
1335
1506
  </nz-dropdown-menu>
1336
1507
  </ng-template>
@@ -1382,20 +1553,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
1382
1553
  <nz-dropdown-menu #settingsMenu="nzDropdownMenu">
1383
1554
  <div nz-menu style="width: 200px;">
1384
1555
  <div nz-menu-item>
1385
- {{ 'menu.application.mode' | i18n }}
1556
+ {{ 'mode.nav' | i18n }}
1386
1557
  </div>
1387
1558
 
1388
1559
  <div nz-menu-item (click)="onNavTypeChange(NavType.APPLICATION)">
1389
1560
  <i nz-icon nzType="appstore" class="mr-sm"></i>
1390
- {{ 'menu.application.application' | i18n }}
1561
+ {{ 'mode.nav.application' | i18n }}
1391
1562
  </div>
1392
1563
  <div nz-menu-item (click)="onNavTypeChange(NavType.GROUP)">
1393
1564
  <i nz-icon nzType="group" class="mr-sm"></i>
1394
- {{ 'menu.application.group' | i18n }}
1565
+ {{ 'mode.nav.group' | i18n }}
1395
1566
  </div>
1396
1567
  <div nz-menu-item (click)="onNavTypeChange(NavType.TILE)">
1397
1568
  <i nz-icon nzType="appstore" class="mr-sm"></i>
1398
- {{ 'menu.application.tile' | i18n }}
1569
+ {{ 'mode.nav.tile' | i18n }}
1399
1570
  </div>
1400
1571
  <div nz-menu-item> <yunzai-fullscreen></yunzai-fullscreen> </div>
1401
1572
  <div nz-menu-item> <yunzai-clearstorage></yunzai-clearstorage> </div>
@@ -1412,13 +1583,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
1412
1583
  <div nz-dropdown nzTrigger="click" [nzDropdownMenu]="userMenu" class="yunzai-default__aside-user">
1413
1584
  <nz-avatar class="yunzai-default__aside-user-avatar" [nzSrc]="aside.icon"></nz-avatar>
1414
1585
  <div class="yunzai-default__aside-user-info">
1415
- <strong>{{ aside.name }}</strong>
1416
- <p class="mb0">{{ aside.intro }}</p>
1586
+ <strong>{{ aside.name | i18n }}</strong>
1587
+ <p class="mb0">{{ aside.intro | i18n }}</p>
1417
1588
  </div>
1418
1589
  </div>
1419
1590
  <nz-dropdown-menu #userMenu="nzDropdownMenu">
1420
1591
  <ul nz-menu>
1421
- <li nz-menu-item routerLink="/">{{ 'menu.backtohome' | i18n }}</li>
1592
+ <li nz-menu-item routerLink="/">{{ 'back.home' | i18n }}</li>
1422
1593
  </ul>
1423
1594
  </nz-dropdown-menu>
1424
1595
  </ng-template>
@@ -1431,7 +1602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
1431
1602
  </ng-template> `
1432
1603
  }]
1433
1604
  }], ctorParameters: function () {
1434
- return [{ type: i1$5.LayoutDisplayService }, { type: i1$4.CacheService }, { type: i3$3.StompService }, { type: undefined, decorators: [{
1605
+ return [{ type: i1$5.LayoutDisplayService }, { type: i1$3.CacheService }, { type: i3$3.StompService }, { type: undefined, decorators: [{
1435
1606
  type: Inject,
1436
1607
  args: [WINDOW]
1437
1608
  }] }];
@@ -1528,14 +1699,14 @@ class ActGuard {
1528
1699
  });
1529
1700
  }
1530
1701
  }
1531
- ActGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ActGuard, deps: [{ token: i1$3.YunzaiConfigService }, { token: i1$4.CacheService }, { token: i1$3.PathToRegexpService }, { token: i5$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1702
+ ActGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ActGuard, deps: [{ token: i1$4.YunzaiConfigService }, { token: i1$3.CacheService }, { token: i1$4.PathToRegexpService }, { token: i5$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1532
1703
  ActGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ActGuard, providedIn: 'root' });
1533
1704
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ActGuard, decorators: [{
1534
1705
  type: Injectable,
1535
1706
  args: [{
1536
1707
  providedIn: 'root'
1537
1708
  }]
1538
- }], ctorParameters: function () { return [{ type: i1$3.YunzaiConfigService }, { type: i1$4.CacheService }, { type: i1$3.PathToRegexpService }, { type: i5$1.Router }]; } });
1709
+ }], ctorParameters: function () { return [{ type: i1$4.YunzaiConfigService }, { type: i1$3.CacheService }, { type: i1$4.PathToRegexpService }, { type: i5$1.Router }]; } });
1539
1710
 
1540
1711
  class YunzaiAuthService {
1541
1712
  constructor(injector) {
@@ -1859,6 +2030,8 @@ class YunzaiDefaultInterceptor {
1859
2030
  if (url.includes('.json') && url.includes('assets')) {
1860
2031
  url = req.url;
1861
2032
  }
2033
+ if (url.includes('i18n'))
2034
+ return next.handle(req);
1862
2035
  // 加入语言头
1863
2036
  const newReq = req.clone({ url, setHeaders: this.getAdditionalHeaders(req.headers) });
1864
2037
  return next.handle(newReq).pipe(mergeMap(ev => {
@@ -2754,7 +2927,9 @@ class YunzaiStartupService {
2754
2927
  }
2755
2928
  load() {
2756
2929
  log$1('startup.service: ', 'load');
2757
- const defaultLang = this.i18n.defaultLang;
2930
+ let defaultLang = this.cacheService.getNone(this.i18n.cacheDefaultKey);
2931
+ if (!defaultLang)
2932
+ defaultLang = this.i18n.defaultLang;
2758
2933
  return this.i18n.loadLangData(defaultLang).pipe(mergeMap(langData => {
2759
2934
  log$1('startup.service: ', 'set i18n, defaultLang->', defaultLang, ' langData->', langData);
2760
2935
  this.i18n.use(defaultLang, langData);
@@ -2822,7 +2997,7 @@ class YunzaiStartupService {
2822
2997
  }
2823
2998
  }
2824
2999
  }
2825
- YunzaiStartupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiStartupService, deps: [{ token: i8.NzIconService }, { token: i1$2.MenuService }, { token: YUNZAI_I18N_TOKEN }, { token: WINDOW }, { token: i1$2.SettingsService }, { token: i3$4.ACLService }, { token: i1$2.TitleService }, { token: YunzaiAuthService }, { token: i1$4.CacheService }, { token: i1$3.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
3000
+ YunzaiStartupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiStartupService, deps: [{ token: i8.NzIconService }, { token: i1$2.MenuService }, { token: YUNZAI_I18N_TOKEN }, { token: WINDOW }, { token: i1$2.SettingsService }, { token: i3$4.ACLService }, { token: i1$2.TitleService }, { token: YunzaiAuthService }, { token: i1$3.CacheService }, { token: i1$4.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
2826
3001
  YunzaiStartupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiStartupService });
2827
3002
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: YunzaiStartupService, decorators: [{
2828
3003
  type: Injectable
@@ -2833,7 +3008,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
2833
3008
  }] }, { type: undefined, decorators: [{
2834
3009
  type: Inject,
2835
3010
  args: [WINDOW]
2836
- }] }, { type: i1$2.SettingsService }, { type: i3$4.ACLService }, { type: i1$2.TitleService }, { type: YunzaiAuthService }, { type: i1$4.CacheService }, { type: i1$3.YunzaiConfigService }];
3011
+ }] }, { type: i1$2.SettingsService }, { type: i3$4.ACLService }, { type: i1$2.TitleService }, { type: YunzaiAuthService }, { type: i1$3.CacheService }, { type: i1$4.YunzaiConfigService }];
2837
3012
  } });
2838
3013
  function mapYzSideToYelonMenu(menus) {
2839
3014
  menus.forEach(menu => {
@@ -2883,5 +3058,5 @@ const YUNZAI_APPINIT_PROVIDES = [
2883
3058
  * Generated bundle index. Do not edit.
2884
3059
  */
2885
3060
 
2886
- export { ActGuard, BUSINESS_DEFAULT_CONFIG, LayoutNavApplicationComponent, LayoutNavGroupComponent, LayoutNavTileComponent, NavType, TopicType, YUNZAI_APPINIT_PROVIDES, YUNZAI_APPINIT_PROVIDES as YZ_APPINIT_PROVIDES, YunzaiAuthService, YunzaiClearStorageComponent, YunzaiDefaultInterceptor, YunzaiFullScreenComponent, YunzaiI18NComponent, YunzaiI18NService, YunzaiLayoutBasicComponent, YunzaiLayoutModule, YunzaiNotifyComponent, YunzaiStartupService, YunzaiStartupServiceFactory, YunzaiThemBtnComponent, YunzaiUserComponent, YunzaiAuthService as YzAuthService, YunzaiDefaultInterceptor as YzDefaultInterceptor, YunzaiI18NService as YzI18NService, YunzaiLayoutBasicComponent as YzLayoutBasicComponent, YunzaiStartupService as YzStartupService, YunzaiStartupServiceFactory as YzStartupServiceFactory, generateAbility, mapYzSideToYelonMenu, mergeBisConfig };
3061
+ export { ActGuard, BUSINESS_DEFAULT_CONFIG, LayoutNavApplicationComponent, LayoutNavGroupComponent, LayoutNavTileComponent, NavType, YUNZAI_APPINIT_PROVIDES, YUNZAI_LANGS, YUNZAI_APPINIT_PROVIDES as YZ_APPINIT_PROVIDES, YunzaiAuthService, YunzaiClearStorageComponent, YunzaiDefaultInterceptor, YunzaiFullScreenComponent, YunzaiI18NComponent, YunzaiI18NService, YunzaiLayoutBasicComponent, YunzaiLayoutModule, YunzaiNotifyComponent, YunzaiStartupService, YunzaiStartupServiceFactory, YunzaiThemBtnComponent, YunzaiUserComponent, YunzaiAuthService as YzAuthService, YunzaiDefaultInterceptor as YzDefaultInterceptor, YunzaiI18NService as YzI18NService, YunzaiLayoutBasicComponent as YzLayoutBasicComponent, YunzaiStartupService as YzStartupService, YunzaiStartupServiceFactory as YzStartupServiceFactory, generateAbility, mapYzSideToYelonMenu, mergeBisConfig };
2887
3062
  //# sourceMappingURL=layout.mjs.map