@delon/theme 16.4.2 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/compact.css +358 -232
  2. package/compact.min.css +1 -1
  3. package/dark.css +358 -232
  4. package/dark.min.css +1 -1
  5. package/default.css +358 -232
  6. package/default.min.css +1 -1
  7. package/esm2022/layout-default/layout-header-item-trigger.directive.mjs +4 -4
  8. package/esm2022/layout-default/layout-header-item.component.mjs +4 -4
  9. package/esm2022/layout-default/layout-header.component.mjs +48 -32
  10. package/esm2022/layout-default/layout-nav.component.mjs +7 -7
  11. package/esm2022/layout-default/layout-top-menu-item.mjs +4 -4
  12. package/esm2022/layout-default/layout.component.mjs +61 -37
  13. package/esm2022/layout-default/layout.module.mjs +5 -5
  14. package/esm2022/layout-default/layout.service.mjs +5 -5
  15. package/esm2022/public_api.mjs +4 -18
  16. package/esm2022/setting-drawer/setting-drawer-item.component.mjs +10 -11
  17. package/esm2022/setting-drawer/setting-drawer.component.mjs +7 -7
  18. package/esm2022/setting-drawer/setting-drawer.module.mjs +5 -5
  19. package/esm2022/src/config.mjs +1 -1
  20. package/esm2022/src/locale/locale.module.mjs +5 -5
  21. package/esm2022/src/locale/locale.service.mjs +6 -6
  22. package/esm2022/src/pipes/date/date.pipe.mjs +14 -12
  23. package/esm2022/src/pipes/index.mjs +6 -0
  24. package/esm2022/src/pipes/keys/keys.pipe.mjs +5 -5
  25. package/esm2022/src/pipes/safe/html.pipe.mjs +6 -6
  26. package/esm2022/src/pipes/safe/url.pipe.mjs +6 -6
  27. package/esm2022/src/pipes/yn/yn.pipe.mjs +6 -6
  28. package/esm2022/src/provide.mjs +51 -0
  29. package/esm2022/src/services/drawer/drawer.helper.mjs +6 -6
  30. package/esm2022/src/services/http/http.client.mjs +12 -10
  31. package/esm2022/src/services/http/http.decorator.mjs +6 -6
  32. package/esm2022/src/services/i18n/i18n-url.guard.mjs +6 -6
  33. package/esm2022/src/services/i18n/i18n.mjs +8 -8
  34. package/esm2022/src/services/i18n/i18n.pipe.mjs +7 -7
  35. package/esm2022/src/services/index.mjs +11 -0
  36. package/esm2022/src/services/menu/index.mjs +3 -0
  37. package/esm2022/src/services/menu/menu.service.mjs +6 -6
  38. package/esm2022/src/services/modal/modal.helper.mjs +6 -6
  39. package/esm2022/src/services/preloader/preloader.mjs +21 -15
  40. package/esm2022/src/services/responsive/responsive.mjs +5 -5
  41. package/esm2022/src/services/rtl/rtl.service.mjs +6 -6
  42. package/esm2022/src/services/settings/index.mjs +3 -0
  43. package/esm2022/src/services/settings/settings.service.mjs +14 -6
  44. package/esm2022/src/services/title/title.service.mjs +6 -6
  45. package/esm2022/src/theme.module.mjs +9 -28
  46. package/esm2022/src/version.mjs +1 -1
  47. package/esm2022/theme-btn/theme-btn.component.mjs +22 -18
  48. package/esm2022/theme-btn/theme-btn.module.mjs +7 -19
  49. package/fesm2022/layout-default.mjs +131 -91
  50. package/fesm2022/layout-default.mjs.map +1 -1
  51. package/fesm2022/setting-drawer.mjs +22 -22
  52. package/fesm2022/setting-drawer.mjs.map +1 -1
  53. package/fesm2022/theme-btn.mjs +26 -36
  54. package/fesm2022/theme-btn.mjs.map +1 -1
  55. package/fesm2022/theme.mjs +1769 -1732
  56. package/fesm2022/theme.mjs.map +1 -1
  57. package/layout-default/style/_aside.less +9 -9
  58. package/layout-default/style/_header.less +5 -5
  59. package/layout-default/style/_layout.less +7 -7
  60. package/layout-default/style/_progress-bar.less +3 -3
  61. package/layout-default/style/fix/_reuse-tab.less +1 -1
  62. package/layout-default/style/fix/_sidebar-nav.less +5 -5
  63. package/layout-default/style/widgets/_app-icons.less +2 -2
  64. package/layout-default/style/widgets/_user.less +22 -21
  65. package/package.json +4 -4
  66. package/public_api.d.ts +3 -17
  67. package/setting-drawer/style/index.less +9 -9
  68. package/src/config.d.ts +16 -3
  69. package/src/pipes/date/date.pipe.d.ts +3 -4
  70. package/src/pipes/index.d.ts +5 -0
  71. package/src/pipes/keys/keys.pipe.d.ts +1 -1
  72. package/src/pipes/safe/html.pipe.d.ts +1 -1
  73. package/src/pipes/safe/url.pipe.d.ts +1 -1
  74. package/src/pipes/yn/yn.pipe.d.ts +1 -1
  75. package/src/provide.d.ts +23 -0
  76. package/src/services/i18n/i18n.pipe.d.ts +1 -1
  77. package/src/services/index.d.ts +10 -0
  78. package/src/services/menu/index.d.ts +2 -0
  79. package/src/services/preloader/preloader.d.ts +1 -1
  80. package/src/services/settings/index.d.ts +2 -0
  81. package/src/services/settings/settings.service.d.ts +2 -1
  82. package/src/theme.module.d.ts +11 -11
  83. package/system/_preloader.less +3 -4
  84. package/system/antd/_modal.less +3 -3
  85. package/system/antd/_table.less +1 -1
  86. package/system/ng/_preserve-white-spaces.less +1 -0
  87. package/system/utils/_other.less +4 -4
  88. package/system/utils/_position.less +2 -2
  89. package/system/utils/_scrollbar.less +1 -0
  90. package/system/widgets/_abs.less +1 -1
  91. package/system/widgets/_half-float.less +2 -1
  92. package/system/widgets/_masonry-grid.less +2 -1
  93. package/theme-btn/style/index.less +3 -3
  94. package/theme-btn/theme-btn.component.d.ts +3 -3
  95. package/theme-btn/theme-btn.module.d.ts +5 -5
@@ -1,12 +1,12 @@
1
+ import { DOCUMENT, isPlatformServer, CommonModule, registerLocaleData } from '@angular/common';
1
2
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, Injectable, Optional, Inject, DestroyRef, Pipe, SkipSelf, NgModule, Injector, Version } from '@angular/core';
3
- import { filter, BehaviorSubject, share, Subject, map, of, delay, isObservable, switchMap, Observable, take, tap, finalize, throwError, catchError } from 'rxjs';
3
+ import { inject, PLATFORM_ID, InjectionToken, Injectable, Optional, Inject, DestroyRef, Pipe, SkipSelf, Injector, NgModule, importProvidersFrom, LOCALE_ID, ENVIRONMENT_INITIALIZER, makeEnvironmentProviders, Version } from '@angular/core';
4
+ import { filter, BehaviorSubject, share, Subject, map, delay, of, isObservable, switchMap, take, Observable, tap, finalize, throwError, catchError } from 'rxjs';
4
5
  import * as i1 from '@delon/util/config';
5
- import { AlainConfigService } from '@delon/util/config';
6
+ import { AlainConfigService, ALAIN_CONFIG } from '@delon/util/config';
6
7
  import * as i1$1 from '@delon/acl';
7
8
  import { ACLService } from '@delon/acl';
8
9
  import * as i1$2 from '@angular/cdk/platform';
9
- import { DOCUMENT, CommonModule } from '@angular/common';
10
10
  import * as i1$3 from '@angular/cdk/bidi';
11
11
  import * as i3 from 'ng-zorro-antd/core/config';
12
12
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@@ -14,35 +14,41 @@ import { ActivatedRoute, Router, RouterModule } from '@angular/router';
14
14
  import * as i1$4 from '@angular/platform-browser';
15
15
  import { deepMerge } from '@delon/util/other';
16
16
  import * as i1$5 from 'ng-zorro-antd/modal';
17
+ import { NzModalModule } from 'ng-zorro-antd/modal';
17
18
  import * as i2 from '@angular/cdk/drag-drop';
18
19
  import * as i1$6 from 'ng-zorro-antd/drawer';
20
+ import { NzDrawerModule } from 'ng-zorro-antd/drawer';
19
21
  import * as i1$7 from '@angular/common/http';
20
22
  import { HttpParams, HttpContextToken } from '@angular/common/http';
21
23
  import { formatDate } from '@delon/util/date-time';
22
- import * as i1$8 from 'ng-zorro-antd/i18n';
23
- import { NzI18nModule } from 'ng-zorro-antd/i18n';
24
+ import { NzI18nService, NzI18nModule, provideNzI18n, NZ_DATE_LOCALE } from 'ng-zorro-antd/i18n';
24
25
  import { OverlayModule } from '@angular/cdk/overlay';
25
- import { BellOutline, DeleteOutline, PlusOutline, InboxOutline } from '@ant-design/icons-angular/icons';
26
- import * as i1$9 from 'ng-zorro-antd/icon';
26
+ import { BellOutline, DeleteOutline, PlusOutline, InboxOutline, MenuFoldOutline, MenuUnfoldOutline } from '@ant-design/icons-angular/icons';
27
+ import * as i1$8 from 'ng-zorro-antd/icon';
28
+ import { NzIconService } from 'ng-zorro-antd/icon';
27
29
 
28
- function preloaderFinished() {
29
- const body = document.querySelector('body');
30
- const preloader = document.querySelector('.preloader');
30
+ function stepPreloader() {
31
+ const doc = inject(DOCUMENT);
32
+ const ssr = isPlatformServer(inject(PLATFORM_ID));
33
+ if (ssr) {
34
+ return () => { };
35
+ }
36
+ const body = doc.querySelector('body');
31
37
  body.style.overflow = 'hidden';
32
- function remove() {
33
- // preloader value null when running --hmr
34
- if (!preloader)
38
+ let done = false;
39
+ return () => {
40
+ if (done)
41
+ return;
42
+ done = true;
43
+ const preloader = doc.querySelector('.preloader');
44
+ if (preloader == null)
35
45
  return;
46
+ const CLS = 'preloader-hidden';
36
47
  preloader.addEventListener('transitionend', () => {
37
- preloader.className = 'preloader-hidden';
48
+ preloader.className = CLS;
38
49
  });
39
- preloader.className += ' preloader-hidden-add preloader-hidden-add-active';
40
- }
41
- window.appBootstrap = () => {
42
- setTimeout(() => {
43
- remove();
44
- body.style.overflow = '';
45
- }, 100);
50
+ preloader.className += ` ${CLS}-add ${CLS}-add-active`;
51
+ body.style.overflow = '';
46
52
  };
47
53
  }
48
54
 
@@ -114,12 +120,12 @@ class AlainI18nBaseService {
114
120
  }
115
121
  return content;
116
122
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18nBaseService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
118
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18nBaseService }); }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18nBaseService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
124
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18nBaseService }); }
119
125
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18nBaseService, decorators: [{
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18nBaseService, decorators: [{
121
127
  type: Injectable
122
- }], ctorParameters: function () { return [{ type: i1.AlainConfigService }]; } });
128
+ }], ctorParameters: () => [{ type: i1.AlainConfigService }] });
123
129
  class AlainI18NServiceFake extends AlainI18nBaseService {
124
130
  use(lang, data) {
125
131
  this._data = this.flatData(data ?? {}, []);
@@ -129,10 +135,10 @@ class AlainI18NServiceFake extends AlainI18nBaseService {
129
135
  getLangs() {
130
136
  return [];
131
137
  }
132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18NServiceFake, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
133
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18NServiceFake, providedIn: 'root' }); }
138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18NServiceFake, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
139
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18NServiceFake, providedIn: 'root' }); }
134
140
  }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18NServiceFake, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18NServiceFake, decorators: [{
136
142
  type: Injectable,
137
143
  args: [{ providedIn: 'root' }]
138
144
  }] });
@@ -418,22 +424,30 @@ class MenuService {
418
424
  this._change$.unsubscribe();
419
425
  this.i18n$.unsubscribe();
420
426
  }
421
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: MenuService, deps: [{ token: ALAIN_I18N_TOKEN, optional: true }, { token: i1$1.ACLService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
422
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: MenuService, providedIn: 'root' }); }
427
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MenuService, deps: [{ token: ALAIN_I18N_TOKEN, optional: true }, { token: i1$1.ACLService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
428
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MenuService, providedIn: 'root' }); }
423
429
  }
424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: MenuService, decorators: [{
430
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: MenuService, decorators: [{
425
431
  type: Injectable,
426
432
  args: [{ providedIn: 'root' }]
427
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
433
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
428
434
  type: Optional
429
435
  }, {
430
436
  type: Inject,
431
437
  args: [ALAIN_I18N_TOKEN]
432
438
  }] }, { type: i1$1.ACLService, decorators: [{
433
439
  type: Optional
434
- }] }]; } });
440
+ }] }] });
435
441
 
436
442
  const ALAIN_SETTING_KEYS = new InjectionToken('ALAIN_SETTING_KEYS');
443
+ const ALAIN_SETTING_DEFAULT = {
444
+ provide: ALAIN_SETTING_KEYS,
445
+ useValue: {
446
+ layout: 'layout',
447
+ user: 'user',
448
+ app: 'app'
449
+ }
450
+ };
437
451
  class SettingsService {
438
452
  constructor(platform, KEYS) {
439
453
  this.platform = platform;
@@ -518,16 +532,16 @@ class SettingsService {
518
532
  getUser() {
519
533
  return this._user;
520
534
  }
521
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SettingsService, deps: [{ token: i1$2.Platform }, { token: ALAIN_SETTING_KEYS }], target: i0.ɵɵFactoryTarget.Injectable }); }
522
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SettingsService, providedIn: 'root' }); }
535
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SettingsService, deps: [{ token: i1$2.Platform }, { token: ALAIN_SETTING_KEYS }], target: i0.ɵɵFactoryTarget.Injectable }); }
536
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SettingsService, providedIn: 'root' }); }
523
537
  }
524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: SettingsService, decorators: [{
538
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: SettingsService, decorators: [{
525
539
  type: Injectable,
526
540
  args: [{ providedIn: 'root' }]
527
- }], ctorParameters: function () { return [{ type: i1$2.Platform }, { type: undefined, decorators: [{
541
+ }], ctorParameters: () => [{ type: i1$2.Platform }, { type: undefined, decorators: [{
528
542
  type: Inject,
529
543
  args: [ALAIN_SETTING_KEYS]
530
- }] }]; } });
544
+ }] }] });
531
545
 
532
546
  const REP_MAX = 6;
533
547
  const SPAN_MAX = 24;
@@ -571,13 +585,13 @@ class ResponsiveService {
571
585
  clsMap.push(`${antColClass}-xxl-${paddingSpan(rule.xxl)}`);
572
586
  return clsMap;
573
587
  }
574
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ResponsiveService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
575
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ResponsiveService, providedIn: 'root' }); }
588
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ResponsiveService, deps: [{ token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
589
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ResponsiveService, providedIn: 'root' }); }
576
590
  }
577
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ResponsiveService, decorators: [{
591
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ResponsiveService, decorators: [{
578
592
  type: Injectable,
579
593
  args: [{ providedIn: 'root' }]
580
- }], ctorParameters: function () { return [{ type: i1.AlainConfigService }]; } });
594
+ }], ctorParameters: () => [{ type: i1.AlainConfigService }] });
581
595
 
582
596
  const HTML_DIR = 'dir';
583
597
  const RTL_DIRECTION = 'direction';
@@ -660,16 +674,16 @@ class RTLService {
660
674
  this.delon.set(name, { direction: this.dir });
661
675
  });
662
676
  }
663
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: RTLService, deps: [{ token: i1$3.Directionality }, { token: SettingsService }, { token: i3.NzConfigService }, { token: i1.AlainConfigService }, { token: i1$2.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
664
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: RTLService, providedIn: 'root' }); }
677
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RTLService, deps: [{ token: i1$3.Directionality }, { token: SettingsService }, { token: i3.NzConfigService }, { token: i1.AlainConfigService }, { token: i1$2.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
678
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RTLService, providedIn: 'root' }); }
665
679
  }
666
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: RTLService, decorators: [{
680
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: RTLService, decorators: [{
667
681
  type: Injectable,
668
682
  args: [{ providedIn: 'root' }]
669
- }], ctorParameters: function () { return [{ type: i1$3.Directionality }, { type: SettingsService }, { type: i3.NzConfigService }, { type: i1.AlainConfigService }, { type: i1$2.Platform }, { type: undefined, decorators: [{
683
+ }], ctorParameters: () => [{ type: i1$3.Directionality }, { type: SettingsService }, { type: i3.NzConfigService }, { type: i1.AlainConfigService }, { type: i1$2.Platform }, { type: undefined, decorators: [{
670
684
  type: Inject,
671
685
  args: [DOCUMENT]
672
- }] }]; } });
686
+ }] }] });
673
687
 
674
688
  class TitleService {
675
689
  constructor(injector, title, menuSrv, i18nSrv, doc) {
@@ -791,13 +805,13 @@ class TitleService {
791
805
  ngOnDestroy() {
792
806
  this.tit$?.unsubscribe();
793
807
  }
794
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: TitleService, deps: [{ token: i0.Injector }, { token: i1$4.Title }, { token: MenuService }, { token: ALAIN_I18N_TOKEN, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
795
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: TitleService, providedIn: 'root' }); }
808
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TitleService, deps: [{ token: i0.Injector }, { token: i1$4.Title }, { token: MenuService }, { token: ALAIN_I18N_TOKEN, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
809
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TitleService, providedIn: 'root' }); }
796
810
  }
797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: TitleService, decorators: [{
811
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: TitleService, decorators: [{
798
812
  type: Injectable,
799
813
  args: [{ providedIn: 'root' }]
800
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$4.Title }, { type: MenuService }, { type: undefined, decorators: [{
814
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i1$4.Title }, { type: MenuService }, { type: undefined, decorators: [{
801
815
  type: Optional
802
816
  }, {
803
817
  type: Inject,
@@ -805,7 +819,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImpo
805
819
  }] }, { type: undefined, decorators: [{
806
820
  type: Inject,
807
821
  args: [DOCUMENT]
808
- }] }]; } });
822
+ }] }] });
809
823
 
810
824
  class I18nPipe {
811
825
  constructor(i18n) {
@@ -814,16 +828,16 @@ class I18nPipe {
814
828
  transform(key, params) {
815
829
  return this.i18n.fanyi(key, params);
816
830
  }
817
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: I18nPipe, deps: [{ token: ALAIN_I18N_TOKEN }], target: i0.ɵɵFactoryTarget.Pipe }); }
818
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: I18nPipe, name: "i18n" }); }
831
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: I18nPipe, deps: [{ token: ALAIN_I18N_TOKEN }], target: i0.ɵɵFactoryTarget.Pipe }); }
832
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: I18nPipe, isStandalone: true, name: "i18n" }); }
819
833
  }
820
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: I18nPipe, decorators: [{
834
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: I18nPipe, decorators: [{
821
835
  type: Pipe,
822
- args: [{ name: 'i18n' }]
823
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
836
+ args: [{ name: 'i18n', standalone: true }]
837
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
824
838
  type: Inject,
825
839
  args: [ALAIN_I18N_TOKEN]
826
- }] }]; } });
840
+ }] }] });
827
841
 
828
842
  class AlainI18NGuardService {
829
843
  constructor(i18nSrv, cogSrv) {
@@ -837,18 +851,18 @@ class AlainI18NGuardService {
837
851
  }
838
852
  return of(true);
839
853
  }
840
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18NGuardService, deps: [{ token: ALAIN_I18N_TOKEN, optional: true }, { token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
841
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18NGuardService, providedIn: 'root' }); }
854
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18NGuardService, deps: [{ token: ALAIN_I18N_TOKEN, optional: true }, { token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
855
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18NGuardService, providedIn: 'root' }); }
842
856
  }
843
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainI18NGuardService, decorators: [{
857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainI18NGuardService, decorators: [{
844
858
  type: Injectable,
845
859
  args: [{ providedIn: 'root' }]
846
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
860
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
847
861
  type: Optional
848
862
  }, {
849
863
  type: Inject,
850
864
  args: [ALAIN_I18N_TOKEN]
851
- }] }, { type: i1.AlainConfigService }]; } });
865
+ }] }, { type: i1.AlainConfigService }] });
852
866
  /**
853
867
  * Internationalization guard, automatically recognizes the language in Url and triggers the `ALAIN_I18N_TOKEN.use` method
854
868
  *
@@ -876,974 +890,828 @@ const alainI18nCanActivate = childRoute => inject(AlainI18NGuardService).process
876
890
  */
877
891
  const alainI18nCanActivateChild = route => inject(AlainI18NGuardService).process(route);
878
892
 
879
- const DELON_LOCALE = new InjectionToken('delon-locale');
880
-
881
- var zhCN = {
882
- abbr: 'zh-CN',
883
- exception: {
884
- 403: '抱歉,你无权访问该页面',
885
- 404: '抱歉,你访问的页面不存在',
886
- 500: '抱歉,服务器出错了',
887
- backToHome: '返回首页'
888
- },
889
- noticeIcon: {
890
- emptyText: '暂无数据',
891
- clearText: '清空'
892
- },
893
- reuseTab: {
894
- close: '关闭标签',
895
- closeOther: '关闭其它标签',
896
- closeRight: '关闭右侧标签',
897
- refresh: '刷新'
898
- },
899
- tagSelect: {
900
- expand: '展开',
901
- collapse: '收起'
902
- },
903
- miniProgress: {
904
- target: '目标值:'
905
- },
906
- st: {
907
- total: '共 {{total}} 条',
908
- filterConfirm: '确定',
909
- filterReset: '重置'
910
- },
911
- sf: {
912
- submit: '提交',
913
- reset: '重置',
914
- search: '搜索',
915
- edit: '保存',
916
- addText: '添加',
917
- removeText: '移除',
918
- checkAllText: '全选',
919
- error: {
920
- 'false schema': `布尔模式出错`,
921
- $ref: `无法找到引用{ref}`,
922
- additionalItems: `不允许超过{limit}个元素`,
923
- additionalProperties: `不允许有额外的属性`,
924
- anyOf: `数据应为 anyOf 所指定的其中一个`,
925
- dependencies: `应当拥有属性{property}的依赖属性{deps}`,
926
- enum: `应当是预设定的枚举值之一`,
927
- format: `格式不正确`,
928
- type: `类型应当是 {type}`,
929
- required: `必填项`,
930
- maxLength: `至多 {limit} 个字符`,
931
- minLength: `至少 {limit} 个字符以上`,
932
- minimum: `必须 {comparison}{limit}`,
933
- formatMinimum: `必须 {comparison}{limit}`,
934
- maximum: `必须 {comparison}{limit}`,
935
- formatMaximum: `必须 {comparison}{limit}`,
936
- maxItems: `不应多于 {limit} 个项`,
937
- minItems: `不应少于 {limit} 个项`,
938
- maxProperties: `不应多于 {limit} 个属性`,
939
- minProperties: `不应少于 {limit} 个属性`,
940
- multipleOf: `应当是 {multipleOf} 的整数倍`,
941
- not: `不应当匹配 "not" schema`,
942
- oneOf: `只能匹配一个 "oneOf" 中的 schema`,
943
- pattern: `数据格式不正确`,
944
- uniqueItems: `不应当含有重复项 (第 {j} 项与第 {i} 项是重复的)`,
945
- custom: `格式不正确`,
946
- propertyNames: `属性名 "{propertyName}" 无效`,
947
- patternRequired: `应当有属性匹配模式 {missingPattern}`,
948
- switch: `由于 {caseIndex} 失败,未通过 "switch" 校验`,
949
- const: `应当等于常量`,
950
- contains: `应当包含一个有效项`,
951
- formatExclusiveMaximum: `formatExclusiveMaximum 应当是布尔值`,
952
- formatExclusiveMinimum: `formatExclusiveMinimum 应当是布尔值`,
953
- if: `应当匹配模式 "{failingKeyword}"`
954
- }
955
- },
956
- onboarding: {
957
- skip: `跳过`,
958
- prev: `上一项`,
959
- next: `下一项`,
960
- done: `完成`
961
- }
962
- };
963
-
964
- class DelonLocaleService {
965
- constructor(locale) {
966
- this._locale = zhCN;
967
- this.change$ = new BehaviorSubject(this._locale);
968
- this.setLocale(locale || zhCN);
969
- }
970
- get change() {
971
- return this.change$.asObservable();
893
+ const CLS_DRAG = 'MODAL-DRAG';
894
+ /**
895
+ * 对话框辅助类
896
+ */
897
+ class ModalHelper {
898
+ constructor(srv, drag, doc) {
899
+ this.srv = srv;
900
+ this.drag = drag;
901
+ this.document = doc;
972
902
  }
973
- setLocale(locale) {
974
- if (this._locale && this._locale.abbr === locale.abbr) {
975
- return;
903
+ createDragRef(options, wrapCls) {
904
+ const wrapEl = this.document.querySelector(wrapCls);
905
+ const modalEl = wrapEl.firstChild;
906
+ const handelEl = options.handleCls ? wrapEl.querySelector(options.handleCls) : null;
907
+ if (handelEl) {
908
+ handelEl.classList.add(`${CLS_DRAG}-HANDLE`);
976
909
  }
977
- this._locale = locale;
978
- this.change$.next(locale);
910
+ return this.drag
911
+ .createDrag(handelEl ?? modalEl)
912
+ .withHandles([handelEl ?? modalEl])
913
+ .withBoundaryElement(wrapEl)
914
+ .withRootElement(modalEl);
979
915
  }
980
- get locale() {
981
- return this._locale;
916
+ /**
917
+ * 构建一个对话框
918
+ *
919
+ * @param comp 组件
920
+ * @param params 组件参数
921
+ * @param options 额外参数
922
+ *
923
+ * @example
924
+ * this.modalHelper.create(FormEditComponent, { i }).subscribe(res => this.load());
925
+ * // 对于组件的成功&关闭的处理说明
926
+ * // 成功,其中 `nzModalRef` 指目标组件在构造函数 `NzModalRef` 变量名
927
+ * this.nzModalRef.close(data);
928
+ * this.nzModalRef.close();
929
+ * // 关闭
930
+ * this.nzModalRef.destroy();
931
+ */
932
+ create(comp, params, options) {
933
+ options = deepMerge({
934
+ size: 'lg',
935
+ exact: true,
936
+ includeTabs: false
937
+ }, options);
938
+ return new Observable((observer) => {
939
+ const { size, includeTabs, modalOptions, drag, useNzData } = options;
940
+ let cls = [];
941
+ let width = '';
942
+ if (size) {
943
+ if (typeof size === 'number') {
944
+ width = `${size}px`;
945
+ }
946
+ else if (['sm', 'md', 'lg', 'xl'].includes(size)) {
947
+ cls.push(`modal-${size}`);
948
+ }
949
+ else {
950
+ width = size;
951
+ }
952
+ }
953
+ if (includeTabs) {
954
+ cls.push(`modal-include-tabs`);
955
+ }
956
+ if (modalOptions && modalOptions.nzWrapClassName) {
957
+ cls.push(modalOptions.nzWrapClassName);
958
+ delete modalOptions.nzWrapClassName;
959
+ }
960
+ let dragOptions;
961
+ let dragWrapCls = `${CLS_DRAG}-${+new Date()}`;
962
+ let dragRef;
963
+ if (drag != null && drag !== false) {
964
+ dragOptions = {
965
+ handleCls: `.modal-header, .ant-modal-title`,
966
+ ...(typeof drag === 'object' ? drag : {})
967
+ };
968
+ cls.push(CLS_DRAG, dragWrapCls);
969
+ }
970
+ const subject = this.srv.create({
971
+ nzWrapClassName: cls.join(' '),
972
+ nzContent: comp,
973
+ nzWidth: width ? width : undefined,
974
+ nzFooter: null,
975
+ nzData: params,
976
+ ...modalOptions
977
+ });
978
+ // 保留 nzComponentParams 原有风格,但依然可以通过 @Inject(NZ_MODAL_DATA) 获取
979
+ if (useNzData !== true) {
980
+ Object.assign(subject.componentInstance, params);
981
+ }
982
+ subject.afterOpen
983
+ .pipe(take(1), filter(() => dragOptions != null))
984
+ .subscribe(() => {
985
+ dragRef = this.createDragRef(dragOptions, `.${dragWrapCls}`);
986
+ });
987
+ subject.afterClose.pipe(take(1)).subscribe((res) => {
988
+ if (options.exact === true) {
989
+ if (res != null) {
990
+ observer.next(res);
991
+ }
992
+ }
993
+ else {
994
+ observer.next(res);
995
+ }
996
+ observer.complete();
997
+ dragRef?.dispose();
998
+ });
999
+ });
982
1000
  }
983
- getData(path) {
984
- return (this._locale[path] || {});
1001
+ /**
1002
+ * 构建静态框,点击蒙层不允许关闭
1003
+ *
1004
+ * @param comp 组件
1005
+ * @param params 组件参数
1006
+ * @param options 额外参数
1007
+ *
1008
+ * @example
1009
+ * this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
1010
+ * // 对于组件的成功&关闭的处理说明
1011
+ * // 成功,其中 `nzModalRef` 指目标组件在构造函数 `NzModalRef` 变量名
1012
+ * this.nzModalRef.close(data);
1013
+ * this.nzModalRef.close();
1014
+ * // 关闭
1015
+ * this.nzModalRef.destroy();
1016
+ */
1017
+ createStatic(comp, params, options) {
1018
+ const modalOptions = {
1019
+ nzMaskClosable: false,
1020
+ ...(options && options.modalOptions)
1021
+ };
1022
+ return this.create(comp, params, { ...options, modalOptions });
985
1023
  }
986
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DelonLocaleService, deps: [{ token: DELON_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable }); }
987
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DelonLocaleService }); }
1024
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ModalHelper, deps: [{ token: i1$5.NzModalService }, { token: i2.DragDrop }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1025
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ModalHelper, providedIn: 'root' }); }
988
1026
  }
989
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DelonLocaleService, decorators: [{
990
- type: Injectable
991
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
1027
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ModalHelper, decorators: [{
1028
+ type: Injectable,
1029
+ args: [{ providedIn: 'root' }]
1030
+ }], ctorParameters: () => [{ type: i1$5.NzModalService }, { type: i2.DragDrop }, { type: undefined, decorators: [{
992
1031
  type: Inject,
993
- args: [DELON_LOCALE]
994
- }] }]; } });
995
- function DELON_LOCALE_SERVICE_PROVIDER_FACTORY(exist, locale) {
996
- return exist || new DelonLocaleService(locale);
997
- }
998
- const DELON_LOCALE_SERVICE_PROVIDER = {
999
- provide: DelonLocaleService,
1000
- useFactory: DELON_LOCALE_SERVICE_PROVIDER_FACTORY,
1001
- deps: [[new Optional(), new SkipSelf(), DelonLocaleService], DELON_LOCALE]
1002
- };
1003
-
1004
- class DelonLocaleModule {
1005
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DelonLocaleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1006
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: DelonLocaleModule }); }
1007
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DelonLocaleModule, providers: [{ provide: DELON_LOCALE, useValue: zhCN }, DELON_LOCALE_SERVICE_PROVIDER] }); }
1008
- }
1009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DelonLocaleModule, decorators: [{
1010
- type: NgModule,
1011
- args: [{
1012
- providers: [{ provide: DELON_LOCALE, useValue: zhCN }, DELON_LOCALE_SERVICE_PROVIDER]
1013
- }]
1014
- }] });
1032
+ args: [DOCUMENT]
1033
+ }] }] });
1015
1034
 
1016
- var enUS = {
1017
- abbr: 'en-US',
1018
- exception: {
1019
- 403: `Sorry, you don't have access to this page`,
1020
- 404: `Sorry, the page you visited does not exist`,
1021
- 500: `Sorry, the server is reporting an error`,
1022
- backToHome: 'Back To Home'
1023
- },
1024
- noticeIcon: {
1025
- emptyText: 'No data',
1026
- clearText: 'Clear'
1027
- },
1028
- reuseTab: {
1029
- close: 'Close tab',
1030
- closeOther: 'Close other tabs',
1031
- closeRight: 'Close tabs to right',
1032
- refresh: 'Refresh'
1033
- },
1034
- tagSelect: {
1035
- expand: 'Expand',
1036
- collapse: 'Collapse'
1037
- },
1038
- miniProgress: {
1039
- target: 'Target: '
1040
- },
1041
- st: {
1042
- total: '{{range[0]}} - {{range[1]}} of {{total}}',
1043
- filterConfirm: 'OK',
1044
- filterReset: 'Reset'
1045
- },
1046
- sf: {
1047
- submit: 'Submit',
1048
- reset: 'Reset',
1049
- search: 'Search',
1050
- edit: 'Save',
1051
- addText: 'Add',
1052
- removeText: 'Remove',
1053
- checkAllText: 'Check all',
1054
- error: {
1055
- 'false schema': `Boolean schema is false`,
1056
- $ref: `Can't resolve reference {ref}`,
1057
- additionalItems: `Should not have more than {limit} item`,
1058
- additionalProperties: `Should not have additional properties`,
1059
- anyOf: `Should match some schema in "anyOf"`,
1060
- dependencies: `should have property {deps} when property {property} is present`,
1061
- enum: `Should be equal to one of predefined values`,
1062
- format: `Should match format "{format}"`,
1063
- type: `Should be {type}`,
1064
- required: `Required`,
1065
- maxLength: `Should not be longer than {limit} character`,
1066
- minLength: `Should not be shorter than {limit} character`,
1067
- minimum: `Should be {comparison} {limit}`,
1068
- formatMinimum: `Should be {comparison} {limit}`,
1069
- maximum: `Should be {comparison} {limit}`,
1070
- formatMaximum: `Should be {comparison} {limit}`,
1071
- maxItems: `Should not have more than {limit} item`,
1072
- minItems: `Should not have less than {limit} item`,
1073
- maxProperties: `Should not have more than {limit} property`,
1074
- minProperties: `Should not have less than {limit} property`,
1075
- multipleOf: `Should be a multiple of {multipleOf}`,
1076
- not: `Should not be valid according to schema in "not"`,
1077
- oneOf: `Should match exactly one schema in "oneOf"`,
1078
- pattern: `Should match pattern "{pattern}"`,
1079
- uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
1080
- custom: `Should match format`,
1081
- propertyNames: `Property name "{propertyName}" is invalid`,
1082
- patternRequired: `Should have property matching pattern "{missingPattern}"`,
1083
- switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
1084
- const: `Should be equal to constant`,
1085
- contains: `Should contain a valid item`,
1086
- formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
1087
- formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
1088
- if: `Should match "{failingKeyword}" schema`
1089
- }
1090
- },
1091
- onboarding: {
1092
- skip: `Skip`,
1093
- prev: `Prev`,
1094
- next: `Next`,
1095
- done: `Done`
1035
+ /**
1036
+ * 抽屉辅助类
1037
+ *
1038
+ * **注意:** 构建结果都可被订阅,但永远都不会触发 `observer.error`
1039
+ *
1040
+ * @example
1041
+ * this.drawerHelper.create('Edit', FormEditComponent, { i }).subscribe(res => this.load());
1042
+ * // 对于组件的成功&关闭的处理说明
1043
+ * // 成功
1044
+ * this.NzDrawerRef.close(data);
1045
+ * this.NzDrawerRef.close(true);
1046
+ * // 关闭
1047
+ * this.NzDrawerRef.close();
1048
+ * this.NzDrawerRef.close(false);
1049
+ */
1050
+ class DrawerHelper {
1051
+ get openDrawers() {
1052
+ return this.parentDrawer ? this.parentDrawer.openDrawers : this.openDrawersAtThisLevel;
1096
1053
  }
1097
- };
1098
-
1099
- var zhTW = {
1100
- abbr: 'zh-TW',
1101
- exception: {
1102
- 403: '抱歉,你無權訪問該頁面',
1103
- 404: '抱歉,你訪問的頁面不存在',
1104
- 500: '抱歉,服務器出錯了',
1105
- backToHome: '返回首頁'
1106
- },
1107
- noticeIcon: {
1108
- emptyText: '暫無數據',
1109
- clearText: '清空'
1110
- },
1111
- reuseTab: {
1112
- close: '關閉標簽',
1113
- closeOther: '關閉其它標簽',
1114
- closeRight: '關閉右側標簽',
1115
- refresh: '刷新'
1116
- },
1117
- tagSelect: {
1118
- expand: '展開',
1119
- collapse: '收起'
1120
- },
1121
- miniProgress: {
1122
- target: '目標值:'
1123
- },
1124
- st: {
1125
- total: '共 {{total}} 條',
1126
- filterConfirm: '確定',
1127
- filterReset: '重置'
1128
- },
1129
- sf: {
1130
- submit: '提交',
1131
- reset: '重置',
1132
- search: '搜索',
1133
- edit: '保存',
1134
- addText: '添加',
1135
- removeText: '移除',
1136
- checkAllText: '全選',
1137
- error: {
1138
- 'false schema': `佈爾模式出錯`,
1139
- $ref: `無法找到引用{ref}`,
1140
- additionalItems: `不允許超過{ref}`,
1141
- additionalProperties: `不允許有額外的屬性`,
1142
- anyOf: `數據應為 anyOf 所指定的其中一個`,
1143
- dependencies: `應當擁有屬性{property}的依賴屬性{deps}`,
1144
- enum: `應當是預設定的枚舉值之一`,
1145
- format: `格式不正確`,
1146
- type: `類型應當是 {type}`,
1147
- required: `必填項`,
1148
- maxLength: `至多 {limit} 個字符`,
1149
- minLength: `至少 {limit} 個字符以上`,
1150
- minimum: `必須 {comparison}{limit}`,
1151
- formatMinimum: `必須 {comparison}{limit}`,
1152
- maximum: `必須 {comparison}{limit}`,
1153
- formatMaximum: `必須 {comparison}{limit}`,
1154
- maxItems: `不應多於 {limit} 個項`,
1155
- minItems: `不應少於 {limit} 個項`,
1156
- maxProperties: `不應多於 {limit} 個屬性`,
1157
- minProperties: `不應少於 {limit} 個屬性`,
1158
- multipleOf: `應當是 {multipleOf} 的整數倍`,
1159
- not: `不應當匹配 "not" schema`,
1160
- oneOf: `隻能匹配一個 "oneOf" 中的 schema`,
1161
- pattern: `數據格式不正確`,
1162
- uniqueItems: `不應當含有重複項 (第 {j} 項與第 {i} 項是重複的)`,
1163
- custom: `格式不正確`,
1164
- propertyNames: `屬性名 "{propertyName}" 無效`,
1165
- patternRequired: `應當有屬性匹配模式 {missingPattern}`,
1166
- switch: `由於 {caseIndex} 失敗,未通過 "switch" 校驗`,
1167
- const: `應當等於常量`,
1168
- contains: `應當包含一個有效項`,
1169
- formatExclusiveMaximum: `formatExclusiveMaximum 應當是佈爾值`,
1170
- formatExclusiveMinimum: `formatExclusiveMinimum 應當是佈爾值`,
1171
- if: `應當匹配模式 "{failingKeyword}"`
1054
+ constructor(srv, parentDrawer) {
1055
+ this.srv = srv;
1056
+ this.parentDrawer = parentDrawer;
1057
+ this.openDrawersAtThisLevel = [];
1058
+ }
1059
+ /**
1060
+ * 构建一个抽屉
1061
+ */
1062
+ create(title, comp, params, options) {
1063
+ options = deepMerge({
1064
+ size: 'md',
1065
+ footer: true,
1066
+ footerHeight: 50,
1067
+ exact: true,
1068
+ drawerOptions: {
1069
+ nzPlacement: 'right',
1070
+ nzWrapClassName: ''
1071
+ }
1072
+ }, options);
1073
+ return new Observable((observer) => {
1074
+ const { size, footer, footerHeight, drawerOptions } = options;
1075
+ const defaultOptions = {
1076
+ nzContent: comp,
1077
+ nzContentParams: params,
1078
+ nzTitle: title
1079
+ };
1080
+ if (typeof size === 'number') {
1081
+ defaultOptions[drawerOptions.nzPlacement === 'top' || drawerOptions.nzPlacement === 'bottom' ? 'nzHeight' : 'nzWidth'] = options.size;
1082
+ }
1083
+ else if (!drawerOptions.nzWidth) {
1084
+ defaultOptions.nzWrapClassName = `${drawerOptions.nzWrapClassName} drawer-${options.size}`.trim();
1085
+ delete drawerOptions.nzWrapClassName;
1086
+ }
1087
+ if (footer) {
1088
+ // The 24 value is @drawer-body-padding
1089
+ defaultOptions.nzBodyStyle = {
1090
+ 'padding-bottom.px': footerHeight + 24
1091
+ };
1092
+ }
1093
+ const ref = this.srv.create({ ...defaultOptions, ...drawerOptions });
1094
+ this.openDrawers.push(ref);
1095
+ const afterClose$ = ref.afterClose.subscribe((res) => {
1096
+ if (options.exact === true) {
1097
+ if (res != null) {
1098
+ observer.next(res);
1099
+ }
1100
+ }
1101
+ else {
1102
+ observer.next(res);
1103
+ }
1104
+ observer.complete();
1105
+ afterClose$.unsubscribe();
1106
+ this.close(ref);
1107
+ });
1108
+ });
1109
+ }
1110
+ close(ref) {
1111
+ const idx = this.openDrawers.indexOf(ref);
1112
+ if (idx === -1)
1113
+ return;
1114
+ this.openDrawers.splice(idx, 1);
1115
+ }
1116
+ closeAll() {
1117
+ let i = this.openDrawers.length;
1118
+ while (i--) {
1119
+ this.openDrawers[i].close();
1172
1120
  }
1173
- },
1174
- onboarding: {
1175
- skip: `跳過`,
1176
- prev: `上一項`,
1177
- next: `下一項`,
1178
- done: `完成`
1179
1121
  }
1180
- };
1181
-
1182
- var trTR = {
1183
- abbr: 'tr-TR',
1184
- exception: {
1185
- 403: `Üzgünüz, bu sayfaya erişiminiz yok`,
1186
- 404: `Maalesef bu sayfa mevcut değil`,
1187
- 500: `Üzgünüz, sunucu hatası`,
1188
- backToHome: `Ana Sayfa'ya geri dön`
1189
- },
1190
- noticeIcon: {
1191
- emptyText: 'Veri yok',
1192
- clearText: 'Temiz'
1193
- },
1194
- reuseTab: {
1195
- close: 'Sekmeyi Kapat',
1196
- closeOther: 'Diğer sekmeleri kapat',
1197
- closeRight: 'Sağdaki sekmeleri kapat',
1198
- refresh: 'täzele'
1199
- },
1200
- tagSelect: {
1201
- expand: 'Genişlet',
1202
- collapse: 'Daralt'
1203
- },
1204
- miniProgress: {
1205
- target: 'Hedef: '
1206
- },
1207
- st: {
1208
- total: '{{range[0]}} ile {{range[1]}} arasında {{total}}',
1209
- filterConfirm: 'Tamam',
1210
- filterReset: 'Sıfırla'
1211
- },
1212
- sf: {
1213
- submit: 'Gönder',
1214
- reset: 'Sıfırla',
1215
- search: 'Ara',
1216
- edit: 'Kaydet',
1217
- addText: 'Ekle',
1218
- removeText: 'Kaldır',
1219
- checkAllText: 'Tümünü kontrol et',
1220
- error: {
1221
- 'false schema': `Boolean schema is false`,
1222
- $ref: `Can't resolve reference {ref}`,
1223
- additionalItems: `Should not have more than {limit} item`,
1224
- additionalProperties: `Should not have additional properties`,
1225
- anyOf: `Should match some schema in "anyOf"`,
1226
- dependencies: `should have property {deps} when property {property} is present`,
1227
- enum: `Should be equal to one of predefined values`,
1228
- format: `Should match format "{format}"`,
1229
- type: `Should be {type}`,
1230
- required: `Required`,
1231
- maxLength: `Should not be longer than {limit} character`,
1232
- minLength: `Should not be shorter than {limit} character`,
1233
- minimum: `Should be {comparison} {limit}`,
1234
- formatMinimum: `Should be {comparison} {limit}`,
1235
- maximum: `Should be {comparison} {limit}`,
1236
- formatMaximum: `Should be {comparison} {limit}`,
1237
- maxItems: `Should not have more than {limit} item`,
1238
- minItems: `Should not have less than {limit} item`,
1239
- maxProperties: `Should not have more than {limit} property`,
1240
- minProperties: `Should not have less than {limit} property`,
1241
- multipleOf: `Should be a multiple of {multipleOf}`,
1242
- not: `Should not be valid according to schema in "not"`,
1243
- oneOf: `Should match exactly one schema in "oneOf"`,
1244
- pattern: `Should match pattern "{pattern}"`,
1245
- uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
1246
- custom: `Should match format`,
1247
- propertyNames: `Property name "{propertyName}" is invalid`,
1248
- patternRequired: `Should have property matching pattern "{missingPattern}"`,
1249
- switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
1250
- const: `Should be equal to constant`,
1251
- contains: `Should contain a valid item`,
1252
- formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
1253
- formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
1254
- if: `Should match "{failingKeyword}" schema`
1255
- }
1256
- },
1257
- onboarding: {
1258
- skip: `Atla`,
1259
- prev: `Önceki`,
1260
- next: `Sonraki`,
1261
- done: `Bitti`
1122
+ /**
1123
+ * 构建一个抽屉,点击蒙层不允许关闭
1124
+ */
1125
+ static(title, comp, params, options) {
1126
+ const drawerOptions = {
1127
+ nzMaskClosable: false,
1128
+ ...(options && options.drawerOptions)
1129
+ };
1130
+ return this.create(title, comp, params, { ...options, drawerOptions });
1262
1131
  }
1263
- };
1132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DrawerHelper, deps: [{ token: i1$6.NzDrawerService }, { token: DrawerHelper, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
1133
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DrawerHelper, providedIn: 'root' }); }
1134
+ }
1135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DrawerHelper, decorators: [{
1136
+ type: Injectable,
1137
+ args: [{ providedIn: 'root' }]
1138
+ }], ctorParameters: () => [{ type: i1$6.NzDrawerService }, { type: DrawerHelper, decorators: [{
1139
+ type: Optional
1140
+ }, {
1141
+ type: SkipSelf
1142
+ }] }] });
1264
1143
 
1265
- var plPL = {
1266
- abbr: 'pl-PL',
1267
- exception: {
1268
- 403: `Niestety, nie masz uprawnień do tej strony`,
1269
- 404: `Niestety, ta strona nie istnieje`,
1270
- 500: `Niestety, błąd serwera`,
1271
- backToHome: 'Powróć do strony głównej'
1272
- },
1273
- noticeIcon: {
1274
- emptyText: 'Brak danych',
1275
- clearText: 'Wyczyść'
1276
- },
1277
- reuseTab: {
1278
- close: 'Zamknij kartę',
1279
- closeOther: 'Zamknij inne karty',
1280
- closeRight: 'Zamknij karty po prawej',
1281
- refresh: 'Refresh'
1282
- },
1283
- tagSelect: {
1284
- expand: 'Rozszerz',
1285
- collapse: 'Zmniejsz'
1286
- },
1287
- miniProgress: {
1288
- target: 'Cel: '
1289
- },
1290
- st: {
1291
- total: '{{range[0]}} - {{range[1]}} z {{total}}',
1292
- filterConfirm: 'OK',
1293
- filterReset: 'Wyczyść'
1294
- },
1295
- sf: {
1296
- submit: 'Wyślij',
1297
- reset: 'Resetuj',
1298
- search: 'Szukaj',
1299
- edit: 'Zapisz',
1300
- addText: 'Dodaj',
1301
- removeText: 'Usuń',
1302
- checkAllText: 'Zaznacz wszystkie',
1303
- error: {
1304
- 'false schema': `Boolean schema is false`,
1305
- $ref: `Can't resolve reference {ref}`,
1306
- additionalItems: `Should not have more than {limit} item`,
1307
- additionalProperties: `Should not have additional properties`,
1308
- anyOf: `Should match some schema in "anyOf"`,
1309
- dependencies: `should have property {deps} when property {property} is present`,
1310
- enum: `Should be equal to one of predefined values`,
1311
- format: `Should match format "{format}"`,
1312
- type: `Should be {type}`,
1313
- required: `Required`,
1314
- maxLength: `Should not be longer than {limit} character`,
1315
- minLength: `Should not be shorter than {limit} character`,
1316
- minimum: `Should be {comparison} {limit}`,
1317
- formatMinimum: `Should be {comparison} {limit}`,
1318
- maximum: `Should be {comparison} {limit}`,
1319
- formatMaximum: `Should be {comparison} {limit}`,
1320
- maxItems: `Should not have more than {limit} item`,
1321
- minItems: `Should not have less than {limit} item`,
1322
- maxProperties: `Should not have more than {limit} property`,
1323
- minProperties: `Should not have less than {limit} property`,
1324
- multipleOf: `Should be a multiple of {multipleOf}`,
1325
- not: `Should not be valid according to schema in "not"`,
1326
- oneOf: `Should match exactly one schema in "oneOf"`,
1327
- pattern: `Should match pattern "{pattern}"`,
1328
- uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
1329
- custom: `Should match format`,
1330
- propertyNames: `Property name "{propertyName}" is invalid`,
1331
- patternRequired: `Should have property matching pattern "{missingPattern}"`,
1332
- switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
1333
- const: `Should be equal to constant`,
1334
- contains: `Should contain a valid item`,
1335
- formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
1336
- formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
1337
- if: `Should match "{failingKeyword}" schema`
1144
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1145
+ /**
1146
+ * 封装HttpClient,主要解决:
1147
+ * + 优化HttpClient在参数上便利性
1148
+ * + 统一实现 loading
1149
+ * + 统一处理时间格式问题
1150
+ */
1151
+ class _HttpClient {
1152
+ constructor(http, cogSrv) {
1153
+ this.http = http;
1154
+ this.lc = 0;
1155
+ this.cog = cogSrv.merge('themeHttp', {
1156
+ nullValueHandling: 'include',
1157
+ dateValueHandling: 'timestamp'
1158
+ });
1159
+ }
1160
+ /**
1161
+ * Get whether it's loading
1162
+ *
1163
+ * 获取是否正在加载中
1164
+ */
1165
+ get loading() {
1166
+ return this.lc > 0;
1167
+ }
1168
+ /**
1169
+ * Get the currently loading count
1170
+ *
1171
+ * 获取当前加载中的数量
1172
+ */
1173
+ get loadingCount() {
1174
+ return this.lc;
1175
+ }
1176
+ parseParams(params) {
1177
+ const newParams = {};
1178
+ if (params instanceof HttpParams) {
1179
+ return params;
1338
1180
  }
1339
- },
1340
- onboarding: {
1341
- skip: `Pominąć`,
1342
- prev: `Poprzedni`,
1343
- next: `Kolejny`,
1344
- done: `Gotowe`
1181
+ const { nullValueHandling, dateValueHandling } = this.cog;
1182
+ Object.keys(params).forEach(key => {
1183
+ let paramValue = params[key];
1184
+ // 忽略空值
1185
+ if (nullValueHandling === 'ignore' && paramValue == null)
1186
+ return;
1187
+ // 将时间转化为:时间戳 (秒)
1188
+ if (paramValue instanceof Date &&
1189
+ (dateValueHandling === 'timestamp' || dateValueHandling === 'timestampSecond')) {
1190
+ paramValue = dateValueHandling === 'timestamp' ? paramValue.valueOf() : Math.trunc(paramValue.valueOf() / 1000);
1191
+ }
1192
+ newParams[key] = paramValue;
1193
+ });
1194
+ return new HttpParams({ fromObject: newParams });
1345
1195
  }
1346
- };
1347
-
1348
- var elGR = {
1349
- abbr: 'el-GR',
1350
- exception: {
1351
- 403: `Λυπούμαστε, δεν έχετε πρόσβαση σε αυτήν τη σελίδα`,
1352
- 404: `Λυπούμαστε, η σελίδα αυτή δεν βρέθηκε`,
1353
- 500: `Λυπούμαστε, σφάλμα διακομιστή`,
1354
- backToHome: 'Επιστροφή στην αρχική σελίδα'
1355
- },
1356
- noticeIcon: {
1357
- emptyText: 'Δεν υπάρχουν δεδομένα',
1358
- clearText: 'Καθαρισμός'
1359
- },
1360
- reuseTab: {
1361
- close: 'Κλείσιμο καρτέλας',
1362
- closeOther: 'Κλείσιμο των άλλων καρτέλων',
1363
- closeRight: 'Κλείσιμο των καρτελών δεξιά',
1364
- refresh: 'Ανανέωση'
1365
- },
1366
- tagSelect: {
1367
- expand: 'Επέκταση',
1368
- collapse: 'Σύμπτυξη'
1369
- },
1370
- miniProgress: {
1371
- target: 'Στόχος: '
1372
- },
1373
- st: {
1374
- total: '{{range[0]}} - {{range[1]}} από {{total}}',
1375
- filterConfirm: 'ΟΚ',
1376
- filterReset: 'Επαναφορά'
1377
- },
1378
- sf: {
1379
- submit: 'Υποβολή',
1380
- reset: 'Επαναφορά',
1381
- search: 'Αναζήτηση',
1382
- edit: 'Αποθήκευση',
1383
- addText: 'Προσθήκη',
1384
- removeText: 'Αφαίρεση',
1385
- checkAllText: 'Επιλογή όλων',
1386
- error: {
1387
- 'false schema': `Η δυαδική δομή είναι ψευδής`,
1388
- $ref: `Δεν είναι δυνατή η επίλυση της αναφοράς {ref}`,
1389
- additionalItems: `Δεν πρέπει να έχει περισσότερα από {limit} στοιχεία`,
1390
- additionalProperties: `Δεν πρέπει να έχει επιπλέον χαρακτηριστικά`,
1391
- anyOf: `Πρέπει να ταιριάζει με κάποια απο τις δομές στο "anyOf"`,
1392
- dependencies: `τα χαρακτηριστικά {deps} είναι απαραίτητα, όταν υπάρχει το χαρακτηριστικό {property}`,
1393
- enum: `Πρέπει να είναι ίσο με μία από τις προκαθορισμένες τιμές`,
1394
- format: `Πρέπει να έχει την μορφή "{format}"`,
1395
- type: `Πρέπει να είναι {type}`,
1396
- required: `Απαιτείται`,
1397
- maxLength: `Δεν πρέπει να είναι μεγαλύτερο από {limit} χαρακτήρες`,
1398
- minLength: `Δεν πρέπει να είναι μικρότερο από {limit} χαρακτήρες`,
1399
- minimum: `Πρέπει να είναι {comparison} {limit}`,
1400
- formatMinimum: `Πρέπει να είναι {comparison} {limit}`,
1401
- maximum: `Πρέπει να είναι {comparison} {limit}`,
1402
- formatMaximum: `Πρέπει να είναι {comparison} {limit}`,
1403
- maxItems: `Δεν πρέπει να έχει περισσότερα από {limit} στοιχεία`,
1404
- minItems: `Δεν πρέπει να έχει λιγότερα από {limit} στοιχεία`,
1405
- maxProperties: `Δεν πρέπει να έχει περισσότερα από {limit} χαρακτηριστικά`,
1406
- minProperties: `Δεν πρέπει να έχει λιγότερα από {limit} χαρακτηριστικά`,
1407
- multipleOf: `Πρέπει να είναι πολλαπλάσιο του {multipleOf}`,
1408
- not: `Δεν πρέπει να είναι εγκύρο, σύμφωνα με την δομή στο "not"`,
1409
- oneOf: `Πρέπει να ταιριάζει με ακριβώς μια απο τις δομές στο "oneOf"`,
1410
- pattern: `Πρέπει να ταιριάζει με το πρότυπο "{pattern}"`,
1411
- uniqueItems: `Τα στοιχεία δεν πρέπει να επαναλαμβάνονται (τα στοιχεία ## {j} και {i} είναι ίδια)`,
1412
- custom: `Πρέπει να έχει την μορφή`,
1413
- propertyNames: `Το όνομα του χαρακτηριστικού "{propertyName}" δεν είναι έγκυρο`,
1414
- patternRequired: `Πρέπει να υπάρχει το χαρακτηριστικό αντιπαραβολής προτύπου "{missingPattern}"`,
1415
- switch: `Πρέπει να περάσει ο έλεγχος εγκυρότητας της λέξης-κλειδιού με την χρήση της "switch", η περίπτωση {caseIndex} αποτυγχάνει`,
1416
- const: `Πρέπει να είναι ίσο με σταθερά`,
1417
- contains: `Πρέπει να περιέχει κάποιο έγκυρο στοιχείο`,
1418
- formatExclusiveMaximum: `formatExclusiveMaximum πρέπει να είναι boolean`,
1419
- formatExclusiveMinimum: `formatExclusiveMinimum πρέπει να είναι boolean`,
1420
- if: `Πρέπει να ταιριάζει στην δομή "{failingKeyword}"`
1421
- }
1422
- },
1423
- onboarding: {
1424
- skip: `Παράλειψη`,
1425
- prev: `Προηγούμενο`,
1426
- next: `Επόμενο`,
1427
- done: `Ολοκληρώθηκε`
1196
+ appliedUrl(url, params) {
1197
+ if (!params)
1198
+ return url;
1199
+ url += ~url.indexOf('?') ? '' : '?';
1200
+ const arr = [];
1201
+ Object.keys(params).forEach(key => {
1202
+ arr.push(`${key}=${params[key]}`);
1203
+ });
1204
+ return url + arr.join('&');
1428
1205
  }
1429
- };
1430
-
1431
- var koKR = {
1432
- abbr: 'ko-KR',
1433
- exception: {
1434
- 403: `죄송합니다.이 페이지에 액세스 할 수 없습니다.`,
1435
- 404: `죄송합니다. 해당 페이지가 없습니다.`,
1436
- 500: `죄송합니다, 서버 오류가 있습니다.`,
1437
- backToHome: '홈으로 돌아갑니다.'
1438
- },
1439
- noticeIcon: {
1440
- emptyText: '데이터 없음',
1441
- clearText: '지우기'
1442
- },
1443
- reuseTab: {
1444
- close: '탭 닫기',
1445
- closeOther: '다른 탭 닫기',
1446
- closeRight: '오른쪽 탭 닫기',
1447
- refresh: '새롭게 하다'
1448
- },
1449
- tagSelect: {
1450
- expand: '펼치기',
1451
- collapse: '접기'
1452
- },
1453
- miniProgress: {
1454
- target: '대상: '
1455
- },
1456
- st: {
1457
- total: '전체 {{total}}건',
1458
- filterConfirm: '확인',
1459
- filterReset: '초기화'
1460
- },
1461
- sf: {
1462
- submit: '제출',
1463
- reset: '재설정',
1464
- search: '검색',
1465
- edit: '저장',
1466
- addText: '추가',
1467
- removeText: '제거',
1468
- checkAllText: '모두 확인',
1469
- error: {
1470
- 'false schema': `Boolean schema is false`,
1471
- $ref: `Can't resolve reference {ref}`,
1472
- additionalItems: `Should not have more than {limit} item`,
1473
- additionalProperties: `Should not have additional properties`,
1474
- anyOf: `Should match some schema in "anyOf"`,
1475
- dependencies: `should have property {deps} when property {property} is present`,
1476
- enum: `Should be equal to one of predefined values`,
1477
- format: `Should match format "{format}"`,
1478
- type: `Should be {type}`,
1479
- required: `Required`,
1480
- maxLength: `Should not be longer than {limit} character`,
1481
- minLength: `Should not be shorter than {limit} character`,
1482
- minimum: `Should be {comparison} {limit}`,
1483
- formatMinimum: `Should be {comparison} {limit}`,
1484
- maximum: `Should be {comparison} {limit}`,
1485
- formatMaximum: `Should be {comparison} {limit}`,
1486
- maxItems: `Should not have more than {limit} item`,
1487
- minItems: `Should not have less than {limit} item`,
1488
- maxProperties: `Should not have more than {limit} property`,
1489
- minProperties: `Should not have less than {limit} property`,
1490
- multipleOf: `Should be a multiple of {multipleOf}`,
1491
- not: `Should not be valid according to schema in "not"`,
1492
- oneOf: `Should match exactly one schema in "oneOf"`,
1493
- pattern: `Should match pattern "{pattern}"`,
1494
- uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
1495
- custom: `Should match format`,
1496
- propertyNames: `Property name "{propertyName}" is invalid`,
1497
- patternRequired: `Should have property matching pattern "{missingPattern}"`,
1498
- switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
1499
- const: `Should be equal to constant`,
1500
- contains: `Should contain a valid item`,
1501
- formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
1502
- formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
1503
- if: `Should match "{failingKeyword}" schema`
1504
- }
1505
- },
1506
- onboarding: {
1507
- skip: `건너 뛰기`,
1508
- prev: `이전`,
1509
- next: `다음`,
1510
- done: `끝난`
1206
+ setCount(count) {
1207
+ Promise.resolve(null).then(() => (this.lc = count <= 0 ? 0 : count));
1511
1208
  }
1512
- };
1513
-
1514
- var hrHR = {
1515
- abbr: 'hr-HR',
1516
- exception: {
1517
- 403: `Nažalost, nemate pristup ovoj lokaciji`,
1518
- 404: `Nažalost, lokacija ne postoji`,
1519
- 500: `Nažalost, server je javio pogrešku`,
1520
- backToHome: 'Nazad na početnu stranicu'
1521
- },
1522
- noticeIcon: {
1523
- emptyText: 'Nema podataka',
1524
- clearText: 'Obriši'
1525
- },
1526
- reuseTab: {
1527
- close: 'Zatvori karticu',
1528
- closeOther: 'Zatvori druge kartice',
1529
- closeRight: 'Zatvori kartice desno',
1530
- refresh: 'Refresh'
1531
- },
1532
- tagSelect: {
1533
- expand: 'Proširi',
1534
- collapse: 'Skupi'
1535
- },
1536
- miniProgress: {
1537
- target: 'Cilj: '
1538
- },
1539
- st: {
1540
- total: '{{range[0]}} - {{range[1]}} od {{total}}',
1541
- filterConfirm: 'U redu',
1542
- filterReset: 'Poništi'
1543
- },
1544
- sf: {
1545
- submit: 'Pošalji',
1546
- reset: 'Poništi',
1547
- search: 'Pretraži',
1548
- edit: 'Spremi',
1549
- addText: 'Dodaj',
1550
- removeText: 'Ukloni',
1551
- checkAllText: 'Označi sve'
1552
- },
1553
- onboarding: {
1554
- skip: `Preskočiti`,
1555
- prev: `Prethodna`,
1556
- next: `Sljedeći`,
1557
- done: `Sastavljeno`
1209
+ push() {
1210
+ this.setCount(++this.lc);
1558
1211
  }
1559
- };
1212
+ pop() {
1213
+ this.setCount(--this.lc);
1214
+ }
1215
+ /**
1216
+ * Clean loading count
1217
+ *
1218
+ * 清空加载中
1219
+ */
1220
+ cleanLoading() {
1221
+ this.setCount(0);
1222
+ }
1223
+ get(url, params, options = {}) {
1224
+ return this.request('GET', url, {
1225
+ params,
1226
+ ...options
1227
+ });
1228
+ }
1229
+ post(url, body, params, options = {}) {
1230
+ return this.request('POST', url, {
1231
+ body,
1232
+ params,
1233
+ ...options
1234
+ });
1235
+ }
1236
+ delete(url, params, options = {}) {
1237
+ return this.request('DELETE', url, {
1238
+ params,
1239
+ ...options
1240
+ });
1241
+ }
1242
+ // #endregion
1243
+ // #region jsonp
1244
+ /**
1245
+ * **JSONP Request**
1246
+ *
1247
+ * @param callbackParam CALLBACK值,默认:JSONP_CALLBACK
1248
+ */
1249
+ jsonp(url, params, callbackParam = 'JSONP_CALLBACK') {
1250
+ return of(null).pipe(
1251
+ // Make sure to always be asynchronous, see issues: https://github.com/ng-alain/ng-alain/issues/1954
1252
+ delay(0), tap(() => this.push()), switchMap(() => this.http.jsonp(this.appliedUrl(url, params), callbackParam)), finalize(() => this.pop()));
1253
+ }
1254
+ patch(url, body, params, options = {}) {
1255
+ return this.request('PATCH', url, {
1256
+ body,
1257
+ params,
1258
+ ...options
1259
+ });
1260
+ }
1261
+ put(url, body, params, options = {}) {
1262
+ return this.request('PUT', url, {
1263
+ body,
1264
+ params,
1265
+ ...options
1266
+ });
1267
+ }
1268
+ form(url, body, params, options = {}) {
1269
+ return this.request('POST', url, {
1270
+ body,
1271
+ params,
1272
+ ...options,
1273
+ headers: {
1274
+ 'content-type': `application/x-www-form-urlencoded`
1275
+ }
1276
+ });
1277
+ }
1278
+ request(method, url, options = {}) {
1279
+ if (options.params)
1280
+ options.params = this.parseParams(options.params);
1281
+ return of(null).pipe(
1282
+ // Make sure to always be asynchronous, see issues: https://github.com/ng-alain/ng-alain/issues/1954
1283
+ delay(0), tap(() => this.push()), switchMap(() => this.http.request(method, url, options)), finalize(() => this.pop()));
1284
+ }
1285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: _HttpClient, deps: [{ token: i1$7.HttpClient }, { token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1286
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: _HttpClient, providedIn: 'root' }); }
1287
+ }
1288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: _HttpClient, decorators: [{
1289
+ type: Injectable,
1290
+ args: [{ providedIn: 'root' }]
1291
+ }], ctorParameters: () => [{ type: i1$7.HttpClient }, { type: i1.AlainConfigService }] });
1560
1292
 
1561
- var jaJP = {
1562
- abbr: 'ja-JP',
1563
- exception: {
1564
- 403: 'ページへのアクセス権限がありません',
1565
- 404: 'ページが存在しません',
1566
- 500: 'サーバーエラーが発生しました',
1567
- backToHome: 'ホームに戻る'
1568
- },
1569
- noticeIcon: {
1570
- emptyText: 'データが有りません',
1571
- clearText: 'クリア'
1572
- },
1573
- reuseTab: {
1574
- close: 'タブを閉じる',
1575
- closeOther: '他のタブを閉じる',
1576
- closeRight: '右のタブを閉じる',
1577
- refresh: 'リフレッシュ'
1578
- },
1579
- tagSelect: {
1580
- expand: '展開する',
1581
- collapse: '折りたたむ'
1582
- },
1583
- miniProgress: {
1584
- target: '設定値: '
1585
- },
1586
- st: {
1587
- total: '{{range[0]}} - {{range[1]}} / {{total}}',
1588
- filterConfirm: '確定',
1589
- filterReset: 'リセット'
1590
- },
1591
- sf: {
1592
- submit: '送信',
1593
- reset: 'リセット',
1594
- search: '検索',
1595
- edit: '保存',
1596
- addText: '追加',
1597
- removeText: '削除',
1598
- checkAllText: '全選択',
1599
- error: {
1600
- 'false schema': `真偽値スキーマが不正です`,
1601
- $ref: `参照を解決できません: {ref}`,
1602
- additionalItems: `{limit}個を超えるアイテムを含めることはできません`,
1603
- additionalProperties: `追加のプロパティを使用しないでください`,
1604
- anyOf: `"anyOf"のスキーマと一致する必要があります`,
1605
- dependencies: `プロパティ {property} を指定した場合、次の依存関係を満たす必要があります: {deps}`,
1606
- enum: `定義された値のいずれかに等しくなければなりません`,
1607
- format: `入力形式に一致しません: "{format}"`,
1608
- type: `型が不正です: {type}`,
1609
- required: `必須項目です`,
1610
- maxLength: `最大文字数: {limit}`,
1611
- minLength: `最少文字数: {limit}`,
1612
- minimum: `値が不正です: {comparison} {limit}`,
1613
- formatMinimum: `値が不正です: {comparison} {limit}`,
1614
- maximum: `値が不正です: {comparison} {limit}`,
1615
- formatMaximum: `値が不正です: {comparison} {limit}`,
1616
- maxItems: `最大選択数は {limit} より小さい必要があります`,
1617
- minItems: `最小選択数は {limit} より大きい必要があります`,
1618
- maxProperties: `値を{limit}より大きくすることはできません`,
1619
- minProperties: `値を{limit}より小さくすることはできません`,
1620
- multipleOf: `値は次の数の倍数である必要があります: {multipleOf}`,
1621
- not: `値が不正です:`,
1622
- oneOf: `値が不正です:`,
1623
- pattern: `次のパターンに一致する必要があります: "{pattern}"`,
1624
- uniqueItems: `値が重複しています: 選択肢: {j} 、{i}`,
1625
- custom: `形式と一致する必要があります`,
1626
- propertyNames: `次のプロパティの値が無効です: "{propertyName}"`,
1627
- patternRequired: `次のパターンに一致するプロパティが必須です: "{missingPattern}"`,
1628
- switch: `"switch" キーワードの値が不正です: {caseIndex}`,
1629
- const: `値が定数に一致しません`,
1630
- contains: `有効なアイテムを含める必要があります`,
1631
- formatExclusiveMaximum: `formatExclusiveMaximum は真偽値である必要があります`,
1632
- formatExclusiveMinimum: `formatExclusiveMaximum は真偽値である必要があります`,
1633
- if: `パターンと一致する必要があります: "{failingKeyword}" `
1634
- }
1635
- },
1636
- onboarding: {
1637
- skip: `スキップ`,
1638
- prev: `前へ`,
1639
- next: `次`,
1640
- done: `できた`
1293
+ /**
1294
+ * Every http decorator must be based on `BaseAPI`, Like this:
1295
+ * ```ts
1296
+ * \@Injectable()
1297
+ * class DataService extends BaseApi {}
1298
+ * ```
1299
+ */
1300
+ class BaseApi {
1301
+ constructor(injector) {
1302
+ this.injector = injector;
1641
1303
  }
1642
- };
1643
-
1644
- var slSI = {
1645
- abbr: 'sl-SI',
1646
- exception: {
1647
- 403: `Žal nimate dostopa do te strani`,
1648
- 404: `Žal stran, ki ste jo obiskali, ne obstaja`,
1649
- 500: `Žal strežnik poroča o napaki`,
1650
- backToHome: 'Nazaj domov'
1651
- },
1652
- noticeIcon: {
1653
- emptyText: 'Ni podatkov',
1654
- clearText: 'Počisti'
1655
- },
1656
- reuseTab: {
1657
- close: 'Zapri zavihek',
1658
- closeOther: 'Zaprite druge zavihke',
1659
- closeRight: 'Zaprite zavihke na desni'
1660
- },
1661
- tagSelect: {
1662
- expand: 'Razširi',
1663
- collapse: 'Strni'
1664
- },
1665
- miniProgress: {
1666
- target: 'Cilj: '
1667
- },
1668
- st: {
1669
- total: '{{range[0]}} - {{range[1]}} of {{total}}',
1670
- filterConfirm: 'OK',
1671
- filterReset: 'Reset'
1672
- },
1673
- sf: {
1674
- submit: 'Pošlji',
1675
- reset: 'Reset',
1676
- search: 'Išči',
1677
- edit: 'Shrani',
1678
- addText: 'Dodaj',
1679
- removeText: 'Odstrani',
1680
- checkAllText: 'Preveri vse',
1681
- error: {
1682
- 'false schema': `Boolova shema je napačna`,
1683
- $ref: `Referenc ni mogoče razrešiti {ref}`,
1684
- additionalItems: `Ne sme imeti več kot {limit} artiklov`,
1685
- additionalProperties: `Ne bi smel imeti dodatnih lastnosti`,
1686
- anyOf: `Se mora ujemati s shemo v "anyOf"`,
1687
- dependencies: `mora imeti lastnosti {deps} ko je artikel {property} prisoten`,
1688
- enum: `Mora biti enaka eni od vnaprej določenih vrednosti`,
1689
- format: `Naj ustreza formatu "{format}"`,
1690
- type: `Naj bo {type}`,
1691
- required: `Zahtevano`,
1692
- maxLength: `Ne sme biti daljši od {limit} znakov`,
1693
- minLength: `Ne sme biti krajši od {limit} znakov`,
1694
- minimum: `Naj bo {comparison} {limit}`,
1695
- formatMinimum: `Naj bo {comparison} {limit}`,
1696
- maximum: `Naj bo {comparison} {limit}`,
1697
- formatMaximum: `Naj bo {comparison} {limit}`,
1698
- maxItems: `Ne sme imeti več kot {limit} artiklov`,
1699
- minItems: `Ne sme imeti manj kot {limit} artiklov`,
1700
- maxProperties: `Ne sme imeti več kot {limit} lastnosti`,
1701
- minProperties: `Ne sme imeti manj kot {limit} lastnosti`,
1702
- multipleOf: `Mora biti večkratnik od {multipleOf}`,
1703
- not: `Ne sme biti veljaven po shemi v "not"`,
1704
- oneOf: `Naj ustreza natančno eni shemi v "oneOf"`,
1705
- pattern: `Naj se ujema z vzorcem "{pattern}"`,
1706
- uniqueItems: `Ne bi smel imeti dvojnikov (items ## {j} in {i} so identični)`,
1707
- custom: `Naj ustreza formatu`,
1708
- propertyNames: `Ime artikla "{propertyName}" je neveljavno`,
1709
- patternRequired: `Mora imeti vzorec ujemanja lastnosti "{missingPattern}"`,
1710
- switch: `Mora prestati "switch" validacijo ključne besede, primer {caseIndex} ne uspe`,
1711
- const: `Naj bo enako konstanti`,
1712
- contains: `Naj vsebuje veljaven artikel`,
1713
- formatExclusiveMaximum: `formatExclusiveMaximum naj bo boolean`,
1714
- formatExclusiveMinimum: `formatExclusiveMinimum naj bo boolean`,
1715
- if: `Naj se ujema s shemo "{failingKeyword}"`
1716
- }
1717
- },
1718
- onboarding: {
1719
- skip: `Preskoči`,
1720
- prev: `Prejšnje`,
1721
- next: `Naslednji`,
1722
- done: `Končano`
1304
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseApi, deps: [{ token: Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
1305
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseApi }); }
1306
+ }
1307
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseApi, decorators: [{
1308
+ type: Injectable
1309
+ }], ctorParameters: () => [{ type: i0.Injector, decorators: [{
1310
+ type: Inject,
1311
+ args: [Injector]
1312
+ }] }] });
1313
+ const paramKey = `__api_params`;
1314
+ function setParam(target, key = paramKey) {
1315
+ let params = target[key];
1316
+ if (typeof params === 'undefined') {
1317
+ params = target[key] = {};
1723
1318
  }
1724
- };
1319
+ return params;
1320
+ }
1321
+ /**
1322
+ * 默认基准URL
1323
+ * - 有效范围:类
1324
+ */
1325
+ function BaseUrl(url) {
1326
+ return function (target) {
1327
+ const params = setParam(target.prototype);
1328
+ params.baseUrl = url;
1329
+ return target;
1330
+ };
1331
+ }
1332
+ /**
1333
+ * 默认 `headers`
1334
+ * - 有效范围:类
1335
+ */
1336
+ function BaseHeaders(headers) {
1337
+ return function (target) {
1338
+ const params = setParam(target.prototype);
1339
+ params.baseHeaders = headers;
1340
+ return target;
1341
+ };
1342
+ }
1343
+ function makeParam(paramName) {
1344
+ return function (key) {
1345
+ return function (target, propertyKey, index) {
1346
+ const params = setParam(setParam(target), propertyKey);
1347
+ let tParams = params[paramName];
1348
+ if (typeof tParams === 'undefined') {
1349
+ tParams = params[paramName] = [];
1350
+ }
1351
+ tParams.push({
1352
+ key,
1353
+ index
1354
+ });
1355
+ };
1356
+ };
1357
+ }
1358
+ /**
1359
+ * URL路由参数
1360
+ * - 有效范围:方法参数
1361
+ */
1362
+ const Path = makeParam('path');
1363
+ /**
1364
+ * URL 参数 `QueryString`
1365
+ * - 有效范围:方法参数
1366
+ */
1367
+ const Query = makeParam('query');
1368
+ /**
1369
+ * 参数 `Body`
1370
+ * - 有效范围:方法参数
1371
+ */
1372
+ const Body = makeParam('body')();
1373
+ /**
1374
+ * 参数 `headers`
1375
+ * - 有效范围:方法参数
1376
+ * - 合并 `BaseHeaders`
1377
+ */
1378
+ const Headers = makeParam('headers');
1379
+ /**
1380
+ * Request Payload
1381
+ * - Supported body (like`POST`, `PUT`) as a body data, equivalent to `@Body`
1382
+ * - Not supported body (like `GET`, `DELETE` etc) as a `QueryString`
1383
+ */
1384
+ const Payload = makeParam('payload')();
1385
+ function getValidArgs(data, key, args) {
1386
+ if (!data[key] || !Array.isArray(data[key]) || data[key].length <= 0) {
1387
+ return undefined;
1388
+ }
1389
+ return args[data[key][0].index];
1390
+ }
1391
+ function genBody(data, payload) {
1392
+ if (Array.isArray(data) || Array.isArray(payload)) {
1393
+ return Object.assign([], data, payload);
1394
+ }
1395
+ return { ...data, ...payload };
1396
+ }
1397
+ function makeMethod(method) {
1398
+ return function (url = '', options) {
1399
+ return (_target, targetKey, descriptor) => {
1400
+ descriptor.value = function (...args) {
1401
+ options = options || {};
1402
+ const injector = this.injector;
1403
+ const http = injector.get(_HttpClient, null);
1404
+ if (http == null) {
1405
+ throw new TypeError(`Not found '_HttpClient', You can import 'AlainThemeModule' && 'HttpClientModule' in your root module.`);
1406
+ }
1407
+ const baseData = setParam(this);
1408
+ const data = setParam(baseData, targetKey);
1409
+ let requestUrl = url || '';
1410
+ requestUrl = [baseData.baseUrl || '', requestUrl.startsWith('/') ? requestUrl.substring(1) : requestUrl].join('/');
1411
+ // fix last split
1412
+ if (requestUrl.length > 1 && requestUrl.endsWith('/')) {
1413
+ requestUrl = requestUrl.substring(0, requestUrl.length - 1);
1414
+ }
1415
+ if (options.acl) {
1416
+ const aclSrv = injector.get(ACLService, null);
1417
+ if (aclSrv && !aclSrv.can(options.acl)) {
1418
+ return throwError(() => ({
1419
+ url: requestUrl,
1420
+ status: 401,
1421
+ statusText: `From Http Decorator`
1422
+ }));
1423
+ }
1424
+ delete options.acl;
1425
+ }
1426
+ requestUrl = requestUrl.replace(/::/g, '^^');
1427
+ (data.path || [])
1428
+ .filter(w => typeof args[w.index] !== 'undefined')
1429
+ .forEach((i) => {
1430
+ requestUrl = requestUrl.replace(new RegExp(`:${i.key}`, 'g'), encodeURIComponent(args[i.index]));
1431
+ });
1432
+ requestUrl = requestUrl.replace(/\^\^/g, `:`);
1433
+ const params = (data.query || []).reduce((p, i) => {
1434
+ p[i.key] = args[i.index];
1435
+ return p;
1436
+ }, {});
1437
+ const headers = (data.headers || []).reduce((p, i) => {
1438
+ p[i.key] = args[i.index];
1439
+ return p;
1440
+ }, {});
1441
+ if (method === 'FORM') {
1442
+ headers['content-type'] = 'application/x-www-form-urlencoded';
1443
+ }
1444
+ const payload = getValidArgs(data, 'payload', args);
1445
+ const supportedBody = ['POST', 'PUT', 'PATCH', 'DELETE'].some(v => v === method);
1446
+ return http.request(method, requestUrl, {
1447
+ body: supportedBody ? genBody(getValidArgs(data, 'body', args), payload) : null,
1448
+ params: !supportedBody ? { ...params, ...payload } : params,
1449
+ headers: { ...baseData.baseHeaders, ...headers },
1450
+ ...options
1451
+ });
1452
+ };
1453
+ return descriptor;
1454
+ };
1455
+ };
1456
+ }
1457
+ /**
1458
+ * `OPTIONS` 请求
1459
+ * - 有效范围:方法
1460
+ */
1461
+ const OPTIONS = makeMethod('OPTIONS');
1462
+ /**
1463
+ * `GET` 请求
1464
+ * - 有效范围:方法
1465
+ */
1466
+ const GET = makeMethod('GET');
1467
+ /**
1468
+ * `POST` 请求
1469
+ * - 有效范围:方法
1470
+ */
1471
+ const POST = makeMethod('POST');
1472
+ /**
1473
+ * `DELETE` 请求
1474
+ * - 有效范围:方法
1475
+ */
1476
+ const DELETE = makeMethod('DELETE');
1477
+ /**
1478
+ * `PUT` 请求
1479
+ * - 有效范围:方法
1480
+ */
1481
+ const PUT = makeMethod('PUT');
1482
+ /**
1483
+ * `HEAD` 请求
1484
+ * - 有效范围:方法
1485
+ */
1486
+ const HEAD = makeMethod('HEAD');
1487
+ /**
1488
+ * `PATCH` 请求
1489
+ * - 有效范围:方法
1490
+ */
1491
+ const PATCH = makeMethod('PATCH');
1492
+ /**
1493
+ * `JSONP` 请求
1494
+ * - 有效范围:方法
1495
+ */
1496
+ const JSONP = makeMethod('JSONP');
1497
+ /**
1498
+ * `FORM` 请求
1499
+ * - 有效范围:方法
1500
+ */
1501
+ const FORM = makeMethod('FORM');
1725
1502
 
1726
- var frFR = {
1727
- abbr: 'fr-FR',
1503
+ /**
1504
+ * Whether to customize the handling of exception messages
1505
+ *
1506
+ * 是否自定义处理异常消息
1507
+ *
1508
+ * @example
1509
+ * this.http.post(`login`, {
1510
+ * name: 'cipchk', pwd: '123456'
1511
+ * }, {
1512
+ * context: new HttpContext()
1513
+ * .set(ALLOW_ANONYMOUS, true)
1514
+ * .set(CUSTOM_ERROR, true)
1515
+ * }).subscribe({
1516
+ * next: console.log,
1517
+ * error: console.log
1518
+ * });
1519
+ */
1520
+ const CUSTOM_ERROR = new HttpContextToken(() => false);
1521
+ /**
1522
+ * Whether to ignore API prefixes
1523
+ *
1524
+ * 是否忽略API前缀
1525
+ *
1526
+ * @example
1527
+ * // When environment.api.baseUrl set '/api'
1528
+ *
1529
+ * this.http.get(`/path`) // Request Url: /api/path
1530
+ * this.http.get(`/path`, { context: new HttpContext().set(IGNORE_BASE_URL, true) }) // Request Url: /path
1531
+ */
1532
+ const IGNORE_BASE_URL = new HttpContextToken(() => false);
1533
+ /**
1534
+ * Whether to return raw response body
1535
+ *
1536
+ * 是否原样返回请求Body
1537
+ */
1538
+ const RAW_BODY = new HttpContextToken(() => false);
1539
+
1540
+ const DELON_LOCALE = new InjectionToken('delon-locale');
1541
+
1542
+ var zhCN = {
1543
+ abbr: 'zh-CN',
1728
1544
  exception: {
1729
- 403: `Désolé, vous n'avez pas accès à cette page`,
1730
- 404: `Désolé, la page que vous avez visitée n'existe pas`,
1731
- 500: `Désolé, le serveur signale une erreur`,
1732
- backToHome: "Retour à l'accueil"
1545
+ 403: '抱歉,你无权访问该页面',
1546
+ 404: '抱歉,你访问的页面不存在',
1547
+ 500: '抱歉,服务器出错了',
1548
+ backToHome: '返回首页'
1733
1549
  },
1734
1550
  noticeIcon: {
1735
- emptyText: 'Pas de données',
1736
- clearText: 'Effacer'
1551
+ emptyText: '暂无数据',
1552
+ clearText: '清空'
1737
1553
  },
1738
1554
  reuseTab: {
1739
- close: "Fermer l'onglet",
1740
- closeOther: 'Fermer les autres onglets',
1741
- closeRight: 'Fermer les onglets à droite',
1742
- refresh: 'Rafraîchir'
1555
+ close: '关闭标签',
1556
+ closeOther: '关闭其它标签',
1557
+ closeRight: '关闭右侧标签',
1558
+ refresh: '刷新'
1743
1559
  },
1744
1560
  tagSelect: {
1745
- expand: 'Etendre',
1746
- collapse: 'Effondrer'
1561
+ expand: '展开',
1562
+ collapse: '收起'
1747
1563
  },
1748
1564
  miniProgress: {
1749
- target: 'Cible: '
1565
+ target: '目标值:'
1750
1566
  },
1751
1567
  st: {
1752
- total: '{{range[0]}} - {{range[1]}} de {{total}}',
1753
- filterConfirm: 'OK',
1754
- filterReset: 'Réinitialiser'
1568
+ total: ' {{total}} ',
1569
+ filterConfirm: '确定',
1570
+ filterReset: '重置'
1755
1571
  },
1756
1572
  sf: {
1757
- submit: 'Soumettre',
1758
- reset: 'Réinitialiser',
1759
- search: 'Rechercher',
1760
- edit: 'Sauvegarder',
1761
- addText: 'Ajouter',
1762
- removeText: 'Supprimer',
1763
- checkAllText: 'Cochez toutes',
1573
+ submit: '提交',
1574
+ reset: '重置',
1575
+ search: '搜索',
1576
+ edit: '保存',
1577
+ addText: '添加',
1578
+ removeText: '移除',
1579
+ checkAllText: '全选',
1764
1580
  error: {
1765
- 'false schema': `Boolean schema is false`,
1766
- $ref: `Can't resolve reference {ref}`,
1767
- additionalItems: `Should not have more than {limit} item`,
1768
- additionalProperties: `Should not have additional properties`,
1769
- anyOf: `Should match some schema in "anyOf"`,
1770
- dependencies: `should have property {deps} when property {property} is present`,
1771
- enum: `Should be equal to one of predefined values`,
1772
- format: `Should match format "{format}"`,
1773
- type: `Should be {type}`,
1774
- required: `Required`,
1775
- maxLength: `Should not be longer than {limit} character`,
1776
- minLength: `Should not be shorter than {limit} character`,
1777
- minimum: `Should be {comparison} {limit}`,
1778
- formatMinimum: `Should be {comparison} {limit}`,
1779
- maximum: `Should be {comparison} {limit}`,
1780
- formatMaximum: `Should be {comparison} {limit}`,
1781
- maxItems: `Should not have more than {limit} item`,
1782
- minItems: `Should not have less than {limit} item`,
1783
- maxProperties: `Should not have more than {limit} property`,
1784
- minProperties: `Should not have less than {limit} property`,
1785
- multipleOf: `Should be a multiple of {multipleOf}`,
1786
- not: `Should not be valid according to schema in "not"`,
1787
- oneOf: `Should match exactly one schema in "oneOf"`,
1788
- pattern: `Should match pattern "{pattern}"`,
1789
- uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
1790
- custom: `Should match format`,
1791
- propertyNames: `Property name "{propertyName}" is invalid`,
1792
- patternRequired: `Should have property matching pattern "{missingPattern}"`,
1793
- switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
1794
- const: `Should be equal to constant`,
1795
- contains: `Should contain a valid item`,
1796
- formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
1797
- formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
1798
- if: `Should match "{failingKeyword}" schema`
1581
+ 'false schema': `布尔模式出错`,
1582
+ $ref: `无法找到引用{ref}`,
1583
+ additionalItems: `不允许超过{limit}个元素`,
1584
+ additionalProperties: `不允许有额外的属性`,
1585
+ anyOf: `数据应为 anyOf 所指定的其中一个`,
1586
+ dependencies: `应当拥有属性{property}的依赖属性{deps}`,
1587
+ enum: `应当是预设定的枚举值之一`,
1588
+ format: `格式不正确`,
1589
+ type: `类型应当是 {type}`,
1590
+ required: `必填项`,
1591
+ maxLength: `至多 {limit} 个字符`,
1592
+ minLength: `至少 {limit} 个字符以上`,
1593
+ minimum: `必须 {comparison}{limit}`,
1594
+ formatMinimum: `必须 {comparison}{limit}`,
1595
+ maximum: `必须 {comparison}{limit}`,
1596
+ formatMaximum: `必须 {comparison}{limit}`,
1597
+ maxItems: `不应多于 {limit} 个项`,
1598
+ minItems: `不应少于 {limit} 个项`,
1599
+ maxProperties: `不应多于 {limit} 个属性`,
1600
+ minProperties: `不应少于 {limit} 个属性`,
1601
+ multipleOf: `应当是 {multipleOf} 的整数倍`,
1602
+ not: `不应当匹配 "not" schema`,
1603
+ oneOf: `只能匹配一个 "oneOf" 中的 schema`,
1604
+ pattern: `数据格式不正确`,
1605
+ uniqueItems: `不应当含有重复项 ( {j} 项与第 {i} 项是重复的)`,
1606
+ custom: `格式不正确`,
1607
+ propertyNames: `属性名 "{propertyName}" 无效`,
1608
+ patternRequired: `应当有属性匹配模式 {missingPattern}`,
1609
+ switch: `由于 {caseIndex} 失败,未通过 "switch" 校验`,
1610
+ const: `应当等于常量`,
1611
+ contains: `应当包含一个有效项`,
1612
+ formatExclusiveMaximum: `formatExclusiveMaximum 应当是布尔值`,
1613
+ formatExclusiveMinimum: `formatExclusiveMinimum 应当是布尔值`,
1614
+ if: `应当匹配模式 "{failingKeyword}"`
1799
1615
  }
1800
1616
  },
1801
1617
  onboarding: {
1802
- skip: `Passer`,
1803
- prev: `Précédent`,
1804
- next: `Suivant`,
1805
- done: `Terminé`
1618
+ skip: `跳过`,
1619
+ prev: `上一项`,
1620
+ next: `下一项`,
1621
+ done: `完成`
1806
1622
  }
1807
1623
  };
1808
1624
 
1809
- var esES = {
1810
- abbr: 'es-ES',
1625
+ class DelonLocaleService {
1626
+ constructor(locale) {
1627
+ this._locale = zhCN;
1628
+ this.change$ = new BehaviorSubject(this._locale);
1629
+ this.setLocale(locale || zhCN);
1630
+ }
1631
+ get change() {
1632
+ return this.change$.asObservable();
1633
+ }
1634
+ setLocale(locale) {
1635
+ if (this._locale && this._locale.abbr === locale.abbr) {
1636
+ return;
1637
+ }
1638
+ this._locale = locale;
1639
+ this.change$.next(locale);
1640
+ }
1641
+ get locale() {
1642
+ return this._locale;
1643
+ }
1644
+ getData(path) {
1645
+ return (this._locale[path] || {});
1646
+ }
1647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DelonLocaleService, deps: [{ token: DELON_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable }); }
1648
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DelonLocaleService }); }
1649
+ }
1650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DelonLocaleService, decorators: [{
1651
+ type: Injectable
1652
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
1653
+ type: Inject,
1654
+ args: [DELON_LOCALE]
1655
+ }] }] });
1656
+ function DELON_LOCALE_SERVICE_PROVIDER_FACTORY(exist, locale) {
1657
+ return exist || new DelonLocaleService(locale);
1658
+ }
1659
+ const DELON_LOCALE_SERVICE_PROVIDER = {
1660
+ provide: DelonLocaleService,
1661
+ useFactory: DELON_LOCALE_SERVICE_PROVIDER_FACTORY,
1662
+ deps: [[new Optional(), new SkipSelf(), DelonLocaleService], DELON_LOCALE]
1663
+ };
1664
+
1665
+ class DelonLocaleModule {
1666
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DelonLocaleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1667
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: DelonLocaleModule }); }
1668
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DelonLocaleModule, providers: [{ provide: DELON_LOCALE, useValue: zhCN }, DELON_LOCALE_SERVICE_PROVIDER] }); }
1669
+ }
1670
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DelonLocaleModule, decorators: [{
1671
+ type: NgModule,
1672
+ args: [{
1673
+ providers: [{ provide: DELON_LOCALE, useValue: zhCN }, DELON_LOCALE_SERVICE_PROVIDER]
1674
+ }]
1675
+ }] });
1676
+
1677
+ var enUS = {
1678
+ abbr: 'en-US',
1811
1679
  exception: {
1812
- 403: `Lo sentimos, no tiene acceso a esta página`,
1813
- 404: `Lo sentimos, la página que ha visitado no existe`,
1814
- 500: `Lo siento, error interno del servidor `,
1815
- backToHome: 'Volver a la página de inicio'
1680
+ 403: `Sorry, you don't have access to this page`,
1681
+ 404: `Sorry, the page you visited does not exist`,
1682
+ 500: `Sorry, the server is reporting an error`,
1683
+ backToHome: 'Back To Home'
1816
1684
  },
1817
1685
  noticeIcon: {
1818
- emptyText: 'No hay datos',
1819
- clearText: 'Limpiar'
1686
+ emptyText: 'No data',
1687
+ clearText: 'Clear'
1820
1688
  },
1821
1689
  reuseTab: {
1822
- close: 'Cerrar pestaña',
1823
- closeOther: 'Cerrar otras pestañas',
1824
- closeRight: 'Cerrar pestañas a la derecha',
1825
- refresh: 'Actualizar'
1690
+ close: 'Close tab',
1691
+ closeOther: 'Close other tabs',
1692
+ closeRight: 'Close tabs to right',
1693
+ refresh: 'Refresh'
1826
1694
  },
1827
1695
  tagSelect: {
1828
- expand: 'Expandir',
1829
- collapse: 'Ocultar'
1696
+ expand: 'Expand',
1697
+ collapse: 'Collapse'
1830
1698
  },
1831
1699
  miniProgress: {
1832
1700
  target: 'Target: '
1833
1701
  },
1834
1702
  st: {
1835
- total: '{{rango[0]}} - {{rango[1]}} de {{total}}',
1836
- filterConfirm: 'Aceptar',
1837
- filterReset: 'Reiniciar'
1703
+ total: '{{range[0]}} - {{range[1]}} of {{total}}',
1704
+ filterConfirm: 'OK',
1705
+ filterReset: 'Reset'
1838
1706
  },
1839
1707
  sf: {
1840
1708
  submit: 'Submit',
1841
- reset: 'Reiniciar',
1842
- search: 'Buscar',
1843
- edit: 'Guardar',
1844
- addText: 'Añadir',
1845
- removeText: 'Eliminar',
1846
- checkAllText: 'Comprobar todo',
1709
+ reset: 'Reset',
1710
+ search: 'Search',
1711
+ edit: 'Save',
1712
+ addText: 'Add',
1713
+ removeText: 'Remove',
1714
+ checkAllText: 'Check all',
1847
1715
  error: {
1848
1716
  'false schema': `Boolean schema is false`,
1849
1717
  $ref: `Can't resolve reference {ref}`,
@@ -1882,755 +1750,904 @@ var esES = {
1882
1750
  }
1883
1751
  },
1884
1752
  onboarding: {
1885
- skip: `Omitir`,
1886
- prev: `Previo`,
1887
- next: `Siguiente`,
1888
- done: `Terminado`
1753
+ skip: `Skip`,
1754
+ prev: `Prev`,
1755
+ next: `Next`,
1756
+ done: `Done`
1889
1757
  }
1890
1758
  };
1891
1759
 
1892
- var itIT = {
1893
- abbr: 'it-IT',
1760
+ var zhTW = {
1761
+ abbr: 'zh-TW',
1894
1762
  exception: {
1895
- 403: `Spiacenti, non hai accesso a questa pagina`,
1896
- 404: `Spiacenti, la pagina che hai visitato non esiste`,
1897
- 500: `Spiacenti, il server sta riscontrando un errore`,
1898
- backToHome: 'Torna alla Home'
1763
+ 403: '抱歉,你無權訪問該頁面',
1764
+ 404: '抱歉,你訪問的頁面不存在',
1765
+ 500: '抱歉,服務器出錯了',
1766
+ backToHome: '返回首頁'
1899
1767
  },
1900
1768
  noticeIcon: {
1901
- emptyText: 'Nessun dato',
1902
- clearText: 'Cancella memoria locale'
1769
+ emptyText: '暫無數據',
1770
+ clearText: '清空'
1903
1771
  },
1904
1772
  reuseTab: {
1905
- close: 'Chiudi la scheda',
1906
- closeOther: 'Chiudi le altre schede',
1907
- closeRight: 'Chiudi le schede a destra',
1908
- refresh: 'Aggiorna'
1773
+ close: '關閉標簽',
1774
+ closeOther: '關閉其它標簽',
1775
+ closeRight: '關閉右側標簽',
1776
+ refresh: '刷新'
1909
1777
  },
1910
1778
  tagSelect: {
1911
- expand: 'Espandi',
1912
- collapse: 'Comprimi'
1779
+ expand: '展開',
1780
+ collapse: '收起'
1913
1781
  },
1914
1782
  miniProgress: {
1915
- target: 'Obiettivo: '
1783
+ target: '目標值:'
1916
1784
  },
1917
1785
  st: {
1918
- total: '{{range[0]}} - {{range[1]}} di {{total}}',
1919
- filterConfirm: 'OK',
1920
- filterReset: 'Reimposta'
1786
+ total: ' {{total}} ',
1787
+ filterConfirm: '確定',
1788
+ filterReset: '重置'
1921
1789
  },
1922
1790
  sf: {
1923
- submit: 'Invia',
1924
- reset: 'Reimposta',
1925
- search: 'Cerca',
1926
- edit: 'Salva',
1927
- addText: 'Aggiungi',
1928
- removeText: 'Rimuovi',
1929
- checkAllText: 'Seleziona tutto',
1791
+ submit: '提交',
1792
+ reset: '重置',
1793
+ search: '搜索',
1794
+ edit: '保存',
1795
+ addText: '添加',
1796
+ removeText: '移除',
1797
+ checkAllText: '全選',
1930
1798
  error: {
1931
- 'false schema': `Lo schema booleano è falso`,
1932
- $ref: `Impossibile risolvere il riferimento {ref}`,
1933
- additionalItems: `Non deve avere più di {limit} elementi`,
1934
- additionalProperties: `Non deve avere proprietà aggiuntive`,
1935
- anyOf: `Deve corrispondere a uno schema in "anyOf"`,
1936
- dependencies: `Deve avere una proprietà {deps} quando è presente la proprietà {property}`,
1937
- enum: `Deve essere uguale a uno dei valori predefiniti`,
1938
- format: `Deve corrispondere al formato "{format}"`,
1939
- type: `Deve essere {type}`,
1940
- required: `Obbligatorio`,
1941
- maxLength: `Non deve essere superiore a {limit} caratteri`,
1942
- minLength: `Non deve essere superiore a {limit} caratteri`,
1943
- minimum: `Deve essere {comparison} {limit}`,
1944
- formatMinimum: `Deve essere {comparison} {limit}`,
1945
- maximum: `Deve essere {comparison} {limit}`,
1946
- formatMaximum: `Deve essere {comparison} {limit}`,
1947
- maxItems: `Non deve avere più di {limit} elementi`,
1948
- minItems: `Non deve avere meno di {limit} elementi`,
1949
- maxProperties: `Non deve avere più di {limit} proprietà`,
1950
- minProperties: `Non deve avere meno di {limit} proprietà`,
1951
- multipleOf: `Deve essere un multiplo di {multipleOf}`,
1952
- not: `Non deve essere valido secondo lo schema in "not"`,
1953
- oneOf: `Deve corrispondere esattamente a uno schema in "oneOf"`,
1954
- pattern: `Deve corrispondere al modello "{pattern}"`,
1955
- uniqueItems: `Non deve avere elementi duplicati (gli elementi ## {j} e {i} sono identici)`,
1956
- custom: `Deve corrispondere al formato "{format}"`,
1957
- propertyNames: `Il nome della proprietà "{propertyName}" non è valido`,
1958
- patternRequired: `Deve avere una proprietà corrispondete al modello "{missingPattern}"`,
1959
- switch: `Deve superare la convalida della parola chiave "switch", il caso {caseIndex} non è riuscito`,
1960
- const: `Deve essere uguale alla costante`,
1961
- contains: `Deve contenere un elemento valido`,
1962
- formatExclusiveMaximum: `formatExclusiveMaximum deve essere booleano`,
1963
- formatExclusiveMinimum: `formatExclusiveMaximum deve essere booleano`,
1964
- if: `Deve corrispondere allo schema "{failingKeyword}"`
1965
- }
1966
- },
1967
- onboarding: {
1968
- skip: `Salta`,
1969
- prev: `Precedente`,
1970
- next: `Successivo`,
1971
- done: `Fatto`
1972
- }
1973
- };
1974
-
1975
- const CLS_DRAG = 'MODAL-DRAG';
1976
- /**
1977
- * 对话框辅助类
1978
- */
1979
- class ModalHelper {
1980
- constructor(srv, drag, doc) {
1981
- this.srv = srv;
1982
- this.drag = drag;
1983
- this.document = doc;
1984
- }
1985
- createDragRef(options, wrapCls) {
1986
- const wrapEl = this.document.querySelector(wrapCls);
1987
- const modalEl = wrapEl.firstChild;
1988
- const handelEl = options.handleCls ? wrapEl.querySelector(options.handleCls) : null;
1989
- if (handelEl) {
1990
- handelEl.classList.add(`${CLS_DRAG}-HANDLE`);
1991
- }
1992
- return this.drag
1993
- .createDrag(handelEl ?? modalEl)
1994
- .withHandles([handelEl ?? modalEl])
1995
- .withBoundaryElement(wrapEl)
1996
- .withRootElement(modalEl);
1997
- }
1998
- /**
1999
- * 构建一个对话框
2000
- *
2001
- * @param comp 组件
2002
- * @param params 组件参数
2003
- * @param options 额外参数
2004
- *
2005
- * @example
2006
- * this.modalHelper.create(FormEditComponent, { i }).subscribe(res => this.load());
2007
- * // 对于组件的成功&关闭的处理说明
2008
- * // 成功,其中 `nzModalRef` 指目标组件在构造函数 `NzModalRef` 变量名
2009
- * this.nzModalRef.close(data);
2010
- * this.nzModalRef.close();
2011
- * // 关闭
2012
- * this.nzModalRef.destroy();
2013
- */
2014
- create(comp, params, options) {
2015
- options = deepMerge({
2016
- size: 'lg',
2017
- exact: true,
2018
- includeTabs: false
2019
- }, options);
2020
- return new Observable((observer) => {
2021
- const { size, includeTabs, modalOptions, drag, useNzData } = options;
2022
- let cls = [];
2023
- let width = '';
2024
- if (size) {
2025
- if (typeof size === 'number') {
2026
- width = `${size}px`;
2027
- }
2028
- else if (['sm', 'md', 'lg', 'xl'].includes(size)) {
2029
- cls.push(`modal-${size}`);
2030
- }
2031
- else {
2032
- width = size;
2033
- }
2034
- }
2035
- if (includeTabs) {
2036
- cls.push(`modal-include-tabs`);
2037
- }
2038
- if (modalOptions && modalOptions.nzWrapClassName) {
2039
- cls.push(modalOptions.nzWrapClassName);
2040
- delete modalOptions.nzWrapClassName;
2041
- }
2042
- let dragOptions;
2043
- let dragWrapCls = `${CLS_DRAG}-${+new Date()}`;
2044
- let dragRef;
2045
- if (drag != null && drag !== false) {
2046
- dragOptions = {
2047
- handleCls: `.modal-header, .ant-modal-title`,
2048
- ...(typeof drag === 'object' ? drag : {})
2049
- };
2050
- cls.push(CLS_DRAG, dragWrapCls);
2051
- }
2052
- const subject = this.srv.create({
2053
- nzWrapClassName: cls.join(' '),
2054
- nzContent: comp,
2055
- nzWidth: width ? width : undefined,
2056
- nzFooter: null,
2057
- nzData: params,
2058
- ...modalOptions
2059
- });
2060
- // 保留 nzComponentParams 原有风格,但依然可以通过 @Inject(NZ_MODAL_DATA) 获取
2061
- if (useNzData !== true) {
2062
- Object.assign(subject.componentInstance, params);
2063
- }
2064
- subject.afterOpen
2065
- .pipe(take(1), filter(() => dragOptions != null))
2066
- .subscribe(() => {
2067
- dragRef = this.createDragRef(dragOptions, `.${dragWrapCls}`);
2068
- });
2069
- subject.afterClose.pipe(take(1)).subscribe((res) => {
2070
- if (options.exact === true) {
2071
- if (res != null) {
2072
- observer.next(res);
2073
- }
2074
- }
2075
- else {
2076
- observer.next(res);
2077
- }
2078
- observer.complete();
2079
- dragRef?.dispose();
2080
- });
2081
- });
2082
- }
2083
- /**
2084
- * 构建静态框,点击蒙层不允许关闭
2085
- *
2086
- * @param comp 组件
2087
- * @param params 组件参数
2088
- * @param options 额外参数
2089
- *
2090
- * @example
2091
- * this.modalHelper.open(FormEditComponent, { i }).subscribe(res => this.load());
2092
- * // 对于组件的成功&关闭的处理说明
2093
- * // 成功,其中 `nzModalRef` 指目标组件在构造函数 `NzModalRef` 变量名
2094
- * this.nzModalRef.close(data);
2095
- * this.nzModalRef.close();
2096
- * // 关闭
2097
- * this.nzModalRef.destroy();
2098
- */
2099
- createStatic(comp, params, options) {
2100
- const modalOptions = {
2101
- nzMaskClosable: false,
2102
- ...(options && options.modalOptions)
2103
- };
2104
- return this.create(comp, params, { ...options, modalOptions });
1799
+ 'false schema': `佈爾模式出錯`,
1800
+ $ref: `無法找到引用{ref}`,
1801
+ additionalItems: `不允許超過{ref}`,
1802
+ additionalProperties: `不允許有額外的屬性`,
1803
+ anyOf: `數據應為 anyOf 所指定的其中一個`,
1804
+ dependencies: `應當擁有屬性{property}的依賴屬性{deps}`,
1805
+ enum: `應當是預設定的枚舉值之一`,
1806
+ format: `格式不正確`,
1807
+ type: `類型應當是 {type}`,
1808
+ required: `必填項`,
1809
+ maxLength: `至多 {limit} 個字符`,
1810
+ minLength: `至少 {limit} 個字符以上`,
1811
+ minimum: `必須 {comparison}{limit}`,
1812
+ formatMinimum: `必須 {comparison}{limit}`,
1813
+ maximum: `必須 {comparison}{limit}`,
1814
+ formatMaximum: `必須 {comparison}{limit}`,
1815
+ maxItems: `不應多於 {limit} 個項`,
1816
+ minItems: `不應少於 {limit} 個項`,
1817
+ maxProperties: `不應多於 {limit} 個屬性`,
1818
+ minProperties: `不應少於 {limit} 個屬性`,
1819
+ multipleOf: `應當是 {multipleOf} 的整數倍`,
1820
+ not: `不應當匹配 "not" schema`,
1821
+ oneOf: `隻能匹配一個 "oneOf" 中的 schema`,
1822
+ pattern: `數據格式不正確`,
1823
+ uniqueItems: `不應當含有重複項 ( {j} 項與第 {i} 項是重複的)`,
1824
+ custom: `格式不正確`,
1825
+ propertyNames: `屬性名 "{propertyName}" 無效`,
1826
+ patternRequired: `應當有屬性匹配模式 {missingPattern}`,
1827
+ switch: `由於 {caseIndex} 失敗,未通過 "switch" 校驗`,
1828
+ const: `應當等於常量`,
1829
+ contains: `應當包含一個有效項`,
1830
+ formatExclusiveMaximum: `formatExclusiveMaximum 應當是佈爾值`,
1831
+ formatExclusiveMinimum: `formatExclusiveMinimum 應當是佈爾值`,
1832
+ if: `應當匹配模式 "{failingKeyword}"`
1833
+ }
1834
+ },
1835
+ onboarding: {
1836
+ skip: `跳過`,
1837
+ prev: `上一項`,
1838
+ next: `下一項`,
1839
+ done: `完成`
2105
1840
  }
2106
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ModalHelper, deps: [{ token: i1$5.NzModalService }, { token: i2.DragDrop }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
2107
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ModalHelper, providedIn: 'root' }); }
2108
- }
2109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: ModalHelper, decorators: [{
2110
- type: Injectable,
2111
- args: [{ providedIn: 'root' }]
2112
- }], ctorParameters: function () { return [{ type: i1$5.NzModalService }, { type: i2.DragDrop }, { type: undefined, decorators: [{
2113
- type: Inject,
2114
- args: [DOCUMENT]
2115
- }] }]; } });
1841
+ };
2116
1842
 
2117
- /**
2118
- * 抽屉辅助类
2119
- *
2120
- * **注意:** 构建结果都可被订阅,但永远都不会触发 `observer.error`
2121
- *
2122
- * @example
2123
- * this.drawerHelper.create('Edit', FormEditComponent, { i }).subscribe(res => this.load());
2124
- * // 对于组件的成功&关闭的处理说明
2125
- * // 成功
2126
- * this.NzDrawerRef.close(data);
2127
- * this.NzDrawerRef.close(true);
2128
- * // 关闭
2129
- * this.NzDrawerRef.close();
2130
- * this.NzDrawerRef.close(false);
2131
- */
2132
- class DrawerHelper {
2133
- get openDrawers() {
2134
- return this.parentDrawer ? this.parentDrawer.openDrawers : this.openDrawersAtThisLevel;
2135
- }
2136
- constructor(srv, parentDrawer) {
2137
- this.srv = srv;
2138
- this.parentDrawer = parentDrawer;
2139
- this.openDrawersAtThisLevel = [];
2140
- }
2141
- /**
2142
- * 构建一个抽屉
2143
- */
2144
- create(title, comp, params, options) {
2145
- options = deepMerge({
2146
- size: 'md',
2147
- footer: true,
2148
- footerHeight: 50,
2149
- exact: true,
2150
- drawerOptions: {
2151
- nzPlacement: 'right',
2152
- nzWrapClassName: ''
2153
- }
2154
- }, options);
2155
- return new Observable((observer) => {
2156
- const { size, footer, footerHeight, drawerOptions } = options;
2157
- const defaultOptions = {
2158
- nzContent: comp,
2159
- nzContentParams: params,
2160
- nzTitle: title
2161
- };
2162
- if (typeof size === 'number') {
2163
- defaultOptions[drawerOptions.nzPlacement === 'top' || drawerOptions.nzPlacement === 'bottom' ? 'nzHeight' : 'nzWidth'] = options.size;
2164
- }
2165
- else if (!drawerOptions.nzWidth) {
2166
- defaultOptions.nzWrapClassName = `${drawerOptions.nzWrapClassName} drawer-${options.size}`.trim();
2167
- delete drawerOptions.nzWrapClassName;
2168
- }
2169
- if (footer) {
2170
- // The 24 value is @drawer-body-padding
2171
- defaultOptions.nzBodyStyle = {
2172
- 'padding-bottom.px': footerHeight + 24
2173
- };
2174
- }
2175
- const ref = this.srv.create({ ...defaultOptions, ...drawerOptions });
2176
- this.openDrawers.push(ref);
2177
- const afterClose$ = ref.afterClose.subscribe((res) => {
2178
- if (options.exact === true) {
2179
- if (res != null) {
2180
- observer.next(res);
2181
- }
2182
- }
2183
- else {
2184
- observer.next(res);
2185
- }
2186
- observer.complete();
2187
- afterClose$.unsubscribe();
2188
- this.close(ref);
2189
- });
2190
- });
2191
- }
2192
- close(ref) {
2193
- const idx = this.openDrawers.indexOf(ref);
2194
- if (idx === -1)
2195
- return;
2196
- this.openDrawers.splice(idx, 1);
1843
+ var trTR = {
1844
+ abbr: 'tr-TR',
1845
+ exception: {
1846
+ 403: `Üzgünüz, bu sayfaya erişiminiz yok`,
1847
+ 404: `Maalesef bu sayfa mevcut değil`,
1848
+ 500: `Üzgünüz, sunucu hatası`,
1849
+ backToHome: `Ana Sayfa'ya geri dön`
1850
+ },
1851
+ noticeIcon: {
1852
+ emptyText: 'Veri yok',
1853
+ clearText: 'Temiz'
1854
+ },
1855
+ reuseTab: {
1856
+ close: 'Sekmeyi Kapat',
1857
+ closeOther: 'Diğer sekmeleri kapat',
1858
+ closeRight: 'Sağdaki sekmeleri kapat',
1859
+ refresh: 'täzele'
1860
+ },
1861
+ tagSelect: {
1862
+ expand: 'Genişlet',
1863
+ collapse: 'Daralt'
1864
+ },
1865
+ miniProgress: {
1866
+ target: 'Hedef: '
1867
+ },
1868
+ st: {
1869
+ total: '{{range[0]}} ile {{range[1]}} arasında {{total}}',
1870
+ filterConfirm: 'Tamam',
1871
+ filterReset: 'Sıfırla'
1872
+ },
1873
+ sf: {
1874
+ submit: 'Gönder',
1875
+ reset: 'Sıfırla',
1876
+ search: 'Ara',
1877
+ edit: 'Kaydet',
1878
+ addText: 'Ekle',
1879
+ removeText: 'Kaldır',
1880
+ checkAllText: 'Tümünü kontrol et',
1881
+ error: {
1882
+ 'false schema': `Boolean schema is false`,
1883
+ $ref: `Can't resolve reference {ref}`,
1884
+ additionalItems: `Should not have more than {limit} item`,
1885
+ additionalProperties: `Should not have additional properties`,
1886
+ anyOf: `Should match some schema in "anyOf"`,
1887
+ dependencies: `should have property {deps} when property {property} is present`,
1888
+ enum: `Should be equal to one of predefined values`,
1889
+ format: `Should match format "{format}"`,
1890
+ type: `Should be {type}`,
1891
+ required: `Required`,
1892
+ maxLength: `Should not be longer than {limit} character`,
1893
+ minLength: `Should not be shorter than {limit} character`,
1894
+ minimum: `Should be {comparison} {limit}`,
1895
+ formatMinimum: `Should be {comparison} {limit}`,
1896
+ maximum: `Should be {comparison} {limit}`,
1897
+ formatMaximum: `Should be {comparison} {limit}`,
1898
+ maxItems: `Should not have more than {limit} item`,
1899
+ minItems: `Should not have less than {limit} item`,
1900
+ maxProperties: `Should not have more than {limit} property`,
1901
+ minProperties: `Should not have less than {limit} property`,
1902
+ multipleOf: `Should be a multiple of {multipleOf}`,
1903
+ not: `Should not be valid according to schema in "not"`,
1904
+ oneOf: `Should match exactly one schema in "oneOf"`,
1905
+ pattern: `Should match pattern "{pattern}"`,
1906
+ uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
1907
+ custom: `Should match format`,
1908
+ propertyNames: `Property name "{propertyName}" is invalid`,
1909
+ patternRequired: `Should have property matching pattern "{missingPattern}"`,
1910
+ switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
1911
+ const: `Should be equal to constant`,
1912
+ contains: `Should contain a valid item`,
1913
+ formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
1914
+ formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
1915
+ if: `Should match "{failingKeyword}" schema`
1916
+ }
1917
+ },
1918
+ onboarding: {
1919
+ skip: `Atla`,
1920
+ prev: `Önceki`,
1921
+ next: `Sonraki`,
1922
+ done: `Bitti`
2197
1923
  }
2198
- closeAll() {
2199
- let i = this.openDrawers.length;
2200
- while (i--) {
2201
- this.openDrawers[i].close();
1924
+ };
1925
+
1926
+ var plPL = {
1927
+ abbr: 'pl-PL',
1928
+ exception: {
1929
+ 403: `Niestety, nie masz uprawnień do tej strony`,
1930
+ 404: `Niestety, ta strona nie istnieje`,
1931
+ 500: `Niestety, błąd serwera`,
1932
+ backToHome: 'Powróć do strony głównej'
1933
+ },
1934
+ noticeIcon: {
1935
+ emptyText: 'Brak danych',
1936
+ clearText: 'Wyczyść'
1937
+ },
1938
+ reuseTab: {
1939
+ close: 'Zamknij kartę',
1940
+ closeOther: 'Zamknij inne karty',
1941
+ closeRight: 'Zamknij karty po prawej',
1942
+ refresh: 'Refresh'
1943
+ },
1944
+ tagSelect: {
1945
+ expand: 'Rozszerz',
1946
+ collapse: 'Zmniejsz'
1947
+ },
1948
+ miniProgress: {
1949
+ target: 'Cel: '
1950
+ },
1951
+ st: {
1952
+ total: '{{range[0]}} - {{range[1]}} z {{total}}',
1953
+ filterConfirm: 'OK',
1954
+ filterReset: 'Wyczyść'
1955
+ },
1956
+ sf: {
1957
+ submit: 'Wyślij',
1958
+ reset: 'Resetuj',
1959
+ search: 'Szukaj',
1960
+ edit: 'Zapisz',
1961
+ addText: 'Dodaj',
1962
+ removeText: 'Usuń',
1963
+ checkAllText: 'Zaznacz wszystkie',
1964
+ error: {
1965
+ 'false schema': `Boolean schema is false`,
1966
+ $ref: `Can't resolve reference {ref}`,
1967
+ additionalItems: `Should not have more than {limit} item`,
1968
+ additionalProperties: `Should not have additional properties`,
1969
+ anyOf: `Should match some schema in "anyOf"`,
1970
+ dependencies: `should have property {deps} when property {property} is present`,
1971
+ enum: `Should be equal to one of predefined values`,
1972
+ format: `Should match format "{format}"`,
1973
+ type: `Should be {type}`,
1974
+ required: `Required`,
1975
+ maxLength: `Should not be longer than {limit} character`,
1976
+ minLength: `Should not be shorter than {limit} character`,
1977
+ minimum: `Should be {comparison} {limit}`,
1978
+ formatMinimum: `Should be {comparison} {limit}`,
1979
+ maximum: `Should be {comparison} {limit}`,
1980
+ formatMaximum: `Should be {comparison} {limit}`,
1981
+ maxItems: `Should not have more than {limit} item`,
1982
+ minItems: `Should not have less than {limit} item`,
1983
+ maxProperties: `Should not have more than {limit} property`,
1984
+ minProperties: `Should not have less than {limit} property`,
1985
+ multipleOf: `Should be a multiple of {multipleOf}`,
1986
+ not: `Should not be valid according to schema in "not"`,
1987
+ oneOf: `Should match exactly one schema in "oneOf"`,
1988
+ pattern: `Should match pattern "{pattern}"`,
1989
+ uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
1990
+ custom: `Should match format`,
1991
+ propertyNames: `Property name "{propertyName}" is invalid`,
1992
+ patternRequired: `Should have property matching pattern "{missingPattern}"`,
1993
+ switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
1994
+ const: `Should be equal to constant`,
1995
+ contains: `Should contain a valid item`,
1996
+ formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
1997
+ formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
1998
+ if: `Should match "{failingKeyword}" schema`
2202
1999
  }
2000
+ },
2001
+ onboarding: {
2002
+ skip: `Pominąć`,
2003
+ prev: `Poprzedni`,
2004
+ next: `Kolejny`,
2005
+ done: `Gotowe`
2203
2006
  }
2204
- /**
2205
- * 构建一个抽屉,点击蒙层不允许关闭
2206
- */
2207
- static(title, comp, params, options) {
2208
- const drawerOptions = {
2209
- nzMaskClosable: false,
2210
- ...(options && options.drawerOptions)
2211
- };
2212
- return this.create(title, comp, params, { ...options, drawerOptions });
2213
- }
2214
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DrawerHelper, deps: [{ token: i1$6.NzDrawerService }, { token: DrawerHelper, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2215
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DrawerHelper, providedIn: 'root' }); }
2216
- }
2217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DrawerHelper, decorators: [{
2218
- type: Injectable,
2219
- args: [{ providedIn: 'root' }]
2220
- }], ctorParameters: function () { return [{ type: i1$6.NzDrawerService }, { type: DrawerHelper, decorators: [{
2221
- type: Optional
2222
- }, {
2223
- type: SkipSelf
2224
- }] }]; } });
2007
+ };
2225
2008
 
2226
- /* eslint-disable @typescript-eslint/no-explicit-any */
2227
- /**
2228
- * 封装HttpClient,主要解决:
2229
- * + 优化HttpClient在参数上便利性
2230
- * + 统一实现 loading
2231
- * + 统一处理时间格式问题
2232
- */
2233
- class _HttpClient {
2234
- constructor(http, cogSrv) {
2235
- this.http = http;
2236
- this.lc = 0;
2237
- this.cog = cogSrv.merge('themeHttp', {
2238
- nullValueHandling: 'include',
2239
- dateValueHandling: 'timestamp'
2240
- });
2241
- }
2242
- /**
2243
- * Get whether it's loading
2244
- *
2245
- * 获取是否正在加载中
2246
- */
2247
- get loading() {
2248
- return this.lc > 0;
2249
- }
2250
- /**
2251
- * Get the currently loading count
2252
- *
2253
- * 获取当前加载中的数量
2254
- */
2255
- get loadingCount() {
2256
- return this.lc;
2257
- }
2258
- parseParams(params) {
2259
- const newParams = {};
2260
- if (params instanceof HttpParams) {
2261
- return params;
2009
+ var elGR = {
2010
+ abbr: 'el-GR',
2011
+ exception: {
2012
+ 403: `Λυπούμαστε, δεν έχετε πρόσβαση σε αυτήν τη σελίδα`,
2013
+ 404: `Λυπούμαστε, η σελίδα αυτή δεν βρέθηκε`,
2014
+ 500: `Λυπούμαστε, σφάλμα διακομιστή`,
2015
+ backToHome: 'Επιστροφή στην αρχική σελίδα'
2016
+ },
2017
+ noticeIcon: {
2018
+ emptyText: 'Δεν υπάρχουν δεδομένα',
2019
+ clearText: 'Καθαρισμός'
2020
+ },
2021
+ reuseTab: {
2022
+ close: 'Κλείσιμο καρτέλας',
2023
+ closeOther: 'Κλείσιμο των άλλων καρτέλων',
2024
+ closeRight: 'Κλείσιμο των καρτελών δεξιά',
2025
+ refresh: 'Ανανέωση'
2026
+ },
2027
+ tagSelect: {
2028
+ expand: 'Επέκταση',
2029
+ collapse: 'Σύμπτυξη'
2030
+ },
2031
+ miniProgress: {
2032
+ target: 'Στόχος: '
2033
+ },
2034
+ st: {
2035
+ total: '{{range[0]}} - {{range[1]}} από {{total}}',
2036
+ filterConfirm: 'ΟΚ',
2037
+ filterReset: 'Επαναφορά'
2038
+ },
2039
+ sf: {
2040
+ submit: 'Υποβολή',
2041
+ reset: 'Επαναφορά',
2042
+ search: 'Αναζήτηση',
2043
+ edit: 'Αποθήκευση',
2044
+ addText: 'Προσθήκη',
2045
+ removeText: 'Αφαίρεση',
2046
+ checkAllText: 'Επιλογή όλων',
2047
+ error: {
2048
+ 'false schema': `Η δυαδική δομή είναι ψευδής`,
2049
+ $ref: `Δεν είναι δυνατή η επίλυση της αναφοράς {ref}`,
2050
+ additionalItems: `Δεν πρέπει να έχει περισσότερα από {limit} στοιχεία`,
2051
+ additionalProperties: `Δεν πρέπει να έχει επιπλέον χαρακτηριστικά`,
2052
+ anyOf: `Πρέπει να ταιριάζει με κάποια απο τις δομές στο "anyOf"`,
2053
+ dependencies: `τα χαρακτηριστικά {deps} είναι απαραίτητα, όταν υπάρχει το χαρακτηριστικό {property}`,
2054
+ enum: `Πρέπει να είναι ίσο με μία από τις προκαθορισμένες τιμές`,
2055
+ format: `Πρέπει να έχει την μορφή "{format}"`,
2056
+ type: `Πρέπει να είναι {type}`,
2057
+ required: `Απαιτείται`,
2058
+ maxLength: `Δεν πρέπει να είναι μεγαλύτερο από {limit} χαρακτήρες`,
2059
+ minLength: `Δεν πρέπει να είναι μικρότερο από {limit} χαρακτήρες`,
2060
+ minimum: `Πρέπει να είναι {comparison} {limit}`,
2061
+ formatMinimum: `Πρέπει να είναι {comparison} {limit}`,
2062
+ maximum: `Πρέπει να είναι {comparison} {limit}`,
2063
+ formatMaximum: `Πρέπει να είναι {comparison} {limit}`,
2064
+ maxItems: `Δεν πρέπει να έχει περισσότερα από {limit} στοιχεία`,
2065
+ minItems: `Δεν πρέπει να έχει λιγότερα από {limit} στοιχεία`,
2066
+ maxProperties: `Δεν πρέπει να έχει περισσότερα από {limit} χαρακτηριστικά`,
2067
+ minProperties: `Δεν πρέπει να έχει λιγότερα από {limit} χαρακτηριστικά`,
2068
+ multipleOf: `Πρέπει να είναι πολλαπλάσιο του {multipleOf}`,
2069
+ not: `Δεν πρέπει να είναι εγκύρο, σύμφωνα με την δομή στο "not"`,
2070
+ oneOf: `Πρέπει να ταιριάζει με ακριβώς μια απο τις δομές στο "oneOf"`,
2071
+ pattern: `Πρέπει να ταιριάζει με το πρότυπο "{pattern}"`,
2072
+ uniqueItems: `Τα στοιχεία δεν πρέπει να επαναλαμβάνονται (τα στοιχεία ## {j} και {i} είναι ίδια)`,
2073
+ custom: `Πρέπει να έχει την μορφή`,
2074
+ propertyNames: `Το όνομα του χαρακτηριστικού "{propertyName}" δεν είναι έγκυρο`,
2075
+ patternRequired: `Πρέπει να υπάρχει το χαρακτηριστικό αντιπαραβολής προτύπου "{missingPattern}"`,
2076
+ switch: `Πρέπει να περάσει ο έλεγχος εγκυρότητας της λέξης-κλειδιού με την χρήση της "switch", η περίπτωση {caseIndex} αποτυγχάνει`,
2077
+ const: `Πρέπει να είναι ίσο με σταθερά`,
2078
+ contains: `Πρέπει να περιέχει κάποιο έγκυρο στοιχείο`,
2079
+ formatExclusiveMaximum: `formatExclusiveMaximum πρέπει να είναι boolean`,
2080
+ formatExclusiveMinimum: `formatExclusiveMinimum πρέπει να είναι boolean`,
2081
+ if: `Πρέπει να ταιριάζει στην δομή "{failingKeyword}"`
2262
2082
  }
2263
- Object.keys(params).forEach(key => {
2264
- let _data = params[key];
2265
- // 忽略空值
2266
- if (this.cog.nullValueHandling === 'ignore' && _data == null)
2267
- return;
2268
- // 将时间转化为:时间戳 (秒)
2269
- if (this.cog.dateValueHandling === 'timestamp' && _data instanceof Date) {
2270
- _data = _data.valueOf();
2271
- }
2272
- newParams[key] = _data;
2273
- });
2274
- return new HttpParams({ fromObject: newParams });
2275
- }
2276
- appliedUrl(url, params) {
2277
- if (!params)
2278
- return url;
2279
- url += ~url.indexOf('?') ? '' : '?';
2280
- const arr = [];
2281
- Object.keys(params).forEach(key => {
2282
- arr.push(`${key}=${params[key]}`);
2283
- });
2284
- return url + arr.join('&');
2285
- }
2286
- setCount(count) {
2287
- Promise.resolve(null).then(() => (this.lc = count <= 0 ? 0 : count));
2288
- }
2289
- push() {
2290
- this.setCount(++this.lc);
2291
- }
2292
- pop() {
2293
- this.setCount(--this.lc);
2294
- }
2295
- /**
2296
- * Clean loading count
2297
- *
2298
- * 清空加载中
2299
- */
2300
- cleanLoading() {
2301
- this.setCount(0);
2302
- }
2303
- get(url, params, options = {}) {
2304
- return this.request('GET', url, {
2305
- params,
2306
- ...options
2307
- });
2308
- }
2309
- post(url, body, params, options = {}) {
2310
- return this.request('POST', url, {
2311
- body,
2312
- params,
2313
- ...options
2314
- });
2315
- }
2316
- delete(url, params, options = {}) {
2317
- return this.request('DELETE', url, {
2318
- params,
2319
- ...options
2320
- });
2321
- }
2322
- // #endregion
2323
- // #region jsonp
2324
- /**
2325
- * **JSONP Request**
2326
- *
2327
- * @param callbackParam CALLBACK值,默认:JSONP_CALLBACK
2328
- */
2329
- jsonp(url, params, callbackParam = 'JSONP_CALLBACK') {
2330
- return of(null).pipe(
2331
- // Make sure to always be asynchronous, see issues: https://github.com/ng-alain/ng-alain/issues/1954
2332
- delay(0), tap(() => this.push()), switchMap(() => this.http.jsonp(this.appliedUrl(url, params), callbackParam)), finalize(() => this.pop()));
2083
+ },
2084
+ onboarding: {
2085
+ skip: `Παράλειψη`,
2086
+ prev: `Προηγούμενο`,
2087
+ next: `Επόμενο`,
2088
+ done: `Ολοκληρώθηκε`
2333
2089
  }
2334
- patch(url, body, params, options = {}) {
2335
- return this.request('PATCH', url, {
2336
- body,
2337
- params,
2338
- ...options
2339
- });
2090
+ };
2091
+
2092
+ var koKR = {
2093
+ abbr: 'ko-KR',
2094
+ exception: {
2095
+ 403: `죄송합니다.이 페이지에 액세스 할 수 없습니다.`,
2096
+ 404: `죄송합니다. 해당 페이지가 없습니다.`,
2097
+ 500: `죄송합니다, 서버 오류가 있습니다.`,
2098
+ backToHome: '홈으로 돌아갑니다.'
2099
+ },
2100
+ noticeIcon: {
2101
+ emptyText: '데이터 없음',
2102
+ clearText: '지우기'
2103
+ },
2104
+ reuseTab: {
2105
+ close: '탭 닫기',
2106
+ closeOther: '다른 탭 닫기',
2107
+ closeRight: '오른쪽 탭 닫기',
2108
+ refresh: '새롭게 하다'
2109
+ },
2110
+ tagSelect: {
2111
+ expand: '펼치기',
2112
+ collapse: '접기'
2113
+ },
2114
+ miniProgress: {
2115
+ target: '대상: '
2116
+ },
2117
+ st: {
2118
+ total: '전체 {{total}}건',
2119
+ filterConfirm: '확인',
2120
+ filterReset: '초기화'
2121
+ },
2122
+ sf: {
2123
+ submit: '제출',
2124
+ reset: '재설정',
2125
+ search: '검색',
2126
+ edit: '저장',
2127
+ addText: '추가',
2128
+ removeText: '제거',
2129
+ checkAllText: '모두 확인',
2130
+ error: {
2131
+ 'false schema': `Boolean schema is false`,
2132
+ $ref: `Can't resolve reference {ref}`,
2133
+ additionalItems: `Should not have more than {limit} item`,
2134
+ additionalProperties: `Should not have additional properties`,
2135
+ anyOf: `Should match some schema in "anyOf"`,
2136
+ dependencies: `should have property {deps} when property {property} is present`,
2137
+ enum: `Should be equal to one of predefined values`,
2138
+ format: `Should match format "{format}"`,
2139
+ type: `Should be {type}`,
2140
+ required: `Required`,
2141
+ maxLength: `Should not be longer than {limit} character`,
2142
+ minLength: `Should not be shorter than {limit} character`,
2143
+ minimum: `Should be {comparison} {limit}`,
2144
+ formatMinimum: `Should be {comparison} {limit}`,
2145
+ maximum: `Should be {comparison} {limit}`,
2146
+ formatMaximum: `Should be {comparison} {limit}`,
2147
+ maxItems: `Should not have more than {limit} item`,
2148
+ minItems: `Should not have less than {limit} item`,
2149
+ maxProperties: `Should not have more than {limit} property`,
2150
+ minProperties: `Should not have less than {limit} property`,
2151
+ multipleOf: `Should be a multiple of {multipleOf}`,
2152
+ not: `Should not be valid according to schema in "not"`,
2153
+ oneOf: `Should match exactly one schema in "oneOf"`,
2154
+ pattern: `Should match pattern "{pattern}"`,
2155
+ uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
2156
+ custom: `Should match format`,
2157
+ propertyNames: `Property name "{propertyName}" is invalid`,
2158
+ patternRequired: `Should have property matching pattern "{missingPattern}"`,
2159
+ switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
2160
+ const: `Should be equal to constant`,
2161
+ contains: `Should contain a valid item`,
2162
+ formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
2163
+ formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
2164
+ if: `Should match "{failingKeyword}" schema`
2165
+ }
2166
+ },
2167
+ onboarding: {
2168
+ skip: `건너 뛰기`,
2169
+ prev: `이전`,
2170
+ next: `다음`,
2171
+ done: `끝난`
2340
2172
  }
2341
- put(url, body, params, options = {}) {
2342
- return this.request('PUT', url, {
2343
- body,
2344
- params,
2345
- ...options
2346
- });
2173
+ };
2174
+
2175
+ var hrHR = {
2176
+ abbr: 'hr-HR',
2177
+ exception: {
2178
+ 403: `Nažalost, nemate pristup ovoj lokaciji`,
2179
+ 404: `Nažalost, lokacija ne postoji`,
2180
+ 500: `Nažalost, server je javio pogrešku`,
2181
+ backToHome: 'Nazad na početnu stranicu'
2182
+ },
2183
+ noticeIcon: {
2184
+ emptyText: 'Nema podataka',
2185
+ clearText: 'Obriši'
2186
+ },
2187
+ reuseTab: {
2188
+ close: 'Zatvori karticu',
2189
+ closeOther: 'Zatvori druge kartice',
2190
+ closeRight: 'Zatvori kartice desno',
2191
+ refresh: 'Refresh'
2192
+ },
2193
+ tagSelect: {
2194
+ expand: 'Proširi',
2195
+ collapse: 'Skupi'
2196
+ },
2197
+ miniProgress: {
2198
+ target: 'Cilj: '
2199
+ },
2200
+ st: {
2201
+ total: '{{range[0]}} - {{range[1]}} od {{total}}',
2202
+ filterConfirm: 'U redu',
2203
+ filterReset: 'Poništi'
2204
+ },
2205
+ sf: {
2206
+ submit: 'Pošalji',
2207
+ reset: 'Poništi',
2208
+ search: 'Pretraži',
2209
+ edit: 'Spremi',
2210
+ addText: 'Dodaj',
2211
+ removeText: 'Ukloni',
2212
+ checkAllText: 'Označi sve'
2213
+ },
2214
+ onboarding: {
2215
+ skip: `Preskočiti`,
2216
+ prev: `Prethodna`,
2217
+ next: `Sljedeći`,
2218
+ done: `Sastavljeno`
2347
2219
  }
2348
- form(url, body, params, options = {}) {
2349
- return this.request('POST', url, {
2350
- body,
2351
- params,
2352
- ...options,
2353
- headers: {
2354
- 'content-type': `application/x-www-form-urlencoded`
2355
- }
2356
- });
2220
+ };
2221
+
2222
+ var jaJP = {
2223
+ abbr: 'ja-JP',
2224
+ exception: {
2225
+ 403: 'ページへのアクセス権限がありません',
2226
+ 404: 'ページが存在しません',
2227
+ 500: 'サーバーエラーが発生しました',
2228
+ backToHome: 'ホームに戻る'
2229
+ },
2230
+ noticeIcon: {
2231
+ emptyText: 'データが有りません',
2232
+ clearText: 'クリア'
2233
+ },
2234
+ reuseTab: {
2235
+ close: 'タブを閉じる',
2236
+ closeOther: '他のタブを閉じる',
2237
+ closeRight: '右のタブを閉じる',
2238
+ refresh: 'リフレッシュ'
2239
+ },
2240
+ tagSelect: {
2241
+ expand: '展開する',
2242
+ collapse: '折りたたむ'
2243
+ },
2244
+ miniProgress: {
2245
+ target: '設定値: '
2246
+ },
2247
+ st: {
2248
+ total: '{{range[0]}} - {{range[1]}} / {{total}}',
2249
+ filterConfirm: '確定',
2250
+ filterReset: 'リセット'
2251
+ },
2252
+ sf: {
2253
+ submit: '送信',
2254
+ reset: 'リセット',
2255
+ search: '検索',
2256
+ edit: '保存',
2257
+ addText: '追加',
2258
+ removeText: '削除',
2259
+ checkAllText: '全選択',
2260
+ error: {
2261
+ 'false schema': `真偽値スキーマが不正です`,
2262
+ $ref: `参照を解決できません: {ref}`,
2263
+ additionalItems: `{limit}個を超えるアイテムを含めることはできません`,
2264
+ additionalProperties: `追加のプロパティを使用しないでください`,
2265
+ anyOf: `"anyOf"のスキーマと一致する必要があります`,
2266
+ dependencies: `プロパティ {property} を指定した場合、次の依存関係を満たす必要があります: {deps}`,
2267
+ enum: `定義された値のいずれかに等しくなければなりません`,
2268
+ format: `入力形式に一致しません: "{format}"`,
2269
+ type: `型が不正です: {type}`,
2270
+ required: `必須項目です`,
2271
+ maxLength: `最大文字数: {limit}`,
2272
+ minLength: `最少文字数: {limit}`,
2273
+ minimum: `値が不正です: {comparison} {limit}`,
2274
+ formatMinimum: `値が不正です: {comparison} {limit}`,
2275
+ maximum: `値が不正です: {comparison} {limit}`,
2276
+ formatMaximum: `値が不正です: {comparison} {limit}`,
2277
+ maxItems: `最大選択数は {limit} より小さい必要があります`,
2278
+ minItems: `最小選択数は {limit} より大きい必要があります`,
2279
+ maxProperties: `値を{limit}より大きくすることはできません`,
2280
+ minProperties: `値を{limit}より小さくすることはできません`,
2281
+ multipleOf: `値は次の数の倍数である必要があります: {multipleOf}`,
2282
+ not: `値が不正です:`,
2283
+ oneOf: `値が不正です:`,
2284
+ pattern: `次のパターンに一致する必要があります: "{pattern}"`,
2285
+ uniqueItems: `値が重複しています: 選択肢: {j} 、{i}`,
2286
+ custom: `形式と一致する必要があります`,
2287
+ propertyNames: `次のプロパティの値が無効です: "{propertyName}"`,
2288
+ patternRequired: `次のパターンに一致するプロパティが必須です: "{missingPattern}"`,
2289
+ switch: `"switch" キーワードの値が不正です: {caseIndex}`,
2290
+ const: `値が定数に一致しません`,
2291
+ contains: `有効なアイテムを含める必要があります`,
2292
+ formatExclusiveMaximum: `formatExclusiveMaximum は真偽値である必要があります`,
2293
+ formatExclusiveMinimum: `formatExclusiveMaximum は真偽値である必要があります`,
2294
+ if: `パターンと一致する必要があります: "{failingKeyword}" `
2295
+ }
2296
+ },
2297
+ onboarding: {
2298
+ skip: `スキップ`,
2299
+ prev: `前へ`,
2300
+ next: `次`,
2301
+ done: `できた`
2357
2302
  }
2358
- request(method, url, options = {}) {
2359
- if (options.params)
2360
- options.params = this.parseParams(options.params);
2361
- return of(null).pipe(
2362
- // Make sure to always be asynchronous, see issues: https://github.com/ng-alain/ng-alain/issues/1954
2363
- delay(0), tap(() => this.push()), switchMap(() => this.http.request(method, url, options)), finalize(() => this.pop()));
2303
+ };
2304
+
2305
+ var slSI = {
2306
+ abbr: 'sl-SI',
2307
+ exception: {
2308
+ 403: `Žal nimate dostopa do te strani`,
2309
+ 404: `Žal stran, ki ste jo obiskali, ne obstaja`,
2310
+ 500: `Žal strežnik poroča o napaki`,
2311
+ backToHome: 'Nazaj domov'
2312
+ },
2313
+ noticeIcon: {
2314
+ emptyText: 'Ni podatkov',
2315
+ clearText: 'Počisti'
2316
+ },
2317
+ reuseTab: {
2318
+ close: 'Zapri zavihek',
2319
+ closeOther: 'Zaprite druge zavihke',
2320
+ closeRight: 'Zaprite zavihke na desni'
2321
+ },
2322
+ tagSelect: {
2323
+ expand: 'Razširi',
2324
+ collapse: 'Strni'
2325
+ },
2326
+ miniProgress: {
2327
+ target: 'Cilj: '
2328
+ },
2329
+ st: {
2330
+ total: '{{range[0]}} - {{range[1]}} of {{total}}',
2331
+ filterConfirm: 'OK',
2332
+ filterReset: 'Reset'
2333
+ },
2334
+ sf: {
2335
+ submit: 'Pošlji',
2336
+ reset: 'Reset',
2337
+ search: 'Išči',
2338
+ edit: 'Shrani',
2339
+ addText: 'Dodaj',
2340
+ removeText: 'Odstrani',
2341
+ checkAllText: 'Preveri vse',
2342
+ error: {
2343
+ 'false schema': `Boolova shema je napačna`,
2344
+ $ref: `Referenc ni mogoče razrešiti {ref}`,
2345
+ additionalItems: `Ne sme imeti več kot {limit} artiklov`,
2346
+ additionalProperties: `Ne bi smel imeti dodatnih lastnosti`,
2347
+ anyOf: `Se mora ujemati s shemo v "anyOf"`,
2348
+ dependencies: `mora imeti lastnosti {deps} ko je artikel {property} prisoten`,
2349
+ enum: `Mora biti enaka eni od vnaprej določenih vrednosti`,
2350
+ format: `Naj ustreza formatu "{format}"`,
2351
+ type: `Naj bo {type}`,
2352
+ required: `Zahtevano`,
2353
+ maxLength: `Ne sme biti daljši od {limit} znakov`,
2354
+ minLength: `Ne sme biti krajši od {limit} znakov`,
2355
+ minimum: `Naj bo {comparison} {limit}`,
2356
+ formatMinimum: `Naj bo {comparison} {limit}`,
2357
+ maximum: `Naj bo {comparison} {limit}`,
2358
+ formatMaximum: `Naj bo {comparison} {limit}`,
2359
+ maxItems: `Ne sme imeti več kot {limit} artiklov`,
2360
+ minItems: `Ne sme imeti manj kot {limit} artiklov`,
2361
+ maxProperties: `Ne sme imeti več kot {limit} lastnosti`,
2362
+ minProperties: `Ne sme imeti manj kot {limit} lastnosti`,
2363
+ multipleOf: `Mora biti večkratnik od {multipleOf}`,
2364
+ not: `Ne sme biti veljaven po shemi v "not"`,
2365
+ oneOf: `Naj ustreza natančno eni shemi v "oneOf"`,
2366
+ pattern: `Naj se ujema z vzorcem "{pattern}"`,
2367
+ uniqueItems: `Ne bi smel imeti dvojnikov (items ## {j} in {i} so identični)`,
2368
+ custom: `Naj ustreza formatu`,
2369
+ propertyNames: `Ime artikla "{propertyName}" je neveljavno`,
2370
+ patternRequired: `Mora imeti vzorec ujemanja lastnosti "{missingPattern}"`,
2371
+ switch: `Mora prestati "switch" validacijo ključne besede, primer {caseIndex} ne uspe`,
2372
+ const: `Naj bo enako konstanti`,
2373
+ contains: `Naj vsebuje veljaven artikel`,
2374
+ formatExclusiveMaximum: `formatExclusiveMaximum naj bo boolean`,
2375
+ formatExclusiveMinimum: `formatExclusiveMinimum naj bo boolean`,
2376
+ if: `Naj se ujema s shemo "{failingKeyword}"`
2377
+ }
2378
+ },
2379
+ onboarding: {
2380
+ skip: `Preskoči`,
2381
+ prev: `Prejšnje`,
2382
+ next: `Naslednji`,
2383
+ done: `Končano`
2364
2384
  }
2365
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: _HttpClient, deps: [{ token: i1$7.HttpClient }, { token: i1.AlainConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2366
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: _HttpClient, providedIn: 'root' }); }
2367
- }
2368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: _HttpClient, decorators: [{
2369
- type: Injectable,
2370
- args: [{ providedIn: 'root' }]
2371
- }], ctorParameters: function () { return [{ type: i1$7.HttpClient }, { type: i1.AlainConfigService }]; } });
2385
+ };
2372
2386
 
2373
- /**
2374
- * Every http decorator must be based on `BaseAPI`, Like this:
2375
- * ```ts
2376
- * \@Injectable()
2377
- * class DataService extends BaseApi {}
2378
- * ```
2379
- */
2380
- class BaseApi {
2381
- constructor(injector) {
2382
- this.injector = injector;
2383
- }
2384
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: BaseApi, deps: [{ token: Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
2385
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: BaseApi }); }
2386
- }
2387
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: BaseApi, decorators: [{
2388
- type: Injectable
2389
- }], ctorParameters: function () { return [{ type: i0.Injector, decorators: [{
2390
- type: Inject,
2391
- args: [Injector]
2392
- }] }]; } });
2393
- const paramKey = `__api_params`;
2394
- function setParam(target, key = paramKey) {
2395
- let params = target[key];
2396
- if (typeof params === 'undefined') {
2397
- params = target[key] = {};
2398
- }
2399
- return params;
2400
- }
2401
- /**
2402
- * 默认基准URL
2403
- * - 有效范围:类
2404
- */
2405
- function BaseUrl(url) {
2406
- return function (target) {
2407
- const params = setParam(target.prototype);
2408
- params.baseUrl = url;
2409
- return target;
2410
- };
2411
- }
2412
- /**
2413
- * 默认 `headers`
2414
- * - 有效范围:类
2415
- */
2416
- function BaseHeaders(headers) {
2417
- return function (target) {
2418
- const params = setParam(target.prototype);
2419
- params.baseHeaders = headers;
2420
- return target;
2421
- };
2422
- }
2423
- function makeParam(paramName) {
2424
- return function (key) {
2425
- return function (target, propertyKey, index) {
2426
- const params = setParam(setParam(target), propertyKey);
2427
- let tParams = params[paramName];
2428
- if (typeof tParams === 'undefined') {
2429
- tParams = params[paramName] = [];
2430
- }
2431
- tParams.push({
2432
- key,
2433
- index
2434
- });
2435
- };
2436
- };
2437
- }
2438
- /**
2439
- * URL路由参数
2440
- * - 有效范围:方法参数
2441
- */
2442
- const Path = makeParam('path');
2443
- /**
2444
- * URL 参数 `QueryString`
2445
- * - 有效范围:方法参数
2446
- */
2447
- const Query = makeParam('query');
2448
- /**
2449
- * 参数 `Body`
2450
- * - 有效范围:方法参数
2451
- */
2452
- const Body = makeParam('body')();
2453
- /**
2454
- * 参数 `headers`
2455
- * - 有效范围:方法参数
2456
- * - 合并 `BaseHeaders`
2457
- */
2458
- const Headers = makeParam('headers');
2459
- /**
2460
- * Request Payload
2461
- * - Supported body (like`POST`, `PUT`) as a body data, equivalent to `@Body`
2462
- * - Not supported body (like `GET`, `DELETE` etc) as a `QueryString`
2463
- */
2464
- const Payload = makeParam('payload')();
2465
- function getValidArgs(data, key, args) {
2466
- if (!data[key] || !Array.isArray(data[key]) || data[key].length <= 0) {
2467
- return undefined;
2387
+ var frFR = {
2388
+ abbr: 'fr-FR',
2389
+ exception: {
2390
+ 403: `Désolé, vous n'avez pas accès à cette page`,
2391
+ 404: `Désolé, la page que vous avez visitée n'existe pas`,
2392
+ 500: `Désolé, le serveur signale une erreur`,
2393
+ backToHome: "Retour à l'accueil"
2394
+ },
2395
+ noticeIcon: {
2396
+ emptyText: 'Pas de données',
2397
+ clearText: 'Effacer'
2398
+ },
2399
+ reuseTab: {
2400
+ close: "Fermer l'onglet",
2401
+ closeOther: 'Fermer les autres onglets',
2402
+ closeRight: 'Fermer les onglets à droite',
2403
+ refresh: 'Rafraîchir'
2404
+ },
2405
+ tagSelect: {
2406
+ expand: 'Etendre',
2407
+ collapse: 'Effondrer'
2408
+ },
2409
+ miniProgress: {
2410
+ target: 'Cible: '
2411
+ },
2412
+ st: {
2413
+ total: '{{range[0]}} - {{range[1]}} de {{total}}',
2414
+ filterConfirm: 'OK',
2415
+ filterReset: 'Réinitialiser'
2416
+ },
2417
+ sf: {
2418
+ submit: 'Soumettre',
2419
+ reset: 'Réinitialiser',
2420
+ search: 'Rechercher',
2421
+ edit: 'Sauvegarder',
2422
+ addText: 'Ajouter',
2423
+ removeText: 'Supprimer',
2424
+ checkAllText: 'Cochez toutes',
2425
+ error: {
2426
+ 'false schema': `Boolean schema is false`,
2427
+ $ref: `Can't resolve reference {ref}`,
2428
+ additionalItems: `Should not have more than {limit} item`,
2429
+ additionalProperties: `Should not have additional properties`,
2430
+ anyOf: `Should match some schema in "anyOf"`,
2431
+ dependencies: `should have property {deps} when property {property} is present`,
2432
+ enum: `Should be equal to one of predefined values`,
2433
+ format: `Should match format "{format}"`,
2434
+ type: `Should be {type}`,
2435
+ required: `Required`,
2436
+ maxLength: `Should not be longer than {limit} character`,
2437
+ minLength: `Should not be shorter than {limit} character`,
2438
+ minimum: `Should be {comparison} {limit}`,
2439
+ formatMinimum: `Should be {comparison} {limit}`,
2440
+ maximum: `Should be {comparison} {limit}`,
2441
+ formatMaximum: `Should be {comparison} {limit}`,
2442
+ maxItems: `Should not have more than {limit} item`,
2443
+ minItems: `Should not have less than {limit} item`,
2444
+ maxProperties: `Should not have more than {limit} property`,
2445
+ minProperties: `Should not have less than {limit} property`,
2446
+ multipleOf: `Should be a multiple of {multipleOf}`,
2447
+ not: `Should not be valid according to schema in "not"`,
2448
+ oneOf: `Should match exactly one schema in "oneOf"`,
2449
+ pattern: `Should match pattern "{pattern}"`,
2450
+ uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
2451
+ custom: `Should match format`,
2452
+ propertyNames: `Property name "{propertyName}" is invalid`,
2453
+ patternRequired: `Should have property matching pattern "{missingPattern}"`,
2454
+ switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
2455
+ const: `Should be equal to constant`,
2456
+ contains: `Should contain a valid item`,
2457
+ formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
2458
+ formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
2459
+ if: `Should match "{failingKeyword}" schema`
2460
+ }
2461
+ },
2462
+ onboarding: {
2463
+ skip: `Passer`,
2464
+ prev: `Précédent`,
2465
+ next: `Suivant`,
2466
+ done: `Terminé`
2468
2467
  }
2469
- return args[data[key][0].index];
2470
- }
2471
- function genBody(data, payload) {
2472
- if (Array.isArray(data) || Array.isArray(payload)) {
2473
- return Object.assign([], data, payload);
2468
+ };
2469
+
2470
+ var esES = {
2471
+ abbr: 'es-ES',
2472
+ exception: {
2473
+ 403: `Lo sentimos, no tiene acceso a esta página`,
2474
+ 404: `Lo sentimos, la página que ha visitado no existe`,
2475
+ 500: `Lo siento, error interno del servidor `,
2476
+ backToHome: 'Volver a la página de inicio'
2477
+ },
2478
+ noticeIcon: {
2479
+ emptyText: 'No hay datos',
2480
+ clearText: 'Limpiar'
2481
+ },
2482
+ reuseTab: {
2483
+ close: 'Cerrar pestaña',
2484
+ closeOther: 'Cerrar otras pestañas',
2485
+ closeRight: 'Cerrar pestañas a la derecha',
2486
+ refresh: 'Actualizar'
2487
+ },
2488
+ tagSelect: {
2489
+ expand: 'Expandir',
2490
+ collapse: 'Ocultar'
2491
+ },
2492
+ miniProgress: {
2493
+ target: 'Target: '
2494
+ },
2495
+ st: {
2496
+ total: '{{rango[0]}} - {{rango[1]}} de {{total}}',
2497
+ filterConfirm: 'Aceptar',
2498
+ filterReset: 'Reiniciar'
2499
+ },
2500
+ sf: {
2501
+ submit: 'Submit',
2502
+ reset: 'Reiniciar',
2503
+ search: 'Buscar',
2504
+ edit: 'Guardar',
2505
+ addText: 'Añadir',
2506
+ removeText: 'Eliminar',
2507
+ checkAllText: 'Comprobar todo',
2508
+ error: {
2509
+ 'false schema': `Boolean schema is false`,
2510
+ $ref: `Can't resolve reference {ref}`,
2511
+ additionalItems: `Should not have more than {limit} item`,
2512
+ additionalProperties: `Should not have additional properties`,
2513
+ anyOf: `Should match some schema in "anyOf"`,
2514
+ dependencies: `should have property {deps} when property {property} is present`,
2515
+ enum: `Should be equal to one of predefined values`,
2516
+ format: `Should match format "{format}"`,
2517
+ type: `Should be {type}`,
2518
+ required: `Required`,
2519
+ maxLength: `Should not be longer than {limit} character`,
2520
+ minLength: `Should not be shorter than {limit} character`,
2521
+ minimum: `Should be {comparison} {limit}`,
2522
+ formatMinimum: `Should be {comparison} {limit}`,
2523
+ maximum: `Should be {comparison} {limit}`,
2524
+ formatMaximum: `Should be {comparison} {limit}`,
2525
+ maxItems: `Should not have more than {limit} item`,
2526
+ minItems: `Should not have less than {limit} item`,
2527
+ maxProperties: `Should not have more than {limit} property`,
2528
+ minProperties: `Should not have less than {limit} property`,
2529
+ multipleOf: `Should be a multiple of {multipleOf}`,
2530
+ not: `Should not be valid according to schema in "not"`,
2531
+ oneOf: `Should match exactly one schema in "oneOf"`,
2532
+ pattern: `Should match pattern "{pattern}"`,
2533
+ uniqueItems: `Should not have duplicate items (items ## {j} and {i} are identical)`,
2534
+ custom: `Should match format`,
2535
+ propertyNames: `Property name "{propertyName}" is invalid`,
2536
+ patternRequired: `Should have property matching pattern "{missingPattern}"`,
2537
+ switch: `Should pass "switch" keyword validation, case {caseIndex} fails`,
2538
+ const: `Should be equal to constant`,
2539
+ contains: `Should contain a valid item`,
2540
+ formatExclusiveMaximum: `formatExclusiveMaximum should be boolean`,
2541
+ formatExclusiveMinimum: `formatExclusiveMinimum should be boolean`,
2542
+ if: `Should match "{failingKeyword}" schema`
2543
+ }
2544
+ },
2545
+ onboarding: {
2546
+ skip: `Omitir`,
2547
+ prev: `Previo`,
2548
+ next: `Siguiente`,
2549
+ done: `Terminado`
2474
2550
  }
2475
- return { ...data, ...payload };
2476
- }
2477
- function makeMethod(method) {
2478
- return function (url = '', options) {
2479
- return (_target, targetKey, descriptor) => {
2480
- descriptor.value = function (...args) {
2481
- options = options || {};
2482
- const injector = this.injector;
2483
- const http = injector.get(_HttpClient, null);
2484
- if (http == null) {
2485
- throw new TypeError(`Not found '_HttpClient', You can import 'AlainThemeModule' && 'HttpClientModule' in your root module.`);
2486
- }
2487
- const baseData = setParam(this);
2488
- const data = setParam(baseData, targetKey);
2489
- let requestUrl = url || '';
2490
- requestUrl = [baseData.baseUrl || '', requestUrl.startsWith('/') ? requestUrl.substring(1) : requestUrl].join('/');
2491
- // fix last split
2492
- if (requestUrl.length > 1 && requestUrl.endsWith('/')) {
2493
- requestUrl = requestUrl.substring(0, requestUrl.length - 1);
2494
- }
2495
- if (options.acl) {
2496
- const aclSrv = injector.get(ACLService, null);
2497
- if (aclSrv && !aclSrv.can(options.acl)) {
2498
- return throwError(() => ({
2499
- url: requestUrl,
2500
- status: 401,
2501
- statusText: `From Http Decorator`
2502
- }));
2503
- }
2504
- delete options.acl;
2505
- }
2506
- requestUrl = requestUrl.replace(/::/g, '^^');
2507
- (data.path || [])
2508
- .filter(w => typeof args[w.index] !== 'undefined')
2509
- .forEach((i) => {
2510
- requestUrl = requestUrl.replace(new RegExp(`:${i.key}`, 'g'), encodeURIComponent(args[i.index]));
2511
- });
2512
- requestUrl = requestUrl.replace(/\^\^/g, `:`);
2513
- const params = (data.query || []).reduce((p, i) => {
2514
- p[i.key] = args[i.index];
2515
- return p;
2516
- }, {});
2517
- const headers = (data.headers || []).reduce((p, i) => {
2518
- p[i.key] = args[i.index];
2519
- return p;
2520
- }, {});
2521
- if (method === 'FORM') {
2522
- headers['content-type'] = 'application/x-www-form-urlencoded';
2523
- }
2524
- const payload = getValidArgs(data, 'payload', args);
2525
- const supportedBody = ['POST', 'PUT', 'PATCH', 'DELETE'].some(v => v === method);
2526
- return http.request(method, requestUrl, {
2527
- body: supportedBody ? genBody(getValidArgs(data, 'body', args), payload) : null,
2528
- params: !supportedBody ? { ...params, ...payload } : params,
2529
- headers: { ...baseData.baseHeaders, ...headers },
2530
- ...options
2531
- });
2532
- };
2533
- return descriptor;
2534
- };
2535
- };
2536
- }
2537
- /**
2538
- * `OPTIONS` 请求
2539
- * - 有效范围:方法
2540
- */
2541
- const OPTIONS = makeMethod('OPTIONS');
2542
- /**
2543
- * `GET` 请求
2544
- * - 有效范围:方法
2545
- */
2546
- const GET = makeMethod('GET');
2547
- /**
2548
- * `POST` 请求
2549
- * - 有效范围:方法
2550
- */
2551
- const POST = makeMethod('POST');
2552
- /**
2553
- * `DELETE` 请求
2554
- * - 有效范围:方法
2555
- */
2556
- const DELETE = makeMethod('DELETE');
2557
- /**
2558
- * `PUT` 请求
2559
- * - 有效范围:方法
2560
- */
2561
- const PUT = makeMethod('PUT');
2562
- /**
2563
- * `HEAD` 请求
2564
- * - 有效范围:方法
2565
- */
2566
- const HEAD = makeMethod('HEAD');
2567
- /**
2568
- * `PATCH` 请求
2569
- * - 有效范围:方法
2570
- */
2571
- const PATCH = makeMethod('PATCH');
2572
- /**
2573
- * `JSONP` 请求
2574
- * - 有效范围:方法
2575
- */
2576
- const JSONP = makeMethod('JSONP');
2577
- /**
2578
- * `FORM` 请求
2579
- * - 有效范围:方法
2580
- */
2581
- const FORM = makeMethod('FORM');
2551
+ };
2582
2552
 
2583
- /**
2584
- * Whether to customize the handling of exception messages
2585
- *
2586
- * 是否自定义处理异常消息
2587
- *
2588
- * @example
2589
- * this.http.post(`login`, {
2590
- * name: 'cipchk', pwd: '123456'
2591
- * }, {
2592
- * context: new HttpContext()
2593
- * .set(ALLOW_ANONYMOUS, true)
2594
- * .set(CUSTOM_ERROR, true)
2595
- * }).subscribe({
2596
- * next: console.log,
2597
- * error: console.log
2598
- * });
2599
- */
2600
- const CUSTOM_ERROR = new HttpContextToken(() => false);
2601
- /**
2602
- * Whether to ignore API prefixes
2603
- *
2604
- * 是否忽略API前缀
2605
- *
2606
- * @example
2607
- * // When environment.api.baseUrl set '/api'
2608
- *
2609
- * this.http.get(`/path`) // Request Url: /api/path
2610
- * this.http.get(`/path`, { context: new HttpContext().set(IGNORE_BASE_URL, true) }) // Request Url: /path
2611
- */
2612
- const IGNORE_BASE_URL = new HttpContextToken(() => false);
2613
- /**
2614
- * Whether to return raw response body
2615
- *
2616
- * 是否原样返回请求Body
2617
- */
2618
- const RAW_BODY = new HttpContextToken(() => false);
2553
+ var itIT = {
2554
+ abbr: 'it-IT',
2555
+ exception: {
2556
+ 403: `Spiacenti, non hai accesso a questa pagina`,
2557
+ 404: `Spiacenti, la pagina che hai visitato non esiste`,
2558
+ 500: `Spiacenti, il server sta riscontrando un errore`,
2559
+ backToHome: 'Torna alla Home'
2560
+ },
2561
+ noticeIcon: {
2562
+ emptyText: 'Nessun dato',
2563
+ clearText: 'Cancella memoria locale'
2564
+ },
2565
+ reuseTab: {
2566
+ close: 'Chiudi la scheda',
2567
+ closeOther: 'Chiudi le altre schede',
2568
+ closeRight: 'Chiudi le schede a destra',
2569
+ refresh: 'Aggiorna'
2570
+ },
2571
+ tagSelect: {
2572
+ expand: 'Espandi',
2573
+ collapse: 'Comprimi'
2574
+ },
2575
+ miniProgress: {
2576
+ target: 'Obiettivo: '
2577
+ },
2578
+ st: {
2579
+ total: '{{range[0]}} - {{range[1]}} di {{total}}',
2580
+ filterConfirm: 'OK',
2581
+ filterReset: 'Reimposta'
2582
+ },
2583
+ sf: {
2584
+ submit: 'Invia',
2585
+ reset: 'Reimposta',
2586
+ search: 'Cerca',
2587
+ edit: 'Salva',
2588
+ addText: 'Aggiungi',
2589
+ removeText: 'Rimuovi',
2590
+ checkAllText: 'Seleziona tutto',
2591
+ error: {
2592
+ 'false schema': `Lo schema booleano è falso`,
2593
+ $ref: `Impossibile risolvere il riferimento {ref}`,
2594
+ additionalItems: `Non deve avere più di {limit} elementi`,
2595
+ additionalProperties: `Non deve avere proprietà aggiuntive`,
2596
+ anyOf: `Deve corrispondere a uno schema in "anyOf"`,
2597
+ dependencies: `Deve avere una proprietà {deps} quando è presente la proprietà {property}`,
2598
+ enum: `Deve essere uguale a uno dei valori predefiniti`,
2599
+ format: `Deve corrispondere al formato "{format}"`,
2600
+ type: `Deve essere {type}`,
2601
+ required: `Obbligatorio`,
2602
+ maxLength: `Non deve essere superiore a {limit} caratteri`,
2603
+ minLength: `Non deve essere superiore a {limit} caratteri`,
2604
+ minimum: `Deve essere {comparison} {limit}`,
2605
+ formatMinimum: `Deve essere {comparison} {limit}`,
2606
+ maximum: `Deve essere {comparison} {limit}`,
2607
+ formatMaximum: `Deve essere {comparison} {limit}`,
2608
+ maxItems: `Non deve avere più di {limit} elementi`,
2609
+ minItems: `Non deve avere meno di {limit} elementi`,
2610
+ maxProperties: `Non deve avere più di {limit} proprietà`,
2611
+ minProperties: `Non deve avere meno di {limit} proprietà`,
2612
+ multipleOf: `Deve essere un multiplo di {multipleOf}`,
2613
+ not: `Non deve essere valido secondo lo schema in "not"`,
2614
+ oneOf: `Deve corrispondere esattamente a uno schema in "oneOf"`,
2615
+ pattern: `Deve corrispondere al modello "{pattern}"`,
2616
+ uniqueItems: `Non deve avere elementi duplicati (gli elementi ## {j} e {i} sono identici)`,
2617
+ custom: `Deve corrispondere al formato "{format}"`,
2618
+ propertyNames: `Il nome della proprietà "{propertyName}" non è valido`,
2619
+ patternRequired: `Deve avere una proprietà corrispondete al modello "{missingPattern}"`,
2620
+ switch: `Deve superare la convalida della parola chiave "switch", il caso {caseIndex} non è riuscito`,
2621
+ const: `Deve essere uguale alla costante`,
2622
+ contains: `Deve contenere un elemento valido`,
2623
+ formatExclusiveMaximum: `formatExclusiveMaximum deve essere booleano`,
2624
+ formatExclusiveMinimum: `formatExclusiveMaximum deve essere booleano`,
2625
+ if: `Deve corrispondere allo schema "{failingKeyword}"`
2626
+ }
2627
+ },
2628
+ onboarding: {
2629
+ skip: `Salta`,
2630
+ prev: `Precedente`,
2631
+ next: `Successivo`,
2632
+ done: `Fatto`
2633
+ }
2634
+ };
2619
2635
 
2620
2636
  class DatePipe {
2621
- constructor(nzI18n) {
2622
- this.nzI18n = nzI18n;
2637
+ constructor() {
2638
+ this.nzI18n = inject(NzI18nService);
2639
+ this.defFormat = inject(AlainConfigService).get('themePipe')?.dateFormat ?? 'yyyy-MM-dd HH:mm';
2623
2640
  }
2624
- transform(value, formatString = 'yyyy-MM-dd HH:mm') {
2625
- return formatDate(value, formatString, this.nzI18n.getDateLocale());
2641
+ transform(value, formatString) {
2642
+ return formatDate(value, formatString ?? this.defFormat, this.nzI18n.getDateLocale());
2626
2643
  }
2627
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DatePipe, deps: [{ token: i1$8.NzI18nService }], target: i0.ɵɵFactoryTarget.Pipe }); }
2628
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: DatePipe, name: "_date" }); }
2644
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2645
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: DatePipe, isStandalone: true, name: "_date" }); }
2629
2646
  }
2630
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: DatePipe, decorators: [{
2647
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DatePipe, decorators: [{
2631
2648
  type: Pipe,
2632
- args: [{ name: '_date' }]
2633
- }], ctorParameters: function () { return [{ type: i1$8.NzI18nService }]; } });
2649
+ args: [{ name: '_date', standalone: true }]
2650
+ }] });
2634
2651
 
2635
2652
  /**
2636
2653
  * [Document](https://ng-alain.com/theme/keys)
@@ -2643,12 +2660,12 @@ class KeysPipe {
2643
2660
  });
2644
2661
  return ret;
2645
2662
  }
2646
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2647
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: KeysPipe, name: "keys" }); }
2663
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: KeysPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2664
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: KeysPipe, isStandalone: true, name: "keys" }); }
2648
2665
  }
2649
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: KeysPipe, decorators: [{
2666
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: KeysPipe, decorators: [{
2650
2667
  type: Pipe,
2651
- args: [{ name: 'keys' }]
2668
+ args: [{ name: 'keys', standalone: true }]
2652
2669
  }] });
2653
2670
 
2654
2671
  const ICON_YES = `<svg viewBox="64 64 896 896" fill="currentColor" width="1em" height="1em" aria-hidden="true"><path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"></path></svg>`;
@@ -2683,13 +2700,13 @@ class YNPipe {
2683
2700
  const html = yn(value, { yes, no, mode });
2684
2701
  return isSafeHtml ? this.dom.bypassSecurityTrustHtml(html) : html;
2685
2702
  }
2686
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: YNPipe, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
2687
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: YNPipe, name: "yn" }); }
2703
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: YNPipe, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
2704
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: YNPipe, isStandalone: true, name: "yn" }); }
2688
2705
  }
2689
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: YNPipe, decorators: [{
2706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: YNPipe, decorators: [{
2690
2707
  type: Pipe,
2691
- args: [{ name: 'yn' }]
2692
- }], ctorParameters: function () { return [{ type: i1$4.DomSanitizer }]; } });
2708
+ args: [{ name: 'yn', standalone: true }]
2709
+ }], ctorParameters: () => [{ type: i1$4.DomSanitizer }] });
2693
2710
 
2694
2711
  class HTMLPipe {
2695
2712
  constructor(dom) {
@@ -2698,13 +2715,13 @@ class HTMLPipe {
2698
2715
  transform(html) {
2699
2716
  return html ? this.dom.bypassSecurityTrustHtml(html) : '';
2700
2717
  }
2701
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: HTMLPipe, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
2702
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: HTMLPipe, name: "html" }); }
2718
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: HTMLPipe, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
2719
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: HTMLPipe, isStandalone: true, name: "html" }); }
2703
2720
  }
2704
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: HTMLPipe, decorators: [{
2721
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: HTMLPipe, decorators: [{
2705
2722
  type: Pipe,
2706
- args: [{ name: 'html' }]
2707
- }], ctorParameters: function () { return [{ type: i1$4.DomSanitizer }]; } });
2723
+ args: [{ name: 'html', standalone: true }]
2724
+ }], ctorParameters: () => [{ type: i1$4.DomSanitizer }] });
2708
2725
 
2709
2726
  class URLPipe {
2710
2727
  constructor(dom) {
@@ -2713,13 +2730,13 @@ class URLPipe {
2713
2730
  transform(url) {
2714
2731
  return url ? this.dom.bypassSecurityTrustUrl(url) : '';
2715
2732
  }
2716
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: URLPipe, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
2717
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: URLPipe, name: "url" }); }
2733
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: URLPipe, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
2734
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: URLPipe, isStandalone: true, name: "url" }); }
2718
2735
  }
2719
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: URLPipe, decorators: [{
2736
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: URLPipe, decorators: [{
2720
2737
  type: Pipe,
2721
- args: [{ name: 'url' }]
2722
- }], ctorParameters: function () { return [{ type: i1$4.DomSanitizer }]; } });
2738
+ args: [{ name: 'url', standalone: true }]
2739
+ }], ctorParameters: () => [{ type: i1$4.DomSanitizer }] });
2723
2740
 
2724
2741
  /* eslint-disable import/order */
2725
2742
  // #region import
@@ -2743,37 +2760,57 @@ class AlainThemeModule {
2743
2760
  providers: HELPERS
2744
2761
  };
2745
2762
  }
2746
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainThemeModule, deps: [{ token: i1$9.NzIconService }], target: i0.ɵɵFactoryTarget.NgModule }); }
2747
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.11", ngImport: i0, type: AlainThemeModule, declarations: [DatePipe, KeysPipe, YNPipe, I18nPipe, HTMLPipe, URLPipe], imports: [CommonModule, RouterModule, OverlayModule, NzI18nModule], exports: [DatePipe, KeysPipe, YNPipe, I18nPipe, HTMLPipe, URLPipe, DelonLocaleModule] }); }
2748
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainThemeModule, providers: [
2749
- {
2750
- provide: ALAIN_SETTING_KEYS,
2751
- useValue: {
2752
- layout: 'layout',
2753
- user: 'user',
2754
- app: 'app'
2755
- }
2756
- }
2757
- ], imports: [CommonModule, RouterModule, OverlayModule, NzI18nModule, DelonLocaleModule] }); }
2763
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainThemeModule, deps: [{ token: i1$8.NzIconService }], target: i0.ɵɵFactoryTarget.NgModule }); }
2764
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: AlainThemeModule, imports: [CommonModule, RouterModule, OverlayModule, NzI18nModule, DatePipe, KeysPipe, YNPipe, I18nPipe, HTMLPipe, URLPipe], exports: [DatePipe, KeysPipe, YNPipe, I18nPipe, HTMLPipe, URLPipe, DelonLocaleModule] }); }
2765
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainThemeModule, providers: [ALAIN_SETTING_DEFAULT], imports: [CommonModule, RouterModule, OverlayModule, NzI18nModule, DelonLocaleModule] }); }
2758
2766
  }
2759
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: AlainThemeModule, decorators: [{
2767
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: AlainThemeModule, decorators: [{
2760
2768
  type: NgModule,
2761
2769
  args: [{
2762
- imports: [CommonModule, RouterModule, OverlayModule, NzI18nModule],
2763
- declarations: PIPES,
2764
- providers: [
2765
- {
2766
- provide: ALAIN_SETTING_KEYS,
2767
- useValue: {
2768
- layout: 'layout',
2769
- user: 'user',
2770
- app: 'app'
2771
- }
2772
- }
2773
- ],
2770
+ imports: [CommonModule, RouterModule, OverlayModule, NzI18nModule, ...PIPES],
2771
+ providers: [ALAIN_SETTING_DEFAULT],
2774
2772
  exports: [...PIPES, DelonLocaleModule]
2775
2773
  }]
2776
- }], ctorParameters: function () { return [{ type: i1$9.NzIconService }]; } });
2774
+ }], ctorParameters: () => [{ type: i1$8.NzIconService }] });
2775
+
2776
+ function provideAlain(options) {
2777
+ const lang = options?.defaultLang;
2778
+ const provides = [
2779
+ { provide: ALAIN_CONFIG, useValue: options?.config },
2780
+ { provide: DELON_LOCALE, useValue: lang?.delon ?? zhCN },
2781
+ DELON_LOCALE_SERVICE_PROVIDER,
2782
+ importProvidersFrom([NzDrawerModule, NzModalModule]),
2783
+ ALAIN_SETTING_DEFAULT
2784
+ ];
2785
+ if (lang) {
2786
+ registerLocaleData(lang.ng, lang.abbr);
2787
+ provides.push({ provide: LOCALE_ID, useValue: lang.abbr }, provideNzI18n(lang.zorro), {
2788
+ provide: NZ_DATE_LOCALE,
2789
+ useValue: lang.date
2790
+ });
2791
+ }
2792
+ const i18nCls = options?.i18nClass;
2793
+ if (i18nCls) {
2794
+ provides.push({ provide: ALAIN_I18N_TOKEN, useClass: i18nCls, multi: false });
2795
+ }
2796
+ const icons = [
2797
+ BellOutline,
2798
+ DeleteOutline,
2799
+ PlusOutline,
2800
+ InboxOutline,
2801
+ MenuFoldOutline,
2802
+ MenuUnfoldOutline,
2803
+ ...(options.icons ?? [])
2804
+ ];
2805
+ provides.push({
2806
+ provide: ENVIRONMENT_INITIALIZER,
2807
+ multi: true,
2808
+ useValue: () => {
2809
+ inject(NzIconService, { optional: true })?.addIcon(...icons);
2810
+ }
2811
+ });
2812
+ return makeEnvironmentProviders(provides);
2813
+ }
2777
2814
 
2778
2815
  /**
2779
2816
  * Optional pre-loading module, when it's necessary to load the resource at the first page load for some lazy routes, [example](https://github.com/ng-alain/ng-alain/blob/master/src/app/routes/routes-routing.module.ts).
@@ -2795,11 +2832,11 @@ class PreloadOptionalModules {
2795
2832
  }
2796
2833
  }
2797
2834
 
2798
- const VERSION = new Version('16.4.2');
2835
+ const VERSION = new Version('17.0.0');
2799
2836
 
2800
2837
  /**
2801
2838
  * Generated bundle index. Do not edit.
2802
2839
  */
2803
2840
 
2804
- export { ALAIN_I18N_TOKEN, ALAIN_SETTING_KEYS, AlainI18NGuardService, AlainI18NServiceFake, AlainI18nBaseService, AlainThemeModule, BaseApi, BaseHeaders, BaseUrl, Body, CUSTOM_ERROR, DELETE, DELON_LOCALE, DELON_LOCALE_SERVICE_PROVIDER, DELON_LOCALE_SERVICE_PROVIDER_FACTORY, DatePipe, DelonLocaleModule, DelonLocaleService, DrawerHelper, FORM, GET, HEAD, HTMLPipe, HTML_DIR, Headers, I18nPipe, IGNORE_BASE_URL, JSONP, KeysPipe, LTR, MenuService, ModalHelper, OPTIONS, PATCH, POST, PUT, Path, Payload, PreloadOptionalModules, Query, RAW_BODY, REP_MAX, RTL, RTLService, RTL_DELON_COMPONENTS, RTL_DIRECTION, RTL_NZ_COMPONENTS, ResponsiveService, SPAN_MAX, SettingsService, TitleService, URLPipe, VERSION, YNPipe, _HttpClient, alainI18nCanActivate, alainI18nCanActivateChild, elGR as el_GR, enUS as en_US, esES as es_ES, frFR as fr_FR, hrHR as hr_HR, itIT as it_IT, jaJP as ja_JP, koKR as ko_KR, plPL as pl_PL, preloaderFinished, slSI as sl_SI, trTR as tr_TR, yn, zhCN as zh_CN, zhTW as zh_TW };
2841
+ export { ALAIN_I18N_TOKEN, ALAIN_SETTING_DEFAULT, ALAIN_SETTING_KEYS, AlainI18NGuardService, AlainI18NServiceFake, AlainI18nBaseService, AlainThemeModule, BaseApi, BaseHeaders, BaseUrl, Body, CUSTOM_ERROR, DELETE, DELON_LOCALE, DELON_LOCALE_SERVICE_PROVIDER, DELON_LOCALE_SERVICE_PROVIDER_FACTORY, DatePipe, DelonLocaleModule, DelonLocaleService, DrawerHelper, FORM, GET, HEAD, HTMLPipe, HTML_DIR, Headers, I18nPipe, IGNORE_BASE_URL, JSONP, KeysPipe, LTR, MenuService, ModalHelper, OPTIONS, PATCH, POST, PUT, Path, Payload, PreloadOptionalModules, Query, RAW_BODY, REP_MAX, RTL, RTLService, RTL_DELON_COMPONENTS, RTL_DIRECTION, RTL_NZ_COMPONENTS, ResponsiveService, SPAN_MAX, SettingsService, TitleService, URLPipe, VERSION, YNPipe, _HttpClient, alainI18nCanActivate, alainI18nCanActivateChild, elGR as el_GR, enUS as en_US, esES as es_ES, frFR as fr_FR, hrHR as hr_HR, itIT as it_IT, jaJP as ja_JP, koKR as ko_KR, plPL as pl_PL, provideAlain, slSI as sl_SI, stepPreloader, trTR as tr_TR, yn, zhCN as zh_CN, zhTW as zh_TW };
2805
2842
  //# sourceMappingURL=theme.mjs.map