@tilde-nlp/ngx-common 6.1.78 → 6.1.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,37 +1,32 @@
1
1
  import { Component, inject, Input, signal } from '@angular/core';
2
2
  import { MatDialog, MatDialogModule } from '@angular/material/dialog';
3
- import { NewFeatureDialogComponent } from '../new-feature-dialog.component';
4
3
  import { CommonModule } from '@angular/common';
4
+ import { NewFeatureDialogComponent } from '../new-feature-dialog.component';
5
5
  import { ResolutionHelper } from '../../helpers';
6
+ import { NewFeatureDialogService } from './new-feature-dialog.service';
7
+ import { Subject } from 'rxjs';
6
8
  import * as i0 from "@angular/core";
7
9
  export class NewFeatureDialogWrapperComponent {
8
10
  constructor() {
9
11
  this.timeout = 0;
10
12
  this.maxWidth = 320;
11
13
  this.#dialog = inject(MatDialog);
14
+ this.#featureService = inject(NewFeatureDialogService);
15
+ this.#destroy = new Subject();
12
16
  this.featureActive = signal(false);
13
17
  this.isFeatureSeen = false;
14
- this.featureDialogComponentSelector = 'lib-new-feature-dialog';
15
18
  }
16
19
  #dialog;
20
+ #featureService;
21
+ #destroy;
17
22
  ngOnInit() {
18
23
  setTimeout(() => {
19
- // Multiple feature order based on the component selector in DOM.
20
- if (document.querySelector(this.featureDialogComponentSelector)) {
21
- setTimeout(() => {
22
- this.ngOnInit();
23
- }, 250);
24
- return;
25
- }
26
24
  this.setFeatureStatus();
27
25
  }, this.timeout);
28
26
  }
29
- setFeatureStatus() {
30
- this.isFeatureSeen = this.featureLocalStorageKey ? !!localStorage.getItem(this.featureLocalStorageKey) : false;
31
- if (!this.featureActive() && !this.isFeatureSeen) {
32
- this.showFeatureDialog();
33
- }
34
- this.isFeatureSeen = true;
27
+ ngOnDestroy() {
28
+ this.#destroy.next(null);
29
+ this.#destroy.complete();
35
30
  }
36
31
  showFeatureDialog() {
37
32
  const targetElement = document.querySelector(`.${this.featureClassName}`);
@@ -39,29 +34,41 @@ export class NewFeatureDialogWrapperComponent {
39
34
  return;
40
35
  }
41
36
  if (ResolutionHelper.isMobileRes()) {
42
- targetElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
37
+ targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
38
+ }
39
+ setTimeout(() => {
40
+ this.featureActive.set(true);
41
+ const updatedRects = targetElement.getBoundingClientRect();
42
+ this.dialogRef = this.#dialog.open(NewFeatureDialogComponent, {
43
+ data: {
44
+ title: this.titleLocalizationKey,
45
+ description: this.descriptionLocalizationKey,
46
+ close: this.closeLocalizationKey,
47
+ featureLocalStorageKey: this.featureLocalStorageKey,
48
+ },
49
+ position: {
50
+ left: `${updatedRects.left - this.maxWidth}px`,
51
+ top: `${updatedRects.top + 45}px`,
52
+ },
53
+ maxWidth: `${this.maxWidth}px`,
54
+ });
55
+ this.dialogRef.afterClosed().subscribe(() => {
56
+ this.setFeatureSeen();
57
+ this.#featureService.current.set(undefined);
58
+ this.#featureService.showNextFeature();
59
+ });
60
+ // Wait until the element is visible in the viewport.
61
+ }, ResolutionHelper.isMobileRes() ? 500 : 0);
62
+ }
63
+ setFeatureStatus() {
64
+ this.isFeatureSeen = !!this.featureLocalStorageKey && !!localStorage.getItem(this.featureLocalStorageKey);
65
+ if (!this.isFeatureSeen) {
66
+ this.#featureService.requestOpenFeature(this);
43
67
  }
44
- const updatedRects = targetElement.getBoundingClientRect();
45
- this.featureActive.set(true);
46
- this.dialogRef = this.#dialog.open(NewFeatureDialogComponent, {
47
- data: {
48
- title: this.titleLocalizationKey,
49
- description: this.descriptionLocalizationKey,
50
- close: this.closeLocalizationKey,
51
- featureLocalStorageKey: this.featureLocalStorageKey,
52
- },
53
- position: {
54
- left: `${updatedRects.left - this.maxWidth}px`,
55
- top: `${updatedRects.top + 45}px`,
56
- },
57
- maxWidth: `${this.maxWidth}px`,
58
- });
59
- this.dialogRef.afterClosed().subscribe(() => {
60
- this.featureActive.set(false);
61
- });
62
- this.setFeatureSeen();
63
68
  }
64
69
  setFeatureSeen() {
70
+ this.featureActive.set(false);
71
+ this.isFeatureSeen = true;
65
72
  if (this.featureLocalStorageKey) {
66
73
  localStorage.setItem(this.featureLocalStorageKey, 'true');
67
74
  }
@@ -92,5 +99,5 @@ export class NewFeatureDialogWrapperComponent {
92
99
  }], maxWidth: [{
93
100
  type: Input
94
101
  }] }); })();
95
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NewFeatureDialogWrapperComponent, { className: "NewFeatureDialogWrapperComponent", filePath: "lib\\new-feature-dialog\\new-feature-dialog-wrapper\\new-feature-dialog-wrapper.component.ts", lineNumber: 13 }); })();
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWZlYXR1cmUtZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL25ldy1mZWF0dXJlLWRpYWxvZy9uZXctZmVhdHVyZS1kaWFsb2ctd3JhcHBlci9uZXctZmVhdHVyZS1kaWFsb2ctd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVFqRCxNQUFNLE9BQU8sZ0NBQWdDO0lBTjdDO1FBWVUsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFFeEIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUc1QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUViLG1DQUE4QixHQUFHLHdCQUF3QixDQUFDO0tBK0RuRTtJQXJFQSxPQUFPLENBQXFCO0lBUTVCLFFBQVE7UUFDUCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2YsaUVBQWlFO1lBQ2pFLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNmLElBQUksQ0FBQyxR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QkFBbEMsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7O2tGQVBNLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE5ld0ZlYXR1cmVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9uZXctZmVhdHVyZS1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUmVzb2x1dGlvbkhlbHBlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdsaWItbmV3LWZlYXR1cmUtZGlhbG9nLXdyYXBwZXInLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0aW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBOZXdGZWF0dXJlRGlhbG9nQ29tcG9uZW50XSxcclxuXHR0ZW1wbGF0ZTogJycsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZXdGZWF0dXJlRGlhbG9nV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0QElucHV0KCkgdGl0bGVMb2NhbGl6YXRpb25LZXkhOiBzdHJpbmc7XHJcblx0QElucHV0KCkgZGVzY3JpcHRpb25Mb2NhbGl6YXRpb25LZXkhOiBzdHJpbmc7XHJcblx0QElucHV0KCkgY2xvc2VMb2NhbGl6YXRpb25LZXkhOiBzdHJpbmc7XHJcblx0QElucHV0KCkgZmVhdHVyZUNsYXNzTmFtZSE6IHN0cmluZztcclxuXHRASW5wdXQoKSBmZWF0dXJlTG9jYWxTdG9yYWdlS2V5ITogc3RyaW5nO1xyXG5cdEBJbnB1dCgpIHRpbWVvdXQgPSAwO1xyXG5cdEBJbnB1dCgpIG1heFdpZHRoID0gMzIwO1xyXG5cclxuXHQjZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XHJcblx0ZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TmV3RmVhdHVyZURpYWxvZ0NvbXBvbmVudD4gfCB1bmRlZmluZWQ7XHJcblxyXG5cdGZlYXR1cmVBY3RpdmUgPSBzaWduYWwoZmFsc2UpO1xyXG5cdGlzRmVhdHVyZVNlZW4gPSBmYWxzZTtcclxuXHJcblx0cmVhZG9ubHkgZmVhdHVyZURpYWxvZ0NvbXBvbmVudFNlbGVjdG9yID0gJ2xpYi1uZXctZmVhdHVyZS1kaWFsb2cnO1xyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHQvLyBNdWx0aXBsZSBmZWF0dXJlIG9yZGVyIGJhc2VkIG9uIHRoZSBjb21wb25lbnQgc2VsZWN0b3IgaW4gRE9NLlxyXG5cdFx0XHRpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLmZlYXR1cmVEaWFsb2dDb21wb25lbnRTZWxlY3RvcikpIHtcclxuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMubmdPbkluaXQoKTtcclxuXHRcdFx0XHR9LCAyNTApO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0dGhpcy5zZXRGZWF0dXJlU3RhdHVzKCk7XHJcblx0XHR9LCB0aGlzLnRpbWVvdXQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZXRGZWF0dXJlU3RhdHVzKCkge1xyXG5cdFx0dGhpcy5pc0ZlYXR1cmVTZWVuID0gdGhpcy5mZWF0dXJlTG9jYWxTdG9yYWdlS2V5ID8gISFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmZlYXR1cmVMb2NhbFN0b3JhZ2VLZXkpIDogZmFsc2U7XHJcblxyXG5cdFx0aWYgKCF0aGlzLmZlYXR1cmVBY3RpdmUoKSAmJiAhdGhpcy5pc0ZlYXR1cmVTZWVuKSB7XHJcblx0XHRcdHRoaXMuc2hvd0ZlYXR1cmVEaWFsb2coKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmlzRmVhdHVyZVNlZW4gPSB0cnVlO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzaG93RmVhdHVyZURpYWxvZygpIHtcclxuXHRcdGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLmZlYXR1cmVDbGFzc05hbWV9YCk7XHJcblxyXG5cdFx0aWYgKCF0YXJnZXRFbGVtZW50KSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoUmVzb2x1dGlvbkhlbHBlci5pc01vYmlsZVJlcygpKSB7XHJcblx0XHRcdHRhcmdldEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCB1cGRhdGVkUmVjdHMgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cdFx0dGhpcy5mZWF0dXJlQWN0aXZlLnNldCh0cnVlKTtcclxuXHRcdHRoaXMuZGlhbG9nUmVmID0gdGhpcy4jZGlhbG9nLm9wZW4oTmV3RmVhdHVyZURpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0dGl0bGU6IHRoaXMudGl0bGVMb2NhbGl6YXRpb25LZXksXHJcblx0XHRcdFx0ZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb25Mb2NhbGl6YXRpb25LZXksXHJcblx0XHRcdFx0Y2xvc2U6IHRoaXMuY2xvc2VMb2NhbGl6YXRpb25LZXksXHJcblx0XHRcdFx0ZmVhdHVyZUxvY2FsU3RvcmFnZUtleTogdGhpcy5mZWF0dXJlTG9jYWxTdG9yYWdlS2V5LFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwb3NpdGlvbjoge1xyXG5cdFx0XHRcdGxlZnQ6IGAke3VwZGF0ZWRSZWN0cy5sZWZ0IC0gdGhpcy5tYXhXaWR0aH1weGAsXHJcblx0XHRcdFx0dG9wOiBgJHt1cGRhdGVkUmVjdHMudG9wICsgNDV9cHhgLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtYXhXaWR0aDogYCR7dGhpcy5tYXhXaWR0aH1weGAsXHJcblx0XHR9KTtcclxuXHRcdHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0dGhpcy5mZWF0dXJlQWN0aXZlLnNldChmYWxzZSk7XHJcblx0XHR9KTtcclxuXHRcdHRoaXMuc2V0RmVhdHVyZVNlZW4oKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0RmVhdHVyZVNlZW4oKSB7XHJcblx0XHRpZiAodGhpcy5mZWF0dXJlTG9jYWxTdG9yYWdlS2V5KSB7XHJcblx0XHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuZmVhdHVyZUxvY2FsU3RvcmFnZUtleSwgJ3RydWUnKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19
102
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NewFeatureDialogWrapperComponent, { className: "NewFeatureDialogWrapperComponent", filePath: "lib\\new-feature-dialog\\new-feature-dialog-wrapper\\new-feature-dialog-wrapper.component.ts", lineNumber: 15 }); })();
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWZlYXR1cmUtZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbW1vbi9zcmMvbGliL25ldy1mZWF0dXJlLWRpYWxvZy9uZXctZmVhdHVyZS1kaWFsb2ctd3JhcHBlci9uZXctZmVhdHVyZS1kaWFsb2ctd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVEvQixNQUFNLE9BQU8sZ0NBQWdDO0lBTjdDO1FBWVUsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFFZixZQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDbEQsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFHbEMsa0JBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxLQUFLLENBQUM7S0FnRXRCO0lBdEVTLE9BQU8sQ0FBcUI7SUFDNUIsZUFBZSxDQUFtQztJ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SUFBSSxDQUFDLHNCQUFzQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDRixDQUFDO2lJQTlFVyxnQ0FBZ0M7b0VBQWhDLGdDQUFnQywwZkFIbEMsWUFBWSxFQUFFLGVBQWU7O2lGQUczQixnQ0FBZ0M7Y0FONUMsU0FBUztlQUFDO2dCQUNWLFFBQVEsRUFBRSxnQ0FBZ0M7Z0JBQzFDLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixDQUFDO2dCQUNuRSxRQUFRLEVBQUUsRUFBRTthQUNaO2dCQUVTLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNHLDBCQUEwQjtrQkFBbEMsS0FBSztZQUNHLG9CQUFvQjtrQkFBNUIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7O2tGQVBNLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmV3RmVhdHVyZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL25ldy1mZWF0dXJlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXNvbHV0aW9uSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XHJcbmltcG9ydCB7IE5ld0ZlYXR1cmVEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9uZXctZmVhdHVyZS1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLW5ldy1mZWF0dXJlLWRpYWxvZy13cmFwcGVyJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdERpYWxvZ01vZHVsZSwgTmV3RmVhdHVyZURpYWxvZ0NvbXBvbmVudF0sXHJcblx0dGVtcGxhdGU6ICcnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmV3RmVhdHVyZURpYWxvZ1dyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblx0QElucHV0KCkgdGl0bGVMb2NhbGl6YXRpb25LZXkhOiBzdHJpbmc7XHJcblx0QElucHV0KCkgZGVzY3JpcHRpb25Mb2NhbGl6YXRpb25LZXkhOiBzdHJpbmc7XHJcblx0QElucHV0KCkgY2xvc2VMb2NhbGl6YXRpb25LZXkhOiBzdHJpbmc7XHJcblx0QElucHV0KCkgZmVhdHVyZUNsYXNzTmFtZSE6IHN0cmluZztcclxuXHRASW5wdXQoKSBmZWF0dXJlTG9jYWxTdG9yYWdlS2V5ITogc3RyaW5nO1xyXG5cdEBJbnB1dCgpIHRpbWVvdXQgPSAwO1xyXG5cdEBJbnB1dCgpIG1heFdpZHRoID0gMzIwO1xyXG5cclxuXHRyZWFkb25seSAjZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XHJcblx0cmVhZG9ubHkgI2ZlYXR1cmVTZXJ2aWNlID0gaW5qZWN0KE5ld0ZlYXR1cmVEaWFsb2dTZXJ2aWNlKTtcclxuXHRyZWFkb25seSAjZGVzdHJveSA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG5cdGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPE5ld0ZlYXR1cmVEaWFsb2dDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xyXG5cdGZlYXR1cmVBY3RpdmUgPSBzaWduYWwoZmFsc2UpO1xyXG5cdGlzRmVhdHVyZVNlZW4gPSBmYWxzZTtcclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0dGhpcy5zZXRGZWF0dXJlU3RhdHVzKCk7XHJcblx0XHR9LCB0aGlzLnRpbWVvdXQpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHR0aGlzLiNkZXN0cm95Lm5leHQobnVsbCk7XHJcblx0XHR0aGlzLiNkZXN0cm95LmNvbXBsZXRlKCk7XHJcblx0fVxyXG5cclxuXHRzaG93RmVhdHVyZURpYWxvZygpOiB2b2lkIHtcclxuXHRcdGNvbnN0IHRhcmdldEVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt0aGlzLmZlYXR1cmVDbGFzc05hbWV9YCk7XHJcblx0XHRpZiAoIXRhcmdldEVsZW1lbnQpIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChSZXNvbHV0aW9uSGVscGVyLmlzTW9iaWxlUmVzKCkpIHtcclxuXHRcdFx0dGFyZ2V0RWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XHJcblx0XHR9XHJcblxyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuZmVhdHVyZUFjdGl2ZS5zZXQodHJ1ZSk7XHJcblx0XHRcdGNvbnN0IHVwZGF0ZWRSZWN0cyA9IHRhcmdldEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRcdHRoaXMuZGlhbG9nUmVmID0gdGhpcy4jZGlhbG9nLm9wZW4oTmV3RmVhdHVyZURpYWxvZ0NvbXBvbmVudCwge1xyXG5cdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdHRpdGxlOiB0aGlzLnRpdGxlTG9jYWxpemF0aW9uS2V5LFxyXG5cdFx0XHRcdFx0ZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb25Mb2NhbGl6YXRpb25LZXksXHJcblx0XHRcdFx0XHRjbG9zZTogdGhpcy5jbG9zZUxvY2FsaXphdGlvbktleSxcclxuXHRcdFx0XHRcdGZlYXR1cmVMb2NhbFN0b3JhZ2VLZXk6IHRoaXMuZmVhdHVyZUxvY2FsU3RvcmFnZUtleSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHBvc2l0aW9uOiB7XHJcblx0XHRcdFx0XHRsZWZ0OiBgJHt1cGRhdGVkUmVjdHMubGVmdCAtIHRoaXMubWF4V2lkdGh9cHhgLFxyXG5cdFx0XHRcdFx0dG9wOiBgJHt1cGRhdGVkUmVjdHMudG9wICsgNDV9cHhgLFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0bWF4V2lkdGg6IGAke3RoaXMubWF4V2lkdGh9cHhgLFxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnNldEZlYXR1cmVTZWVuKCk7XHJcblx0XHRcdFx0dGhpcy4jZmVhdHVyZVNlcnZpY2UuY3VycmVudC5zZXQodW5kZWZpbmVkKTtcclxuXHRcdFx0XHR0aGlzLiNmZWF0dXJlU2VydmljZS5zaG93TmV4dEZlYXR1cmUoKTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdC8vIFdhaXQgdW50aWwgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnQuXHJcblx0XHR9LCBSZXNvbHV0aW9uSGVscGVyLmlzTW9iaWxlUmVzKCkgPyA1MDAgOiAwKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc2V0RmVhdHVyZVN0YXR1cygpOiB2b2lkIHtcclxuXHRcdHRoaXMuaXNGZWF0dXJlU2VlbiA9ICEhdGhpcy5mZWF0dXJlTG9jYWxTdG9yYWdlS2V5ICYmICEhbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5mZWF0dXJlTG9jYWxTdG9yYWdlS2V5KTtcclxuXHJcblx0XHRpZiAoIXRoaXMuaXNGZWF0dXJlU2Vlbikge1xyXG5cdFx0XHR0aGlzLiNmZWF0dXJlU2VydmljZS5yZXF1ZXN0T3BlbkZlYXR1cmUodGhpcyk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNldEZlYXR1cmVTZWVuKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5mZWF0dXJlQWN0aXZlLnNldChmYWxzZSk7XHJcblx0XHR0aGlzLmlzRmVhdHVyZVNlZW4gPSB0cnVlO1xyXG5cdFx0aWYgKHRoaXMuZmVhdHVyZUxvY2FsU3RvcmFnZUtleSkge1xyXG5cdFx0XHRsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmZlYXR1cmVMb2NhbFN0b3JhZ2VLZXksICd0cnVlJyk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NewFeatureDialogService {
4
+ constructor() {
5
+ this.current = signal(undefined);
6
+ this.queue = [];
7
+ }
8
+ requestOpenFeature(component) {
9
+ if (this.queue.includes(component)) {
10
+ return;
11
+ }
12
+ this.queue.push(component);
13
+ if (!this.current()) {
14
+ this.showNextFeature();
15
+ }
16
+ }
17
+ showNextFeature() {
18
+ if (this.queue.length === 0) {
19
+ return;
20
+ }
21
+ const nextFeature = this.queue.shift();
22
+ if (!nextFeature) {
23
+ return;
24
+ }
25
+ this.current.set(nextFeature);
26
+ nextFeature.showFeatureDialog();
27
+ }
28
+ static { this.ɵfac = function NewFeatureDialogService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NewFeatureDialogService)(); }; }
29
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NewFeatureDialogService, factory: NewFeatureDialogService.ɵfac, providedIn: 'root' }); }
30
+ }
31
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NewFeatureDialogService, [{
32
+ type: Injectable,
33
+ args: [{
34
+ providedIn: 'root',
35
+ }]
36
+ }], null, null); })();
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWZlYXR1cmUtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tbW9uL3NyYy9saWIvbmV3LWZlYXR1cmUtZGlhbG9nL25ldy1mZWF0dXJlLWRpYWxvZy13cmFwcGVyL25ldy1mZWF0dXJlLWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1uRCxNQUFNLE9BQU8sdUJBQXVCO0lBSHBDO1FBSUUsWUFBTyxHQUFHLE1BQU0sQ0FBK0MsU0FBUyxDQUFDLENBQUM7UUFFMUUsVUFBSyxHQUF1QyxFQUFFLENBQUM7S0F3QmhEO0lBdEJDLGtCQUFrQixDQUFDLFNBQTJDO1FBQzVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU07UUFDUixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUIsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbEMsQ0FBQzt3SEExQlUsdUJBQXVCO3VFQUF2Qix1QkFBdUIsV0FBdkIsdUJBQXVCLG1CQUZ0QixNQUFNOztpRkFFUCx1QkFBdUI7Y0FIbkMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5ld0ZlYXR1cmVEaWFsb2dXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9uZXctZmVhdHVyZS1kaWFsb2ctd3JhcHBlci5jb21wb25lbnQnO1xyXG4gXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZXdGZWF0dXJlRGlhbG9nU2VydmljZSB7XHJcbiAgY3VycmVudCA9IHNpZ25hbDxOZXdGZWF0dXJlRGlhbG9nV3JhcHBlckNvbXBvbmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuIFxyXG4gIHF1ZXVlOiBOZXdGZWF0dXJlRGlhbG9nV3JhcHBlckNvbXBvbmVudFtdID0gW107XHJcbiBcclxuICByZXF1ZXN0T3BlbkZlYXR1cmUoY29tcG9uZW50OiBOZXdGZWF0dXJlRGlhbG9nV3JhcHBlckNvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucXVldWUuaW5jbHVkZXMoY29tcG9uZW50KSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnF1ZXVlLnB1c2goY29tcG9uZW50KTtcclxuICAgIGlmICghdGhpcy5jdXJyZW50KCkpIHtcclxuICAgICAgdGhpcy5zaG93TmV4dEZlYXR1cmUoKTtcclxuICAgIH1cclxuICB9XHJcbiBcclxuICBzaG93TmV4dEZlYXR1cmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gXHJcbiAgICBjb25zdCBuZXh0RmVhdHVyZSA9IHRoaXMucXVldWUuc2hpZnQoKTtcclxuICAgIGlmICghbmV4dEZlYXR1cmUpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICB0aGlzLmN1cnJlbnQuc2V0KG5leHRGZWF0dXJlKTtcclxuICAgIG5leHRGZWF0dXJlLnNob3dGZWF0dXJlRGlhbG9nKCk7XHJcbiAgfVxyXG59XHJcbiBcclxuICJdfQ==
@@ -8267,34 +8267,62 @@ class NewFeatureDialogComponent {
8267
8267
  }], null, null); })();
8268
8268
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NewFeatureDialogComponent, { className: "NewFeatureDialogComponent", filePath: "lib\\new-feature-dialog\\new-feature-dialog.component.ts", lineNumber: 13 }); })();
8269
8269
 
8270
+ class NewFeatureDialogService {
8271
+ constructor() {
8272
+ this.current = signal(undefined);
8273
+ this.queue = [];
8274
+ }
8275
+ requestOpenFeature(component) {
8276
+ if (this.queue.includes(component)) {
8277
+ return;
8278
+ }
8279
+ this.queue.push(component);
8280
+ if (!this.current()) {
8281
+ this.showNextFeature();
8282
+ }
8283
+ }
8284
+ showNextFeature() {
8285
+ if (this.queue.length === 0) {
8286
+ return;
8287
+ }
8288
+ const nextFeature = this.queue.shift();
8289
+ if (!nextFeature) {
8290
+ return;
8291
+ }
8292
+ this.current.set(nextFeature);
8293
+ nextFeature.showFeatureDialog();
8294
+ }
8295
+ static { this.ɵfac = function NewFeatureDialogService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || NewFeatureDialogService)(); }; }
8296
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NewFeatureDialogService, factory: NewFeatureDialogService.ɵfac, providedIn: 'root' }); }
8297
+ }
8298
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NewFeatureDialogService, [{
8299
+ type: Injectable,
8300
+ args: [{
8301
+ providedIn: 'root',
8302
+ }]
8303
+ }], null, null); })();
8304
+
8270
8305
  class NewFeatureDialogWrapperComponent {
8271
8306
  constructor() {
8272
8307
  this.timeout = 0;
8273
8308
  this.maxWidth = 320;
8274
8309
  this.#dialog = inject(MatDialog);
8310
+ this.#featureService = inject(NewFeatureDialogService);
8311
+ this.#destroy = new Subject();
8275
8312
  this.featureActive = signal(false);
8276
8313
  this.isFeatureSeen = false;
8277
- this.featureDialogComponentSelector = 'lib-new-feature-dialog';
8278
8314
  }
8279
8315
  #dialog;
8316
+ #featureService;
8317
+ #destroy;
8280
8318
  ngOnInit() {
8281
8319
  setTimeout(() => {
8282
- // Multiple feature order based on the component selector in DOM.
8283
- if (document.querySelector(this.featureDialogComponentSelector)) {
8284
- setTimeout(() => {
8285
- this.ngOnInit();
8286
- }, 250);
8287
- return;
8288
- }
8289
8320
  this.setFeatureStatus();
8290
8321
  }, this.timeout);
8291
8322
  }
8292
- setFeatureStatus() {
8293
- this.isFeatureSeen = this.featureLocalStorageKey ? !!localStorage.getItem(this.featureLocalStorageKey) : false;
8294
- if (!this.featureActive() && !this.isFeatureSeen) {
8295
- this.showFeatureDialog();
8296
- }
8297
- this.isFeatureSeen = true;
8323
+ ngOnDestroy() {
8324
+ this.#destroy.next(null);
8325
+ this.#destroy.complete();
8298
8326
  }
8299
8327
  showFeatureDialog() {
8300
8328
  const targetElement = document.querySelector(`.${this.featureClassName}`);
@@ -8302,29 +8330,41 @@ class NewFeatureDialogWrapperComponent {
8302
8330
  return;
8303
8331
  }
8304
8332
  if (ResolutionHelper.isMobileRes()) {
8305
- targetElement.scrollIntoView({ behavior: 'smooth', block: 'center' });
8306
- }
8307
- const updatedRects = targetElement.getBoundingClientRect();
8308
- this.featureActive.set(true);
8309
- this.dialogRef = this.#dialog.open(NewFeatureDialogComponent, {
8310
- data: {
8311
- title: this.titleLocalizationKey,
8312
- description: this.descriptionLocalizationKey,
8313
- close: this.closeLocalizationKey,
8314
- featureLocalStorageKey: this.featureLocalStorageKey,
8315
- },
8316
- position: {
8317
- left: `${updatedRects.left - this.maxWidth}px`,
8318
- top: `${updatedRects.top + 45}px`,
8319
- },
8320
- maxWidth: `${this.maxWidth}px`,
8321
- });
8322
- this.dialogRef.afterClosed().subscribe(() => {
8323
- this.featureActive.set(false);
8324
- });
8325
- this.setFeatureSeen();
8333
+ targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
8334
+ }
8335
+ setTimeout(() => {
8336
+ this.featureActive.set(true);
8337
+ const updatedRects = targetElement.getBoundingClientRect();
8338
+ this.dialogRef = this.#dialog.open(NewFeatureDialogComponent, {
8339
+ data: {
8340
+ title: this.titleLocalizationKey,
8341
+ description: this.descriptionLocalizationKey,
8342
+ close: this.closeLocalizationKey,
8343
+ featureLocalStorageKey: this.featureLocalStorageKey,
8344
+ },
8345
+ position: {
8346
+ left: `${updatedRects.left - this.maxWidth}px`,
8347
+ top: `${updatedRects.top + 45}px`,
8348
+ },
8349
+ maxWidth: `${this.maxWidth}px`,
8350
+ });
8351
+ this.dialogRef.afterClosed().subscribe(() => {
8352
+ this.setFeatureSeen();
8353
+ this.#featureService.current.set(undefined);
8354
+ this.#featureService.showNextFeature();
8355
+ });
8356
+ // Wait until the element is visible in the viewport.
8357
+ }, ResolutionHelper.isMobileRes() ? 500 : 0);
8358
+ }
8359
+ setFeatureStatus() {
8360
+ this.isFeatureSeen = !!this.featureLocalStorageKey && !!localStorage.getItem(this.featureLocalStorageKey);
8361
+ if (!this.isFeatureSeen) {
8362
+ this.#featureService.requestOpenFeature(this);
8363
+ }
8326
8364
  }
8327
8365
  setFeatureSeen() {
8366
+ this.featureActive.set(false);
8367
+ this.isFeatureSeen = true;
8328
8368
  if (this.featureLocalStorageKey) {
8329
8369
  localStorage.setItem(this.featureLocalStorageKey, 'true');
8330
8370
  }
@@ -8355,7 +8395,7 @@ class NewFeatureDialogWrapperComponent {
8355
8395
  }], maxWidth: [{
8356
8396
  type: Input
8357
8397
  }] }); })();
8358
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NewFeatureDialogWrapperComponent, { className: "NewFeatureDialogWrapperComponent", filePath: "lib\\new-feature-dialog\\new-feature-dialog-wrapper\\new-feature-dialog-wrapper.component.ts", lineNumber: 13 }); })();
8398
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NewFeatureDialogWrapperComponent, { className: "NewFeatureDialogWrapperComponent", filePath: "lib\\new-feature-dialog\\new-feature-dialog-wrapper\\new-feature-dialog-wrapper.component.ts", lineNumber: 15 }); })();
8359
8399
 
8360
8400
  /*
8361
8401
  * Public API Surface of ngx-common