@delon/abc 20.1.1 → 21.0.0-next.1

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 (97) hide show
  1. package/fesm2022/auto-focus.mjs +10 -10
  2. package/fesm2022/auto-focus.mjs.map +1 -1
  3. package/fesm2022/cell.mjs +23 -25
  4. package/fesm2022/cell.mjs.map +1 -1
  5. package/fesm2022/chart-observer-size.mjs +21 -34
  6. package/fesm2022/chart-observer-size.mjs.map +1 -1
  7. package/fesm2022/count-down.mjs +24 -31
  8. package/fesm2022/count-down.mjs.map +1 -1
  9. package/fesm2022/date-picker.mjs +89 -85
  10. package/fesm2022/date-picker.mjs.map +1 -1
  11. package/fesm2022/down-file.mjs +23 -43
  12. package/fesm2022/down-file.mjs.map +1 -1
  13. package/fesm2022/ellipsis.mjs +163 -104
  14. package/fesm2022/ellipsis.mjs.map +1 -1
  15. package/fesm2022/error-collect.mjs +11 -13
  16. package/fesm2022/error-collect.mjs.map +1 -1
  17. package/fesm2022/exception.mjs +9 -9
  18. package/fesm2022/exception.mjs.map +1 -1
  19. package/fesm2022/footer-toolbar.mjs +9 -9
  20. package/fesm2022/footer-toolbar.mjs.map +1 -1
  21. package/fesm2022/full-content.mjs +50 -58
  22. package/fesm2022/full-content.mjs.map +1 -1
  23. package/fesm2022/global-footer.mjs +14 -15
  24. package/fesm2022/global-footer.mjs.map +1 -1
  25. package/fesm2022/hotkey.mjs +7 -7
  26. package/fesm2022/hotkey.mjs.map +1 -1
  27. package/fesm2022/loading.mjs +61 -14
  28. package/fesm2022/loading.mjs.map +1 -1
  29. package/fesm2022/lodop.mjs +7 -7
  30. package/fesm2022/media.mjs +37 -61
  31. package/fesm2022/media.mjs.map +1 -1
  32. package/fesm2022/notice-icon.mjs +220 -25
  33. package/fesm2022/notice-icon.mjs.map +1 -1
  34. package/fesm2022/onboarding.mjs +160 -62
  35. package/fesm2022/onboarding.mjs.map +1 -1
  36. package/fesm2022/page-header.mjs +252 -155
  37. package/fesm2022/page-header.mjs.map +1 -1
  38. package/fesm2022/pdf.mjs +7 -7
  39. package/fesm2022/pdf.mjs.map +1 -1
  40. package/fesm2022/quick-menu.mjs +79 -71
  41. package/fesm2022/quick-menu.mjs.map +1 -1
  42. package/fesm2022/reuse-tab.mjs +257 -160
  43. package/fesm2022/reuse-tab.mjs.map +1 -1
  44. package/fesm2022/se.mjs +289 -309
  45. package/fesm2022/se.mjs.map +1 -1
  46. package/fesm2022/sg.mjs +32 -69
  47. package/fesm2022/sg.mjs.map +1 -1
  48. package/fesm2022/st.mjs +93 -84
  49. package/fesm2022/st.mjs.map +1 -1
  50. package/fesm2022/sv.mjs +185 -174
  51. package/fesm2022/sv.mjs.map +1 -1
  52. package/fesm2022/tag-select.mjs +44 -25
  53. package/fesm2022/tag-select.mjs.map +1 -1
  54. package/fesm2022/xlsx.mjs +14 -17
  55. package/fesm2022/xlsx.mjs.map +1 -1
  56. package/fesm2022/zip.mjs +4 -4
  57. package/fesm2022/zip.mjs.map +1 -1
  58. package/package.json +37 -37
  59. package/{auto-focus/index.d.ts → types/auto-focus.d.ts} +2 -2
  60. package/{cell/index.d.ts → types/cell.d.ts} +12 -13
  61. package/{observers/index.d.ts → types/chart-observer-size.d.ts} +5 -9
  62. package/{count-down/index.d.ts → types/count-down.d.ts} +6 -10
  63. package/{date-picker/index.d.ts → types/date-picker.d.ts} +6 -10
  64. package/types/down-file.d.ts +32 -0
  65. package/types/ellipsis.d.ts +46 -0
  66. package/types/error-collect.d.ts +34 -0
  67. package/{exception/index.d.ts → types/exception.d.ts} +13 -13
  68. package/{footer-toolbar/index.d.ts → types/footer-toolbar.d.ts} +2 -2
  69. package/{full-content/index.d.ts → types/full-content.d.ts} +8 -13
  70. package/{global-footer/index.d.ts → types/global-footer.d.ts} +7 -7
  71. package/{loading/index.d.ts → types/loading.d.ts} +1 -0
  72. package/{media/index.d.ts → types/media.d.ts} +10 -16
  73. package/{notice-icon/index.d.ts → types/notice-icon.d.ts} +15 -15
  74. package/{onboarding/index.d.ts → types/onboarding.d.ts} +12 -14
  75. package/types/page-header.d.ts +67 -0
  76. package/types/quick-menu.d.ts +31 -0
  77. package/{reuse-tab/index.d.ts → types/reuse-tab.d.ts} +46 -55
  78. package/types/se.d.ts +101 -0
  79. package/types/sg.d.ts +31 -0
  80. package/{st/index.d.ts → types/st.d.ts} +10 -2
  81. package/types/sv.d.ts +81 -0
  82. package/types/tag-select.d.ts +25 -0
  83. package/{xlsx/index.d.ts → types/xlsx.d.ts} +3 -3
  84. package/down-file/index.d.ts +0 -34
  85. package/ellipsis/index.d.ts +0 -55
  86. package/error-collect/index.d.ts +0 -35
  87. package/page-header/index.d.ts +0 -83
  88. package/quick-menu/index.d.ts +0 -38
  89. package/se/index.d.ts +0 -129
  90. package/sg/index.d.ts +0 -44
  91. package/sv/index.d.ts +0 -96
  92. package/tag-select/index.d.ts +0 -27
  93. /package/{index.d.ts → types/abc.d.ts} +0 -0
  94. /package/{hotkey/index.d.ts → types/hotkey.d.ts} +0 -0
  95. /package/{lodop/index.d.ts → types/lodop.d.ts} +0 -0
  96. /package/{pdf/index.d.ts → types/pdf.d.ts} +0 -0
  97. /package/{zip/index.d.ts → types/zip.d.ts} +0 -0
@@ -1,47 +1,44 @@
1
1
  import { Directionality } from '@angular/cdk/bidi';
2
2
  import { DOCUMENT, CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { inject, ElementRef, ChangeDetectorRef, EventEmitter, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, InjectionToken, ApplicationRef, createComponent, Injectable, NgModule } from '@angular/core';
4
+ import { inject, ElementRef, Injector, EventEmitter, signal, viewChild, afterNextRender, effect, runInInjectionContext, ViewEncapsulation, ChangeDetectionStrategy, Component, InjectionToken, ApplicationRef, createComponent, Injectable, NgModule } from '@angular/core';
5
5
  import { Router } from '@angular/router';
6
- import { of, switchMap, delay, pipe } from 'rxjs';
6
+ import { fromEvent, debounceTime, of, switchMap, delay, pipe } from 'rxjs';
7
7
  import { DelonLocaleService, DelonLocaleModule } from '@delon/theme';
8
8
  import { AlainConfigService } from '@delon/util/config';
9
9
  import { Platform } from '@angular/cdk/platform';
10
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
11
  import { NzButtonComponent, NzButtonModule } from 'ng-zorro-antd/button';
11
- import { NzNoAnimationDirective, NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';
12
+ import { NzNoAnimationDirective, provideNzNoAnimation } from 'ng-zorro-antd/core/animation';
12
13
  import { NzStringTemplateOutletDirective, NzOutletModule } from 'ng-zorro-antd/core/outlet';
13
14
  import { NzPopoverDirective, NzPopoverModule } from 'ng-zorro-antd/popover';
14
15
 
15
16
  class OnboardingComponent {
16
17
  el = inject(ElementRef).nativeElement;
18
+ injector = inject(Injector);
17
19
  platform = inject(Platform);
18
- cdr = inject(ChangeDetectorRef);
19
20
  doc = inject(DOCUMENT);
20
- time;
21
21
  prevSelectorEl;
22
22
  config;
23
23
  item;
24
24
  active = 0;
25
25
  max = 0;
26
26
  op = new EventEmitter();
27
- running = false;
27
+ running = signal(false, ...(ngDevMode ? [{ debugName: "running" }] : []));
28
28
  dir = 'ltr';
29
- popover;
29
+ popover = viewChild.required(NzPopoverDirective);
30
30
  get first() {
31
31
  return this.active === 0;
32
32
  }
33
33
  get last() {
34
34
  return this.active === this.max - 1;
35
35
  }
36
- _getDoc() {
37
- return this.doc;
38
- }
39
- _getWin() {
40
- return this._getDoc().defaultView ?? window;
36
+ get _getWin() {
37
+ return this.doc.defaultView ?? window;
41
38
  }
42
39
  getLightData() {
43
- const doc = this._getDoc();
44
- const win = this._getWin();
40
+ const doc = this.doc;
41
+ const win = this._getWin;
45
42
  const el = doc.querySelector(this.item.selectors);
46
43
  if (!el) {
47
44
  return null;
@@ -65,22 +62,34 @@ class OnboardingComponent {
65
62
  clientHeight: doc.body.clientHeight
66
63
  };
67
64
  }
68
- ngAfterViewInit() {
69
- // Waiting https://github.com/NG-ZORRO/ng-zorro-antd/issues/6491
70
- this.popover.component.onClickOutside = () => { };
65
+ constructor() {
66
+ afterNextRender(() => {
67
+ // Waiting https://github.com/NG-ZORRO/ng-zorro-antd/issues/6491
68
+ this.popover().component.onClickOutside = () => { };
69
+ });
70
+ effect(() => {
71
+ const running = this.running();
72
+ if (!running) {
73
+ runInInjectionContext(this.injector, () => {
74
+ afterNextRender(() => {
75
+ this.updatePosition();
76
+ });
77
+ });
78
+ }
79
+ });
80
+ // when window resize
81
+ fromEvent(window, 'resize')
82
+ .pipe(takeUntilDestroyed(), debounceTime(100))
83
+ .subscribe(() => this.updatePosition());
71
84
  }
72
85
  scroll(pos) {
73
86
  this.prevSelectorEl = pos.el;
74
87
  const scrollY = pos.top - (pos.clientHeight - pos.height) / 2;
75
- this._getWin().scrollTo({ top: scrollY });
88
+ this._getWin.scrollTo({ top: scrollY });
76
89
  this.updatePrevElStatus(true);
77
90
  }
78
91
  updateRunning(status) {
79
- this.running = status;
80
- this.cdr.detectChanges();
81
- if (!status) {
82
- this.updatePosition();
83
- }
92
+ this.running.set(status);
84
93
  }
85
94
  updatePosition() {
86
95
  if (!this.platform.isBrowser) {
@@ -111,28 +120,135 @@ class OnboardingComponent {
111
120
  }
112
121
  handleMask() {
113
122
  if (this.config.maskClosable === true) {
114
- this.popover.component.hide();
123
+ this.popover().component?.hide();
115
124
  this.to('done');
116
125
  }
117
126
  }
118
127
  ngOnDestroy() {
119
- clearTimeout(this.time);
120
128
  this.updatePrevElStatus(false);
121
129
  }
122
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: OnboardingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
123
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: OnboardingComponent, isStandalone: true, selector: "onboarding", host: { properties: { "class.onboarding": "true", "class.onboarding-rtl": "dir === 'rtl'", "attr.data-onboarding-active": "active" } }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: "@if (!running && config.mask) {\n <div class=\"onboarding__mask\" (click)=\"handleMask()\"></div>\n}\n@if (item) {\n <div\n class=\"onboarding__light\"\n [class.onboarding__light-hide]=\"running\"\n [attr.style]=\"item.lightStyle\"\n nz-popover\n #popover=\"nzPopover\"\n [nzPopoverTitle]=\"item.title\"\n [nzPopoverContent]=\"content\"\n [nzPopoverVisible]=\"!running\"\n [nzPopoverTrigger]=\"null\"\n [nzPopoverPlacement]=\"item.position\"\n [nzPopoverOverlayClassName]=\"item.className\"\n [nzPopoverOverlayStyle]=\"{ 'max-width.px': item.width, direction: dir }\"\n [nzNoAnimation]=\"true\"\n ></div>\n <ng-template #content>\n <ng-container *nzStringTemplateOutlet=\"item.content\">\n <div [innerHTML]=\"item.content\"></div>\n </ng-container>\n <div class=\"flex-center-between onboarding__footer\">\n <span class=\"onboarding__total\">\n @if (config.showTotal) {\n {{ active + 1 }}/{{ max }}\n }\n </span>\n <div class=\"onboarding__btns\">\n @if (!last && item.skip !== null && item.skip !== undefined) {\n <a nz-button nzType=\"link\" (click)=\"to('skip')\" nzSize=\"small\" data-btnType=\"skip\">\n <ng-container *nzStringTemplateOutlet=\"item.skip\">{{ item.skip }}</ng-container>\n </a>\n }\n @if (!first && item.prev !== null) {\n <a nz-button (click)=\"to('prev')\" nzSize=\"small\" data-btnType=\"prev\">\n <ng-container *nzStringTemplateOutlet=\"item.prev\">{{ item.prev }}</ng-container>\n </a>\n }\n @if (!last && item.next !== null && item.next !== undefined) {\n <a nz-button (click)=\"to('next')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"next\">\n <ng-container *nzStringTemplateOutlet=\"item.next\">{{ item.next }}</ng-container>\n </a>\n }\n @if (last && item.done !== null && item.done !== undefined) {\n <a nz-button (click)=\"to('done')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"done\">\n <ng-container *nzStringTemplateOutlet=\"item.done\">{{ item.done }}</ng-container>\n </a>\n }\n </div>\n </div>\n </ng-template>\n}\n", dependencies: [{ kind: "directive", type: NzPopoverDirective, selector: "[nz-popover]", inputs: ["nzPopoverArrowPointAtCenter", "nzPopoverTitle", "nzPopoverTitleContext", "nzPopoverContent", "nzPopoverContentContext", "nz-popover", "nzPopoverTrigger", "nzPopoverPlacement", "nzPopoverOrigin", "nzPopoverVisible", "nzPopoverMouseEnterDelay", "nzPopoverMouseLeaveDelay", "nzPopoverOverlayClassName", "nzPopoverOverlayStyle", "nzPopoverOverlayClickable", "nzPopoverBackdrop"], outputs: ["nzPopoverVisibleChange"], exportAs: ["nzPopover"] }, { kind: "directive", type: NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }, { kind: "component", type: NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: NzNoAnimationDirective, selector: "[nzNoAnimation]", inputs: ["nzNoAnimation"], exportAs: ["nzNoAnimation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
130
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OnboardingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
131
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: OnboardingComponent, isStandalone: true, selector: "onboarding", host: { properties: { "class.onboarding-rtl": "dir === 'rtl'", "attr.data-onboarding-active": "active" }, classAttribute: "onboarding" }, viewQueries: [{ propertyName: "popover", first: true, predicate: NzPopoverDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
132
+ @if (!running() && config.mask) {
133
+ <div class="onboarding__mask" (click)="handleMask()"></div>
134
+ }
135
+ <div
136
+ class="onboarding__light"
137
+ [class.onboarding__light-hide]="running()"
138
+ [attr.style]="item.lightStyle"
139
+ nz-popover
140
+ [nzPopoverTitle]="item.title"
141
+ [nzPopoverContent]="content"
142
+ [nzPopoverVisible]="!running()"
143
+ [nzPopoverTrigger]="null"
144
+ [nzPopoverPlacement]="item.position"
145
+ [nzPopoverOverlayClassName]="item.className"
146
+ [nzPopoverOverlayStyle]="{ 'max-width.px': item.width, direction: dir }"
147
+ [nzNoAnimation]="true"
148
+ ></div>
149
+ <ng-template #content>
150
+ <ng-container *nzStringTemplateOutlet="item.content">
151
+ <div [innerHTML]="item.content"></div>
152
+ </ng-container>
153
+ <div class="flex-center-between onboarding__footer">
154
+ <span class="onboarding__total">
155
+ @if (config.showTotal) {
156
+ {{ active + 1 }}/{{ max }}
157
+ }
158
+ </span>
159
+ <div class="onboarding__btns">
160
+ @if (!last && item.skip !== null && item.skip !== undefined) {
161
+ <a nz-button nzType="link" (click)="to('skip')" nzSize="small" data-btnType="skip">
162
+ <ng-container *nzStringTemplateOutlet="item.skip">{{ item.skip }}</ng-container>
163
+ </a>
164
+ }
165
+ @if (!first && item.prev !== null) {
166
+ <a nz-button (click)="to('prev')" nzSize="small" data-btnType="prev">
167
+ <ng-container *nzStringTemplateOutlet="item.prev">{{ item.prev }}</ng-container>
168
+ </a>
169
+ }
170
+ @if (!last && item.next !== null && item.next !== undefined) {
171
+ <a nz-button (click)="to('next')" nzType="primary" nzSize="small" data-btnType="next">
172
+ <ng-container *nzStringTemplateOutlet="item.next">{{ item.next }}</ng-container>
173
+ </a>
174
+ }
175
+ @if (last && item.done !== null && item.done !== undefined) {
176
+ <a nz-button (click)="to('done')" nzType="primary" nzSize="small" data-btnType="done">
177
+ <ng-container *nzStringTemplateOutlet="item.done">{{ item.done }}</ng-container>
178
+ </a>
179
+ }
180
+ </div>
181
+ </div>
182
+ </ng-template>
183
+ `, isInline: true, dependencies: [{ kind: "directive", type: NzPopoverDirective, selector: "[nz-popover]", inputs: ["nzPopoverArrowPointAtCenter", "nzPopoverTitle", "nzPopoverTitleContext", "nzPopoverContent", "nzPopoverContentContext", "nz-popover", "nzPopoverTrigger", "nzPopoverPlacement", "nzPopoverOrigin", "nzPopoverVisible", "nzPopoverMouseEnterDelay", "nzPopoverMouseLeaveDelay", "nzPopoverOverlayClassName", "nzPopoverOverlayStyle", "nzPopoverOverlayClickable", "nzPopoverBackdrop"], outputs: ["nzPopoverVisibleChange"], exportAs: ["nzPopover"] }, { kind: "directive", type: NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }, { kind: "component", type: NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: NzNoAnimationDirective, selector: "[nzNoAnimation]", inputs: ["nzNoAnimation"], exportAs: ["nzNoAnimation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
124
184
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: OnboardingComponent, decorators: [{
185
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OnboardingComponent, decorators: [{
126
186
  type: Component,
127
- args: [{ selector: 'onboarding', host: {
128
- '[class.onboarding]': `true`,
187
+ args: [{
188
+ selector: 'onboarding',
189
+ template: `
190
+ @if (!running() && config.mask) {
191
+ <div class="onboarding__mask" (click)="handleMask()"></div>
192
+ }
193
+ <div
194
+ class="onboarding__light"
195
+ [class.onboarding__light-hide]="running()"
196
+ [attr.style]="item.lightStyle"
197
+ nz-popover
198
+ [nzPopoverTitle]="item.title"
199
+ [nzPopoverContent]="content"
200
+ [nzPopoverVisible]="!running()"
201
+ [nzPopoverTrigger]="null"
202
+ [nzPopoverPlacement]="item.position"
203
+ [nzPopoverOverlayClassName]="item.className"
204
+ [nzPopoverOverlayStyle]="{ 'max-width.px': item.width, direction: dir }"
205
+ [nzNoAnimation]="true"
206
+ ></div>
207
+ <ng-template #content>
208
+ <ng-container *nzStringTemplateOutlet="item.content">
209
+ <div [innerHTML]="item.content"></div>
210
+ </ng-container>
211
+ <div class="flex-center-between onboarding__footer">
212
+ <span class="onboarding__total">
213
+ @if (config.showTotal) {
214
+ {{ active + 1 }}/{{ max }}
215
+ }
216
+ </span>
217
+ <div class="onboarding__btns">
218
+ @if (!last && item.skip !== null && item.skip !== undefined) {
219
+ <a nz-button nzType="link" (click)="to('skip')" nzSize="small" data-btnType="skip">
220
+ <ng-container *nzStringTemplateOutlet="item.skip">{{ item.skip }}</ng-container>
221
+ </a>
222
+ }
223
+ @if (!first && item.prev !== null) {
224
+ <a nz-button (click)="to('prev')" nzSize="small" data-btnType="prev">
225
+ <ng-container *nzStringTemplateOutlet="item.prev">{{ item.prev }}</ng-container>
226
+ </a>
227
+ }
228
+ @if (!last && item.next !== null && item.next !== undefined) {
229
+ <a nz-button (click)="to('next')" nzType="primary" nzSize="small" data-btnType="next">
230
+ <ng-container *nzStringTemplateOutlet="item.next">{{ item.next }}</ng-container>
231
+ </a>
232
+ }
233
+ @if (last && item.done !== null && item.done !== undefined) {
234
+ <a nz-button (click)="to('done')" nzType="primary" nzSize="small" data-btnType="done">
235
+ <ng-container *nzStringTemplateOutlet="item.done">{{ item.done }}</ng-container>
236
+ </a>
237
+ }
238
+ </div>
239
+ </div>
240
+ </ng-template>
241
+ `,
242
+ host: {
243
+ class: 'onboarding',
129
244
  '[class.onboarding-rtl]': `dir === 'rtl'`,
130
245
  '[attr.data-onboarding-active]': `active`
131
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NzPopoverDirective, NzStringTemplateOutletDirective, NzButtonComponent, NzNoAnimationDirective], template: "@if (!running && config.mask) {\n <div class=\"onboarding__mask\" (click)=\"handleMask()\"></div>\n}\n@if (item) {\n <div\n class=\"onboarding__light\"\n [class.onboarding__light-hide]=\"running\"\n [attr.style]=\"item.lightStyle\"\n nz-popover\n #popover=\"nzPopover\"\n [nzPopoverTitle]=\"item.title\"\n [nzPopoverContent]=\"content\"\n [nzPopoverVisible]=\"!running\"\n [nzPopoverTrigger]=\"null\"\n [nzPopoverPlacement]=\"item.position\"\n [nzPopoverOverlayClassName]=\"item.className\"\n [nzPopoverOverlayStyle]=\"{ 'max-width.px': item.width, direction: dir }\"\n [nzNoAnimation]=\"true\"\n ></div>\n <ng-template #content>\n <ng-container *nzStringTemplateOutlet=\"item.content\">\n <div [innerHTML]=\"item.content\"></div>\n </ng-container>\n <div class=\"flex-center-between onboarding__footer\">\n <span class=\"onboarding__total\">\n @if (config.showTotal) {\n {{ active + 1 }}/{{ max }}\n }\n </span>\n <div class=\"onboarding__btns\">\n @if (!last && item.skip !== null && item.skip !== undefined) {\n <a nz-button nzType=\"link\" (click)=\"to('skip')\" nzSize=\"small\" data-btnType=\"skip\">\n <ng-container *nzStringTemplateOutlet=\"item.skip\">{{ item.skip }}</ng-container>\n </a>\n }\n @if (!first && item.prev !== null) {\n <a nz-button (click)=\"to('prev')\" nzSize=\"small\" data-btnType=\"prev\">\n <ng-container *nzStringTemplateOutlet=\"item.prev\">{{ item.prev }}</ng-container>\n </a>\n }\n @if (!last && item.next !== null && item.next !== undefined) {\n <a nz-button (click)=\"to('next')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"next\">\n <ng-container *nzStringTemplateOutlet=\"item.next\">{{ item.next }}</ng-container>\n </a>\n }\n @if (last && item.done !== null && item.done !== undefined) {\n <a nz-button (click)=\"to('done')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"done\">\n <ng-container *nzStringTemplateOutlet=\"item.done\">{{ item.done }}</ng-container>\n </a>\n }\n </div>\n </div>\n </ng-template>\n}\n" }]
132
- }], propDecorators: { popover: [{
133
- type: ViewChild,
134
- args: ['popover', { static: false }]
135
- }] } });
246
+ },
247
+ changeDetection: ChangeDetectionStrategy.OnPush,
248
+ encapsulation: ViewEncapsulation.None,
249
+ imports: [NzPopoverDirective, NzStringTemplateOutletDirective, NzButtonComponent, NzNoAnimationDirective]
250
+ }]
251
+ }], ctorParameters: () => [], propDecorators: { popover: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NzPopoverDirective), { isSignal: true }] }] } });
136
252
 
137
253
  const ONBOARDING_STORE_TOKEN = new InjectionToken('ONBOARDING_STORE_TOKEN', {
138
254
  providedIn: 'root',
@@ -325,43 +441,25 @@ class OnboardingService {
325
441
  ngOnDestroy() {
326
442
  this.destroy();
327
443
  }
328
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: OnboardingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
329
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: OnboardingService, providedIn: 'root' });
444
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OnboardingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
445
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OnboardingService, providedIn: 'root' });
330
446
  }
331
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: OnboardingService, decorators: [{
447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OnboardingService, decorators: [{
332
448
  type: Injectable,
333
449
  args: [{ providedIn: 'root' }]
334
450
  }] });
335
451
 
336
452
  const COMPONENTS = [OnboardingComponent];
337
453
  class OnboardingModule {
338
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: OnboardingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
339
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: OnboardingModule, imports: [CommonModule,
340
- DelonLocaleModule,
341
- NzPopoverModule,
342
- NzOutletModule,
343
- NzButtonModule,
344
- NzNoAnimationModule, OnboardingComponent], exports: [OnboardingComponent] });
345
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: OnboardingModule, imports: [CommonModule,
346
- DelonLocaleModule,
347
- NzPopoverModule,
348
- NzOutletModule,
349
- NzButtonModule,
350
- NzNoAnimationModule,
351
- COMPONENTS] });
454
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OnboardingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
455
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: OnboardingModule, imports: [CommonModule, DelonLocaleModule, NzPopoverModule, NzOutletModule, NzButtonModule, OnboardingComponent], exports: [OnboardingComponent] });
456
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OnboardingModule, providers: [provideNzNoAnimation()], imports: [CommonModule, DelonLocaleModule, NzPopoverModule, NzOutletModule, NzButtonModule, COMPONENTS] });
352
457
  }
353
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: OnboardingModule, decorators: [{
458
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: OnboardingModule, decorators: [{
354
459
  type: NgModule,
355
460
  args: [{
356
- imports: [
357
- CommonModule,
358
- DelonLocaleModule,
359
- NzPopoverModule,
360
- NzOutletModule,
361
- NzButtonModule,
362
- NzNoAnimationModule,
363
- COMPONENTS
364
- ],
461
+ providers: [provideNzNoAnimation()],
462
+ imports: [CommonModule, DelonLocaleModule, NzPopoverModule, NzOutletModule, NzButtonModule, COMPONENTS],
365
463
  exports: COMPONENTS
366
464
  }]
367
465
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.mjs","sources":["../../../../packages/abc/onboarding/onboarding.component.ts","../../../../packages/abc/onboarding/onboarding.component.html","../../../../packages/abc/onboarding/onboarding.storage.ts","../../../../packages/abc/onboarding/onboarding.service.ts","../../../../packages/abc/onboarding/onboarding.module.ts","../../../../packages/abc/onboarding/onboarding.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { NzButtonComponent } from 'ng-zorro-antd/button';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzPopoverDirective } from 'ng-zorro-antd/popover';\n\nimport { OnboardingConfig, OnboardingItem, OnboardingOpType } from './onboarding.types';\n\ninterface OnboardingLightData {\n el: HTMLElement;\n top: number;\n left: number;\n width: number;\n height: number;\n clientHeight: number;\n clientWidth: number;\n}\n\n@Component({\n selector: 'onboarding',\n templateUrl: './onboarding.component.html',\n host: {\n '[class.onboarding]': `true`,\n '[class.onboarding-rtl]': `dir === 'rtl'`,\n '[attr.data-onboarding-active]': `active`\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NzPopoverDirective, NzStringTemplateOutletDirective, NzButtonComponent, NzNoAnimationDirective]\n})\nexport class OnboardingComponent implements OnDestroy, AfterViewInit {\n private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n private readonly platform = inject(Platform);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly doc = inject(DOCUMENT);\n\n private time: NzSafeAny;\n private prevSelectorEl?: HTMLElement;\n config!: OnboardingConfig;\n item!: OnboardingItem;\n active = 0;\n max = 0;\n readonly op = new EventEmitter<OnboardingOpType>();\n running = false;\n dir: Direction = 'ltr';\n @ViewChild('popover', { static: false }) private popover!: NzPopoverDirective;\n\n get first(): boolean {\n return this.active === 0;\n }\n\n get last(): boolean {\n return this.active === this.max - 1;\n }\n\n private _getDoc(): Document {\n return this.doc;\n }\n\n private _getWin(): Window {\n return this._getDoc().defaultView ?? window;\n }\n\n private getLightData(): OnboardingLightData | null {\n const doc = this._getDoc();\n const win = this._getWin();\n const el = doc.querySelector(this.item.selectors) as HTMLElement;\n if (!el) {\n return null;\n }\n\n const scrollTop = win.scrollY ?? doc.documentElement.scrollTop ?? doc.body.scrollTop;\n const scrollLeft = win.scrollX ?? doc.documentElement.scrollLeft ?? doc.body.scrollLeft;\n const rect = el.getBoundingClientRect();\n const top = rect.top + scrollTop;\n const left = rect.left + scrollLeft;\n const padding = 8;\n const needPadding = top > padding && left > padding;\n const offsetPos = needPadding ? padding : 0;\n const offsetWH = needPadding ? padding * 2 : 0;\n return {\n top: top - offsetPos,\n left: left - offsetPos,\n width: rect.width + offsetWH,\n height: rect.height + offsetWH,\n el,\n clientWidth: doc.body.clientWidth,\n clientHeight: doc.body.clientHeight\n };\n }\n\n ngAfterViewInit(): void {\n // Waiting https://github.com/NG-ZORRO/ng-zorro-antd/issues/6491\n this.popover.component!.onClickOutside = () => {};\n }\n\n private scroll(pos: OnboardingLightData): void {\n this.prevSelectorEl = pos.el;\n const scrollY = pos.top - (pos.clientHeight - pos.height) / 2;\n this._getWin().scrollTo({ top: scrollY });\n this.updatePrevElStatus(true);\n }\n\n updateRunning(status: boolean): void {\n this.running = status;\n this.cdr.detectChanges();\n if (!status) {\n this.updatePosition();\n }\n }\n\n private updatePosition(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n\n const pos = this.getLightData();\n if (pos == null) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(`Did not matches selectors [${this.item.selectors}]`);\n }\n return;\n }\n\n const lightStyle = (this.el.querySelector('.onboarding__light') as HTMLElement).style;\n lightStyle.top = `${pos.top}px`;\n lightStyle.left = `${pos.left}px`;\n lightStyle.width = `${pos.width}px`;\n lightStyle.height = `${pos.height}px`;\n\n this.updatePrevElStatus(false);\n this.scroll(pos);\n }\n\n private updatePrevElStatus(status: boolean): void {\n if (this.prevSelectorEl) {\n this.prevSelectorEl.classList[status ? 'add' : 'remove']('onboarding__light-el');\n }\n }\n\n to(type: OnboardingOpType): void {\n this.op.emit(type);\n }\n\n handleMask(): void {\n if (this.config.maskClosable === true) {\n this.popover.component!.hide();\n this.to('done');\n }\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.time);\n this.updatePrevElStatus(false);\n }\n}\n","@if (!running && config.mask) {\n <div class=\"onboarding__mask\" (click)=\"handleMask()\"></div>\n}\n@if (item) {\n <div\n class=\"onboarding__light\"\n [class.onboarding__light-hide]=\"running\"\n [attr.style]=\"item.lightStyle\"\n nz-popover\n #popover=\"nzPopover\"\n [nzPopoverTitle]=\"item.title\"\n [nzPopoverContent]=\"content\"\n [nzPopoverVisible]=\"!running\"\n [nzPopoverTrigger]=\"null\"\n [nzPopoverPlacement]=\"item.position\"\n [nzPopoverOverlayClassName]=\"item.className\"\n [nzPopoverOverlayStyle]=\"{ 'max-width.px': item.width, direction: dir }\"\n [nzNoAnimation]=\"true\"\n ></div>\n <ng-template #content>\n <ng-container *nzStringTemplateOutlet=\"item.content\">\n <div [innerHTML]=\"item.content\"></div>\n </ng-container>\n <div class=\"flex-center-between onboarding__footer\">\n <span class=\"onboarding__total\">\n @if (config.showTotal) {\n {{ active + 1 }}/{{ max }}\n }\n </span>\n <div class=\"onboarding__btns\">\n @if (!last && item.skip !== null && item.skip !== undefined) {\n <a nz-button nzType=\"link\" (click)=\"to('skip')\" nzSize=\"small\" data-btnType=\"skip\">\n <ng-container *nzStringTemplateOutlet=\"item.skip\">{{ item.skip }}</ng-container>\n </a>\n }\n @if (!first && item.prev !== null) {\n <a nz-button (click)=\"to('prev')\" nzSize=\"small\" data-btnType=\"prev\">\n <ng-container *nzStringTemplateOutlet=\"item.prev\">{{ item.prev }}</ng-container>\n </a>\n }\n @if (!last && item.next !== null && item.next !== undefined) {\n <a nz-button (click)=\"to('next')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"next\">\n <ng-container *nzStringTemplateOutlet=\"item.next\">{{ item.next }}</ng-container>\n </a>\n }\n @if (last && item.done !== null && item.done !== undefined) {\n <a nz-button (click)=\"to('done')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"done\">\n <ng-container *nzStringTemplateOutlet=\"item.done\">{{ item.done }}</ng-container>\n </a>\n }\n </div>\n </div>\n </ng-template>\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface OnBoardingKeyStore {\n get(key: string): unknown;\n\n set(key: string, version: unknown): void;\n}\n\nexport const ONBOARDING_STORE_TOKEN = new InjectionToken<OnBoardingKeyStore>('ONBOARDING_STORE_TOKEN', {\n providedIn: 'root',\n factory: ONBOARDING_STORE_TOKEN_FACTORY\n});\n\nexport function ONBOARDING_STORE_TOKEN_FACTORY(): OnBoardingKeyStore {\n return new LocalStorageStore();\n}\n\nexport class LocalStorageStore implements OnBoardingKeyStore {\n get(key: string): unknown {\n return localStorage.getItem(key);\n }\n\n set(key: string, version: unknown): void {\n localStorage.setItem(key, `${version}`);\n }\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n OnDestroy,\n createComponent,\n inject\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { of, pipe, Subscription, delay, switchMap } from 'rxjs';\n\nimport { DelonLocaleService } from '@delon/theme';\nimport { AlainConfigService } from '@delon/util/config';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { OnboardingComponent } from './onboarding.component';\nimport { ONBOARDING_STORE_TOKEN } from './onboarding.storage';\nimport { OnboardingConfig, OnboardingItem, OnboardingOpType } from './onboarding.types';\n\n@Injectable({ providedIn: 'root' })\nexport class OnboardingService implements OnDestroy {\n private readonly appRef = inject(ApplicationRef);\n private readonly router = inject(Router);\n private readonly doc = inject(DOCUMENT);\n private readonly configSrv = inject(AlainConfigService);\n private readonly keyStoreSrv = inject(ONBOARDING_STORE_TOKEN);\n private readonly directionality = inject(Directionality);\n\n private compRef!: ComponentRef<OnboardingComponent>;\n private op$!: Subscription;\n private config?: OnboardingConfig;\n private active = 0;\n private running$: Subscription | null = null;\n private _running = false;\n private type: OnboardingOpType | null = null;\n private locale = inject(DelonLocaleService).valueSignal('onboarding');\n\n private _getDoc(): Document {\n return this.doc;\n }\n\n /**\n * Get whether it is booting\n *\n * 获取是否正在引导中\n */\n get running(): boolean {\n return this._running;\n }\n\n private attach(): void {\n const compRef = createComponent(OnboardingComponent, {\n environmentInjector: this.appRef.injector\n });\n this.compRef = compRef;\n this.appRef.attachView(compRef.hostView);\n const compNode = (compRef.hostView as EmbeddedViewRef<NzSafeAny>).rootNodes[0];\n const doc = this._getDoc();\n const cdk = doc.querySelector('.cdk-overlay-container') as HTMLElement;\n if (cdk) {\n doc.body.insertBefore(compNode, cdk);\n } else {\n doc.body.appendChild(compNode);\n }\n this.op$ = this.compRef.instance.op.subscribe((type: OnboardingOpType) => {\n switch (type) {\n case 'next':\n this.next();\n break;\n case 'prev':\n this.prev();\n break;\n default:\n this.done();\n break;\n }\n });\n }\n\n private cancelRunning(): this {\n if (this.running$) {\n this.running$.unsubscribe();\n this.running$ = null;\n }\n return this;\n }\n\n private updateRunning(status: boolean): this {\n this._running = status;\n this.compRef!.instance.updateRunning(status);\n return this;\n }\n\n private destroy(): void {\n const storeKey = this.config?.key;\n if (storeKey != null) {\n this.keyStoreSrv.set(storeKey, this.config?.keyVersion);\n }\n this.cancelRunning();\n if (this.compRef) {\n this.appRef.detachView(this.compRef.hostView);\n this.compRef.destroy();\n this.op$.unsubscribe();\n }\n }\n\n private showItem(isStart: boolean = false): void {\n const items = this.config!.items!;\n const item = {\n position: 'bottomLeft',\n before: of(true),\n after: of(true),\n ...this.locale(),\n ...items[this.active]\n } as OnboardingItem;\n const dir = this.configSrv.get('onboarding')!.direction ?? this.directionality.value;\n Object.assign(this.compRef.instance, { item, config: this.config, active: this.active, max: items.length, dir });\n const pipes = [\n switchMap(() => (item.url ? this.router.navigateByUrl(item.url) : of(true))),\n switchMap(() => {\n const obs = this.type === 'prev' ? item.after! : item.before!;\n return typeof obs === 'number' ? of(true).pipe(delay(obs)) : obs;\n })\n ];\n if (!isStart) {\n pipes.push(delay(1));\n }\n\n this.updateRunning(true);\n\n this.running$ = of(true)\n .pipe(pipe.apply(this, pipes as NzSafeAny) as NzSafeAny)\n .subscribe({\n next: () => this.cancelRunning().updateRunning(false),\n error: () => this.done()\n });\n }\n\n /**\n * Start a new user guidance\n *\n * 开启新的用户引导流程\n */\n start(config: OnboardingConfig): void {\n const cog: OnboardingConfig = {\n keyVersion: '',\n items: [],\n mask: true,\n maskClosable: true,\n showTotal: false,\n ...config\n };\n const storeKey = cog?.key;\n if (storeKey != null && this.keyStoreSrv.get(storeKey) === cog.keyVersion) {\n return;\n }\n if (this.running) {\n return;\n }\n this.destroy();\n this.config = cog;\n this.active = 0;\n this.type = null;\n this.attach();\n this.showItem(true);\n }\n\n /**\n * Next\n *\n * 下一步\n */\n next(): void {\n if (this._running || this.active + 1 >= this.config!.items!.length) {\n this.done();\n return;\n }\n this.type = 'next';\n ++this.active;\n this.showItem();\n }\n\n /**\n * Prev\n *\n * 上一步\n */\n prev(): void {\n if (this._running || this.active - 1 < 0) {\n return;\n }\n this.type = 'prev';\n --this.active;\n this.showItem();\n }\n\n /**\n * Done\n *\n * 完成\n */\n done(): void {\n this.type = 'done';\n this.destroy();\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DelonLocaleModule } from '@delon/theme';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\n\nimport { OnboardingComponent } from './onboarding.component';\n\nconst COMPONENTS = [OnboardingComponent];\n\n@NgModule({\n imports: [\n CommonModule,\n DelonLocaleModule,\n NzPopoverModule,\n NzOutletModule,\n NzButtonModule,\n NzNoAnimationModule,\n COMPONENTS\n ],\n exports: COMPONENTS\n})\nexport class OnboardingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onboarding.mjs","sources":["../../../../packages/abc/onboarding/onboarding.component.ts","../../../../packages/abc/onboarding/onboarding.storage.ts","../../../../packages/abc/onboarding/onboarding.service.ts","../../../../packages/abc/onboarding/onboarding.module.ts","../../../../packages/abc/onboarding/onboarding.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n OnDestroy,\n ViewEncapsulation,\n afterNextRender,\n effect,\n inject,\n runInInjectionContext,\n signal,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, fromEvent } from 'rxjs';\n\nimport { NzButtonComponent } from 'ng-zorro-antd/button';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/animation';\nimport { NzStringTemplateOutletDirective } from 'ng-zorro-antd/core/outlet';\nimport { NzPopoverDirective } from 'ng-zorro-antd/popover';\n\nimport { OnboardingConfig, OnboardingItem, OnboardingOpType } from './onboarding.types';\n\ninterface OnboardingLightData {\n el: HTMLElement;\n top: number;\n left: number;\n width: number;\n height: number;\n clientHeight: number;\n clientWidth: number;\n}\n\n@Component({\n selector: 'onboarding',\n template: `\n @if (!running() && config.mask) {\n <div class=\"onboarding__mask\" (click)=\"handleMask()\"></div>\n }\n <div\n class=\"onboarding__light\"\n [class.onboarding__light-hide]=\"running()\"\n [attr.style]=\"item.lightStyle\"\n nz-popover\n [nzPopoverTitle]=\"item.title\"\n [nzPopoverContent]=\"content\"\n [nzPopoverVisible]=\"!running()\"\n [nzPopoverTrigger]=\"null\"\n [nzPopoverPlacement]=\"item.position\"\n [nzPopoverOverlayClassName]=\"item.className\"\n [nzPopoverOverlayStyle]=\"{ 'max-width.px': item.width, direction: dir }\"\n [nzNoAnimation]=\"true\"\n ></div>\n <ng-template #content>\n <ng-container *nzStringTemplateOutlet=\"item.content\">\n <div [innerHTML]=\"item.content\"></div>\n </ng-container>\n <div class=\"flex-center-between onboarding__footer\">\n <span class=\"onboarding__total\">\n @if (config.showTotal) {\n {{ active + 1 }}/{{ max }}\n }\n </span>\n <div class=\"onboarding__btns\">\n @if (!last && item.skip !== null && item.skip !== undefined) {\n <a nz-button nzType=\"link\" (click)=\"to('skip')\" nzSize=\"small\" data-btnType=\"skip\">\n <ng-container *nzStringTemplateOutlet=\"item.skip\">{{ item.skip }}</ng-container>\n </a>\n }\n @if (!first && item.prev !== null) {\n <a nz-button (click)=\"to('prev')\" nzSize=\"small\" data-btnType=\"prev\">\n <ng-container *nzStringTemplateOutlet=\"item.prev\">{{ item.prev }}</ng-container>\n </a>\n }\n @if (!last && item.next !== null && item.next !== undefined) {\n <a nz-button (click)=\"to('next')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"next\">\n <ng-container *nzStringTemplateOutlet=\"item.next\">{{ item.next }}</ng-container>\n </a>\n }\n @if (last && item.done !== null && item.done !== undefined) {\n <a nz-button (click)=\"to('done')\" nzType=\"primary\" nzSize=\"small\" data-btnType=\"done\">\n <ng-container *nzStringTemplateOutlet=\"item.done\">{{ item.done }}</ng-container>\n </a>\n }\n </div>\n </div>\n </ng-template>\n `,\n host: {\n class: 'onboarding',\n '[class.onboarding-rtl]': `dir === 'rtl'`,\n '[attr.data-onboarding-active]': `active`\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NzPopoverDirective, NzStringTemplateOutletDirective, NzButtonComponent, NzNoAnimationDirective]\n})\nexport class OnboardingComponent implements OnDestroy {\n private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n private readonly injector = inject(Injector);\n private readonly platform = inject(Platform);\n private readonly doc = inject(DOCUMENT);\n\n private prevSelectorEl?: HTMLElement;\n config!: OnboardingConfig;\n item!: OnboardingItem;\n active = 0;\n max = 0;\n readonly op = new EventEmitter<OnboardingOpType>();\n running = signal(false);\n dir: Direction = 'ltr';\n popover = viewChild.required(NzPopoverDirective);\n\n protected get first(): boolean {\n return this.active === 0;\n }\n\n protected get last(): boolean {\n return this.active === this.max - 1;\n }\n\n private get _getWin(): Window {\n return this.doc.defaultView ?? window;\n }\n\n private getLightData(): OnboardingLightData | null {\n const doc = this.doc;\n const win = this._getWin;\n const el = doc.querySelector(this.item.selectors) as HTMLElement;\n if (!el) {\n return null;\n }\n\n const scrollTop = win.scrollY ?? doc.documentElement.scrollTop ?? doc.body.scrollTop;\n const scrollLeft = win.scrollX ?? doc.documentElement.scrollLeft ?? doc.body.scrollLeft;\n const rect = el.getBoundingClientRect();\n const top = rect.top + scrollTop;\n const left = rect.left + scrollLeft;\n const padding = 8;\n const needPadding = top > padding && left > padding;\n const offsetPos = needPadding ? padding : 0;\n const offsetWH = needPadding ? padding * 2 : 0;\n return {\n top: top - offsetPos,\n left: left - offsetPos,\n width: rect.width + offsetWH,\n height: rect.height + offsetWH,\n el,\n clientWidth: doc.body.clientWidth,\n clientHeight: doc.body.clientHeight\n };\n }\n\n constructor() {\n afterNextRender(() => {\n // Waiting https://github.com/NG-ZORRO/ng-zorro-antd/issues/6491\n this.popover().component!.onClickOutside = () => {};\n });\n effect(() => {\n const running = this.running();\n if (!running) {\n runInInjectionContext(this.injector, () => {\n afterNextRender(() => {\n this.updatePosition();\n });\n });\n }\n });\n\n // when window resize\n fromEvent(window, 'resize')\n .pipe(takeUntilDestroyed(), debounceTime(100))\n .subscribe(() => this.updatePosition());\n }\n\n private scroll(pos: OnboardingLightData): void {\n this.prevSelectorEl = pos.el;\n const scrollY = pos.top - (pos.clientHeight - pos.height) / 2;\n this._getWin.scrollTo({ top: scrollY });\n this.updatePrevElStatus(true);\n }\n\n updateRunning(status: boolean): void {\n this.running.set(status);\n }\n\n private updatePosition(): void {\n if (!this.platform.isBrowser) {\n return;\n }\n\n const pos = this.getLightData();\n if (pos == null) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n console.warn(`Did not matches selectors [${this.item.selectors}]`);\n }\n return;\n }\n\n const lightStyle = (this.el.querySelector('.onboarding__light') as HTMLElement).style;\n lightStyle.top = `${pos.top}px`;\n lightStyle.left = `${pos.left}px`;\n lightStyle.width = `${pos.width}px`;\n lightStyle.height = `${pos.height}px`;\n\n this.updatePrevElStatus(false);\n this.scroll(pos);\n }\n\n private updatePrevElStatus(status: boolean): void {\n if (this.prevSelectorEl) {\n this.prevSelectorEl.classList[status ? 'add' : 'remove']('onboarding__light-el');\n }\n }\n\n to(type: OnboardingOpType): void {\n this.op.emit(type);\n }\n\n handleMask(): void {\n if (this.config.maskClosable === true) {\n this.popover().component?.hide();\n this.to('done');\n }\n }\n\n ngOnDestroy(): void {\n this.updatePrevElStatus(false);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface OnBoardingKeyStore {\n get(key: string): unknown;\n\n set(key: string, version: unknown): void;\n}\n\nexport const ONBOARDING_STORE_TOKEN = new InjectionToken<OnBoardingKeyStore>('ONBOARDING_STORE_TOKEN', {\n providedIn: 'root',\n factory: ONBOARDING_STORE_TOKEN_FACTORY\n});\n\nexport function ONBOARDING_STORE_TOKEN_FACTORY(): OnBoardingKeyStore {\n return new LocalStorageStore();\n}\n\nexport class LocalStorageStore implements OnBoardingKeyStore {\n get(key: string): unknown {\n return localStorage.getItem(key);\n }\n\n set(key: string, version: unknown): void {\n localStorage.setItem(key, `${version}`);\n }\n}\n","import { Directionality } from '@angular/cdk/bidi';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ApplicationRef,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n OnDestroy,\n createComponent,\n inject\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { of, pipe, Subscription, delay, switchMap } from 'rxjs';\n\nimport { DelonLocaleService } from '@delon/theme';\nimport { AlainConfigService } from '@delon/util/config';\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { OnboardingComponent } from './onboarding.component';\nimport { ONBOARDING_STORE_TOKEN } from './onboarding.storage';\nimport { OnboardingConfig, OnboardingItem, OnboardingOpType } from './onboarding.types';\n\n@Injectable({ providedIn: 'root' })\nexport class OnboardingService implements OnDestroy {\n private readonly appRef = inject(ApplicationRef);\n private readonly router = inject(Router);\n private readonly doc = inject(DOCUMENT);\n private readonly configSrv = inject(AlainConfigService);\n private readonly keyStoreSrv = inject(ONBOARDING_STORE_TOKEN);\n private readonly directionality = inject(Directionality);\n\n private compRef!: ComponentRef<OnboardingComponent>;\n private op$!: Subscription;\n private config?: OnboardingConfig;\n private active = 0;\n private running$: Subscription | null = null;\n private _running = false;\n private type: OnboardingOpType | null = null;\n private locale = inject(DelonLocaleService).valueSignal('onboarding');\n\n private _getDoc(): Document {\n return this.doc;\n }\n\n /**\n * Get whether it is booting\n *\n * 获取是否正在引导中\n */\n get running(): boolean {\n return this._running;\n }\n\n private attach(): void {\n const compRef = createComponent(OnboardingComponent, {\n environmentInjector: this.appRef.injector\n });\n this.compRef = compRef;\n this.appRef.attachView(compRef.hostView);\n const compNode = (compRef.hostView as EmbeddedViewRef<NzSafeAny>).rootNodes[0];\n const doc = this._getDoc();\n const cdk = doc.querySelector('.cdk-overlay-container') as HTMLElement;\n if (cdk) {\n doc.body.insertBefore(compNode, cdk);\n } else {\n doc.body.appendChild(compNode);\n }\n this.op$ = this.compRef.instance.op.subscribe((type: OnboardingOpType) => {\n switch (type) {\n case 'next':\n this.next();\n break;\n case 'prev':\n this.prev();\n break;\n default:\n this.done();\n break;\n }\n });\n }\n\n private cancelRunning(): this {\n if (this.running$) {\n this.running$.unsubscribe();\n this.running$ = null;\n }\n return this;\n }\n\n private updateRunning(status: boolean): this {\n this._running = status;\n this.compRef!.instance.updateRunning(status);\n return this;\n }\n\n private destroy(): void {\n const storeKey = this.config?.key;\n if (storeKey != null) {\n this.keyStoreSrv.set(storeKey, this.config?.keyVersion);\n }\n this.cancelRunning();\n if (this.compRef) {\n this.appRef.detachView(this.compRef.hostView);\n this.compRef.destroy();\n this.op$.unsubscribe();\n }\n }\n\n private showItem(isStart: boolean = false): void {\n const items = this.config!.items!;\n const item = {\n position: 'bottomLeft',\n before: of(true),\n after: of(true),\n ...this.locale(),\n ...items[this.active]\n } as OnboardingItem;\n const dir = this.configSrv.get('onboarding')!.direction ?? this.directionality.value;\n Object.assign(this.compRef.instance, { item, config: this.config, active: this.active, max: items.length, dir });\n const pipes = [\n switchMap(() => (item.url ? this.router.navigateByUrl(item.url) : of(true))),\n switchMap(() => {\n const obs = this.type === 'prev' ? item.after! : item.before!;\n return typeof obs === 'number' ? of(true).pipe(delay(obs)) : obs;\n })\n ];\n if (!isStart) {\n pipes.push(delay(1));\n }\n\n this.updateRunning(true);\n\n this.running$ = of(true)\n .pipe(pipe.apply(this, pipes as NzSafeAny) as NzSafeAny)\n .subscribe({\n next: () => this.cancelRunning().updateRunning(false),\n error: () => this.done()\n });\n }\n\n /**\n * Start a new user guidance\n *\n * 开启新的用户引导流程\n */\n start(config: OnboardingConfig): void {\n const cog: OnboardingConfig = {\n keyVersion: '',\n items: [],\n mask: true,\n maskClosable: true,\n showTotal: false,\n ...config\n };\n const storeKey = cog?.key;\n if (storeKey != null && this.keyStoreSrv.get(storeKey) === cog.keyVersion) {\n return;\n }\n if (this.running) {\n return;\n }\n this.destroy();\n this.config = cog;\n this.active = 0;\n this.type = null;\n this.attach();\n this.showItem(true);\n }\n\n /**\n * Next\n *\n * 下一步\n */\n next(): void {\n if (this._running || this.active + 1 >= this.config!.items!.length) {\n this.done();\n return;\n }\n this.type = 'next';\n ++this.active;\n this.showItem();\n }\n\n /**\n * Prev\n *\n * 上一步\n */\n prev(): void {\n if (this._running || this.active - 1 < 0) {\n return;\n }\n this.type = 'prev';\n --this.active;\n this.showItem();\n }\n\n /**\n * Done\n *\n * 完成\n */\n done(): void {\n this.type = 'done';\n this.destroy();\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DelonLocaleModule } from '@delon/theme';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { provideNzNoAnimation } from 'ng-zorro-antd/core/animation';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzPopoverModule } from 'ng-zorro-antd/popover';\n\nimport { OnboardingComponent } from './onboarding.component';\n\nconst COMPONENTS = [OnboardingComponent];\n\n@NgModule({\n providers: [provideNzNoAnimation()],\n imports: [CommonModule, DelonLocaleModule, NzPopoverModule, NzOutletModule, NzButtonModule, COMPONENTS],\n exports: COMPONENTS\n})\nexport class OnboardingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}