@rfprodz/client-guided-tour 1.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.
- package/LICENSE +21 -0
- package/README.md +117 -0
- package/esm2022/index.mjs +5 -0
- package/esm2022/lib/components/guided-tour/guided-tour.component.mjs +29 -0
- package/esm2022/lib/components/guided-tour/guided-tour.directive.mjs +183 -0
- package/esm2022/lib/components/guided-tour/guided-tour.interface.mjs +16 -0
- package/esm2022/lib/components/guided-tour-example/guided-tour-example.component.mjs +57 -0
- package/esm2022/lib/components/index.mjs +3 -0
- package/esm2022/lib/guided-tour-example-routing.module.mjs +24 -0
- package/esm2022/lib/guided-tour-example.module.mjs +21 -0
- package/esm2022/lib/guided-tour.module.mjs +25 -0
- package/esm2022/lib/providers/overlay.provider.mjs +12 -0
- package/esm2022/lib/services/guided-tour/guided-tour.service.mjs +52 -0
- package/esm2022/lib/services/index.mjs +2 -0
- package/esm2022/rfprodz-client-guided-tour.mjs +5 -0
- package/fesm2022/rfprodz-client-guided-tour.mjs +387 -0
- package/fesm2022/rfprodz-client-guided-tour.mjs.map +1 -0
- package/index.d.ts +4 -0
- package/lib/components/guided-tour/guided-tour.component.d.ts +15 -0
- package/lib/components/guided-tour/guided-tour.directive.d.ts +45 -0
- package/lib/components/guided-tour/guided-tour.interface.d.ts +14 -0
- package/lib/components/guided-tour-example/guided-tour-example.component.d.ts +20 -0
- package/lib/components/index.d.ts +2 -0
- package/lib/guided-tour-example-routing.module.d.ts +7 -0
- package/lib/guided-tour-example.module.d.ts +12 -0
- package/lib/guided-tour.module.d.ts +13 -0
- package/lib/providers/overlay.provider.d.ts +6 -0
- package/lib/services/guided-tour/guided-tour.service.d.ts +23 -0
- package/lib/services/index.d.ts +1 -0
- package/package.json +45 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 rfprod.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Guided Tour Module for Angular
|
|
2
|
+
|
|
3
|
+
Guided tour feature for Angular clients.
|
|
4
|
+
|
|
5
|
+
## Description
|
|
6
|
+
|
|
7
|
+
TBD
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
### Within the development workspace
|
|
12
|
+
|
|
13
|
+
Import the module
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
...
|
|
17
|
+
import { AppGuidedTourModule } from '@app/client-guided-tour';
|
|
18
|
+
|
|
19
|
+
@NgModule({
|
|
20
|
+
imports: [
|
|
21
|
+
...
|
|
22
|
+
AppGuidedTourModule,
|
|
23
|
+
...
|
|
24
|
+
],
|
|
25
|
+
...
|
|
26
|
+
})
|
|
27
|
+
export class AppModule {}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### As an external package
|
|
31
|
+
|
|
32
|
+
Install the package
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
yarn add @rfprodz/client-guided-tour @angular/cdk @angular/common @angular/core @angular/material
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Import the module
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
...
|
|
42
|
+
import { AppGuidedTourModule } from '@rfprodz/client-guided-tour';
|
|
43
|
+
|
|
44
|
+
@NgModule({
|
|
45
|
+
imports: [
|
|
46
|
+
...
|
|
47
|
+
AppGuidedTourModule,
|
|
48
|
+
...
|
|
49
|
+
],
|
|
50
|
+
...
|
|
51
|
+
})
|
|
52
|
+
export class AppModule {}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Use in components
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
...
|
|
59
|
+
<p>... Some content ...</p>
|
|
60
|
+
|
|
61
|
+
<div [appGuidedTour]="config.at(0)" [highlightElement]="false">first item to explain</div>
|
|
62
|
+
|
|
63
|
+
<p>... Some content ...</p>
|
|
64
|
+
|
|
65
|
+
<div [appGuidedTour]="config.at(1)" [highlightElement]="true">second item to explain</div>
|
|
66
|
+
...
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
@Component({
|
|
71
|
+
...
|
|
72
|
+
providers: [AppGuidedTourService], // <-- declare a service
|
|
73
|
+
...
|
|
74
|
+
})
|
|
75
|
+
export class GuidedComponent implements AfterViewInit {
|
|
76
|
+
/** Locate steps. */
|
|
77
|
+
@ViewChildren(AppGuidedTourDirective) public steps!: QueryList<AppGuidedTourDirective>;
|
|
78
|
+
|
|
79
|
+
/** Configure the tour. */
|
|
80
|
+
public tourConig$ = signal<IGuidedTourData[]>([
|
|
81
|
+
{
|
|
82
|
+
index: 0,
|
|
83
|
+
title: 'first',
|
|
84
|
+
subtitle: 'First step',
|
|
85
|
+
description: 'The first step. Highlighting disabled.',
|
|
86
|
+
first: true,
|
|
87
|
+
last: false,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
index: 1,
|
|
91
|
+
title: 'second',
|
|
92
|
+
subtitle: 'Second step',
|
|
93
|
+
description: 'The second step. Highlighting enabled.',
|
|
94
|
+
first: false,
|
|
95
|
+
last: true,
|
|
96
|
+
},
|
|
97
|
+
]);
|
|
98
|
+
|
|
99
|
+
constructor(public readonly tour: AppGuidedTourService) {}
|
|
100
|
+
|
|
101
|
+
public ngAfterViewInit(): void {
|
|
102
|
+
this.tour.configuration = this.steps; // <-- add steps to the service
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Developer commands reference
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
npx nx run tools:help --search client-guided-tour:
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## References
|
|
114
|
+
|
|
115
|
+
- [Nx](https://nx.dev)
|
|
116
|
+
- [Angular](https://angular.io)
|
|
117
|
+
- [Angular Material](https://material.angular.io)
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './lib/components';
|
|
2
|
+
export * from './lib/guided-tour.module';
|
|
3
|
+
export * from './lib/guided-tour-example.module';
|
|
4
|
+
export * from './lib/services';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2NsaWVudC1ndWlkZWQtdG91ci9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3VpZGVkLXRvdXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2d1aWRlZC10b3VyLWV4YW1wbGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
|
|
2
|
+
import { AppGuidedTourService } from '../../services/guided-tour/guided-tour.service';
|
|
3
|
+
import { GUIDED_TOUR_DATA } from './guided-tour.interface';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../services/guided-tour/guided-tour.service";
|
|
6
|
+
import * as i2 from "@angular/material/button";
|
|
7
|
+
import * as i3 from "@angular/material/icon";
|
|
8
|
+
import * as i4 from "@angular/material/card";
|
|
9
|
+
/** Guided tour component. */
|
|
10
|
+
export class AppGuidedTourComponent {
|
|
11
|
+
/**
|
|
12
|
+
* @param tour Guided tour service.
|
|
13
|
+
* @param data Guided tour step data.
|
|
14
|
+
*/
|
|
15
|
+
constructor(tour, data) {
|
|
16
|
+
this.tour = tour;
|
|
17
|
+
this.data = data;
|
|
18
|
+
}
|
|
19
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourComponent, deps: [{ token: i1.AppGuidedTourService }, { token: GUIDED_TOUR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: AppGuidedTourComponent, selector: "app-guided-tour", ngImport: i0, template: "<mat-card>\n <mat-card-header>\n <mat-card-title>{{ data.title }}</mat-card-title>\n <mat-card-subtitle>{{ data.subtitle }}</mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content>\n <p>{{ data.description }}</p>\n </mat-card-content>\n\n <mat-card-actions class=\"actions\">\n <button mat-button [disabled]=\"data.first\" (click)=\"tour.previous()\" color=\"primary\">\n <mat-icon>chevron_left</mat-icon>\n Previous\n </button>\n\n <button mat-button (click)=\"tour.end()\" color=\"warn\">\n <mat-icon>close</mat-icon>\n End\n </button>\n\n <button mat-button [disabled]=\"data.last\" (click)=\"tour.next()\" color=\"primary\">\n Next\n <mat-icon>chevron_right</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>\n", styles: [":host{display:block}.actions>*:not(:first-child):not(:last-child){margin:0 6px}\n"], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i4.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i4.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i4.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourComponent, decorators: [{
|
|
23
|
+
type: Component,
|
|
24
|
+
args: [{ selector: 'app-guided-tour', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card>\n <mat-card-header>\n <mat-card-title>{{ data.title }}</mat-card-title>\n <mat-card-subtitle>{{ data.subtitle }}</mat-card-subtitle>\n </mat-card-header>\n\n <mat-card-content>\n <p>{{ data.description }}</p>\n </mat-card-content>\n\n <mat-card-actions class=\"actions\">\n <button mat-button [disabled]=\"data.first\" (click)=\"tour.previous()\" color=\"primary\">\n <mat-icon>chevron_left</mat-icon>\n Previous\n </button>\n\n <button mat-button (click)=\"tour.end()\" color=\"warn\">\n <mat-icon>close</mat-icon>\n End\n </button>\n\n <button mat-button [disabled]=\"data.last\" (click)=\"tour.next()\" color=\"primary\">\n Next\n <mat-icon>chevron_right</mat-icon>\n </button>\n </mat-card-actions>\n</mat-card>\n", styles: [":host{display:block}.actions>*:not(:first-child):not(:last-child){margin:0 6px}\n"] }]
|
|
25
|
+
}], ctorParameters: () => [{ type: i1.AppGuidedTourService }, { type: undefined, decorators: [{
|
|
26
|
+
type: Inject,
|
|
27
|
+
args: [GUIDED_TOUR_DATA]
|
|
28
|
+
}] }] });
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZ3VpZGVkLXRvdXIvc3JjL2xpYi9jb21wb25lbnRzL2d1aWRlZC10b3VyL2d1aWRlZC10b3VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWd1aWRlZC10b3VyL3NyYy9saWIvY29tcG9uZW50cy9ndWlkZWQtdG91ci9ndWlkZWQtdG91ci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsZ0JBQWdCLEVBQW1CLE1BQU0seUJBQXlCLENBQUM7Ozs7OztBQUU1RSw2QkFBNkI7QUFPN0IsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQzs7O09BR0c7SUFDSCxZQUNrQixJQUEwQixFQUNBLElBQXFCO1FBRC9DLFNBQUksR0FBSixJQUFJLENBQXNCO1FBQ0EsU0FBSSxHQUFKLElBQUksQ0FBaUI7SUFDOUQsQ0FBQztpSUFSTyxzQkFBc0Isc0RBT3ZCLGdCQUFnQjtxSEFQZixzQkFBc0IsdURDWm5DLHl4QkEyQkE7OzJGRGZhLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs7MEJBUzVDLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcEd1aWRlZFRvdXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3VpZGVkLXRvdXIvZ3VpZGVkLXRvdXIuc2VydmljZSc7XG5pbXBvcnQgeyBHVUlERURfVE9VUl9EQVRBLCBJR3VpZGVkVG91ckRhdGEgfSBmcm9tICcuL2d1aWRlZC10b3VyLmludGVyZmFjZSc7XG5cbi8qKiBHdWlkZWQgdG91ciBjb21wb25lbnQuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZ3VpZGVkLXRvdXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3VpZGVkLXRvdXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ndWlkZWQtdG91ci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXBwR3VpZGVkVG91ckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBAcGFyYW0gdG91ciAgR3VpZGVkIHRvdXIgc2VydmljZS5cbiAgICogQHBhcmFtIGRhdGEgR3VpZGVkIHRvdXIgc3RlcCBkYXRhLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHRvdXI6IEFwcEd1aWRlZFRvdXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoR1VJREVEX1RPVVJfREFUQSkgcHVibGljIHJlYWRvbmx5IGRhdGE6IElHdWlkZWRUb3VyRGF0YSxcbiAgKSB7fVxufVxuIiwiPG1hdC1jYXJkPlxuICA8bWF0LWNhcmQtaGVhZGVyPlxuICAgIDxtYXQtY2FyZC10aXRsZT57eyBkYXRhLnRpdGxlIH19PC9tYXQtY2FyZC10aXRsZT5cbiAgICA8bWF0LWNhcmQtc3VidGl0bGU+e3sgZGF0YS5zdWJ0aXRsZSB9fTwvbWF0LWNhcmQtc3VidGl0bGU+XG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxuXG4gIDxtYXQtY2FyZC1jb250ZW50PlxuICAgIDxwPnt7IGRhdGEuZGVzY3JpcHRpb24gfX08L3A+XG4gIDwvbWF0LWNhcmQtY29udGVudD5cblxuICA8bWF0LWNhcmQtYWN0aW9ucyBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gW2Rpc2FibGVkXT1cImRhdGEuZmlyc3RcIiAoY2xpY2spPVwidG91ci5wcmV2aW91cygpXCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICA8bWF0LWljb24+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj5cbiAgICAgIFByZXZpb3VzXG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInRvdXIuZW5kKClcIiBjb2xvcj1cIndhcm5cIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICBFbmRcbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGF0YS5sYXN0XCIgKGNsaWNrKT1cInRvdXIubmV4dCgpXCIgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICBOZXh0XG4gICAgICA8bWF0LWljb24+Y2hldnJvbl9yaWdodDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbWF0LWNhcmQtYWN0aW9ucz5cbjwvbWF0LWNhcmQ+XG4iXX0=
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
2
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
+
import { Directive, ElementRef, Injector, Input, ViewContainerRef } from '@angular/core';
|
|
4
|
+
import { OVERLAY_REFERENCE } from '../../providers/overlay.provider';
|
|
5
|
+
import { AppGuidedTourService } from '../../services/guided-tour/guided-tour.service';
|
|
6
|
+
import { AppGuidedTourComponent } from './guided-tour.component';
|
|
7
|
+
import { GUIDED_TOUR_DATA } from './guided-tour.interface';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
10
|
+
import * as i2 from "../../services/guided-tour/guided-tour.service";
|
|
11
|
+
/** Guided tour directive. */
|
|
12
|
+
export class AppGuidedTourDirective {
|
|
13
|
+
/**
|
|
14
|
+
* @param el A wrapper around a native element inside of a View.
|
|
15
|
+
* @param overlay Service to create Overlays.
|
|
16
|
+
* @param overlayConfig Initial configuration used when creating an overlay.
|
|
17
|
+
* @param viewContainerRef Represents a container where one or more views can be attached to a component.
|
|
18
|
+
* @param tour Guided tour service.
|
|
19
|
+
*/
|
|
20
|
+
constructor(el, overlay, overlayConfig, viewContainerRef, tour) {
|
|
21
|
+
this.el = el;
|
|
22
|
+
this.overlay = overlay;
|
|
23
|
+
this.overlayConfig = overlayConfig;
|
|
24
|
+
this.viewContainerRef = viewContainerRef;
|
|
25
|
+
this.tour = tour;
|
|
26
|
+
/** Guided tour step configuration. */
|
|
27
|
+
this.appGuidedTour = void 0;
|
|
28
|
+
this.highlightElement = false;
|
|
29
|
+
/** Connected positions configuration. */
|
|
30
|
+
this.flexibleConnectedPositions = [
|
|
31
|
+
// below origin
|
|
32
|
+
{
|
|
33
|
+
originX: 'center',
|
|
34
|
+
originY: 'bottom',
|
|
35
|
+
overlayX: 'center',
|
|
36
|
+
overlayY: 'top',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
originX: 'center',
|
|
40
|
+
originY: 'bottom',
|
|
41
|
+
overlayX: 'end',
|
|
42
|
+
overlayY: 'top',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
originX: 'center',
|
|
46
|
+
originY: 'bottom',
|
|
47
|
+
overlayX: 'start',
|
|
48
|
+
overlayY: 'top',
|
|
49
|
+
},
|
|
50
|
+
// above origin
|
|
51
|
+
{
|
|
52
|
+
originX: 'center',
|
|
53
|
+
originY: 'top',
|
|
54
|
+
overlayX: 'center',
|
|
55
|
+
overlayY: 'bottom',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
originX: 'center',
|
|
59
|
+
originY: 'top',
|
|
60
|
+
overlayX: 'end',
|
|
61
|
+
overlayY: 'bottom',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
originX: 'center',
|
|
65
|
+
originY: 'top',
|
|
66
|
+
overlayX: 'start',
|
|
67
|
+
overlayY: 'bottom',
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
/** Scroll strategy. */
|
|
71
|
+
this.scrollStrategy = 'reposition';
|
|
72
|
+
/** Overlay reference. */
|
|
73
|
+
this.overlayRef = null;
|
|
74
|
+
}
|
|
75
|
+
/** Overlay configurator. */
|
|
76
|
+
configureOverlay() {
|
|
77
|
+
const positionHost = this.nativeElement;
|
|
78
|
+
if (typeof positionHost !== 'undefined') {
|
|
79
|
+
this.overlayConfig.hasBackdrop = false;
|
|
80
|
+
this.overlayConfig.panelClass = '';
|
|
81
|
+
this.overlayConfig.minHeight = void 0;
|
|
82
|
+
this.overlayConfig.minWidth = void 0;
|
|
83
|
+
this.overlayConfig.maxHeight = void 0;
|
|
84
|
+
this.overlayConfig.maxWidth = void 0;
|
|
85
|
+
this.overlayConfig.height = void 0;
|
|
86
|
+
this.overlayConfig.width = void 0;
|
|
87
|
+
switch (this.scrollStrategy) {
|
|
88
|
+
case 'block':
|
|
89
|
+
this.overlayConfig.scrollStrategy = this.overlay.scrollStrategies.block();
|
|
90
|
+
break;
|
|
91
|
+
case 'close':
|
|
92
|
+
this.overlayConfig.scrollStrategy = this.overlay.scrollStrategies.close();
|
|
93
|
+
break;
|
|
94
|
+
case 'noop':
|
|
95
|
+
this.overlayConfig.scrollStrategy = this.overlay.scrollStrategies.noop();
|
|
96
|
+
break;
|
|
97
|
+
case 'reposition':
|
|
98
|
+
default:
|
|
99
|
+
this.overlayConfig.scrollStrategy = this.overlay.scrollStrategies.reposition();
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
this.overlayConfig.positionStrategy = this.overlay
|
|
103
|
+
.position()
|
|
104
|
+
.flexibleConnectedTo(positionHost)
|
|
105
|
+
.setOrigin(positionHost)
|
|
106
|
+
.withPositions(this.flexibleConnectedPositions);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** Overlay creator. */
|
|
110
|
+
createOverlay() {
|
|
111
|
+
if (this.overlayRef === null) {
|
|
112
|
+
this.configureOverlay();
|
|
113
|
+
this.overlayRef = this.overlay.create(this.overlayConfig);
|
|
114
|
+
}
|
|
115
|
+
return this.overlayRef;
|
|
116
|
+
}
|
|
117
|
+
/** Disposes an overlay. */
|
|
118
|
+
dispose() {
|
|
119
|
+
if (this.overlayRef !== null) {
|
|
120
|
+
void this.overlayRef?.detach();
|
|
121
|
+
void this.overlayRef?.dispose();
|
|
122
|
+
this.overlayRef = null;
|
|
123
|
+
this.decorateNativeEl(true);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** Displays an overlay. */
|
|
127
|
+
display() {
|
|
128
|
+
if (typeof this.appGuidedTour !== 'undefined' && !this.overlayRef?.hasAttached) {
|
|
129
|
+
const overlayRef = this.createOverlay();
|
|
130
|
+
const context = Injector.create({
|
|
131
|
+
providers: [
|
|
132
|
+
{
|
|
133
|
+
provide: OVERLAY_REFERENCE,
|
|
134
|
+
useValue: overlayRef,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
provide: GUIDED_TOUR_DATA,
|
|
138
|
+
useValue: { ...this.appGuidedTour },
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
provide: AppGuidedTourService,
|
|
142
|
+
useValue: this.tour,
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
});
|
|
146
|
+
const portal = new ComponentPortal(AppGuidedTourComponent, this.viewContainerRef, context);
|
|
147
|
+
void this.overlayRef?.attach(portal);
|
|
148
|
+
this.decorateNativeEl();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
decorateNativeEl(reset) {
|
|
152
|
+
if (typeof this.nativeElement !== 'undefined' && this.highlightElement) {
|
|
153
|
+
if (reset === true) {
|
|
154
|
+
this.nativeElement.style.border = 'unset';
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
this.nativeElement.style.border = '1px dotted black';
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
ngAfterContentInit() {
|
|
161
|
+
this.nativeElement = this.el.nativeElement;
|
|
162
|
+
}
|
|
163
|
+
ngOnDestroy() {
|
|
164
|
+
this.dispose();
|
|
165
|
+
}
|
|
166
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourDirective, deps: [{ token: i0.ElementRef }, { token: i1.Overlay }, { token: i1.OverlayConfig }, { token: i0.ViewContainerRef }, { token: i2.AppGuidedTourService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
167
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.7", type: AppGuidedTourDirective, selector: "[appGuidedTour]", inputs: { appGuidedTour: "appGuidedTour", highlightElement: "highlightElement", flexibleConnectedPositions: "flexibleConnectedPositions", scrollStrategy: "scrollStrategy" }, ngImport: i0 }); }
|
|
168
|
+
}
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourDirective, decorators: [{
|
|
170
|
+
type: Directive,
|
|
171
|
+
args: [{
|
|
172
|
+
selector: '[appGuidedTour]',
|
|
173
|
+
}]
|
|
174
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.Overlay }, { type: i1.OverlayConfig }, { type: i0.ViewContainerRef }, { type: i2.AppGuidedTourService }], propDecorators: { appGuidedTour: [{
|
|
175
|
+
type: Input
|
|
176
|
+
}], highlightElement: [{
|
|
177
|
+
type: Input
|
|
178
|
+
}], flexibleConnectedPositions: [{
|
|
179
|
+
type: Input
|
|
180
|
+
}], scrollStrategy: [{
|
|
181
|
+
type: Input
|
|
182
|
+
}] } });
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZ3VpZGVkLXRvdXIvc3JjL2xpYi9jb21wb25lbnRzL2d1aWRlZC10b3VyL2d1aWRlZC10b3VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLE9BQU8sRUFBRSxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFvQixTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFtQixNQUFNLHlCQUF5QixDQUFDOzs7O0FBRTVFLDZCQUE2QjtBQUk3QixNQUFNLE9BQU8sc0JBQXNCO0lBeURqQzs7Ozs7O09BTUc7SUFDSCxZQUNtQixFQUFjLEVBQ2QsT0FBZ0IsRUFDaEIsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLElBQTBCO1FBSjFCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsU0FBSSxHQUFKLElBQUksQ0FBc0I7UUFwRTdDLHNDQUFzQztRQUN0QixrQkFBYSxHQUFnQyxLQUFLLENBQUMsQ0FBQztRQUVwRCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekMseUNBQXlDO1FBQ3pCLCtCQUEwQixHQUF3QjtZQUNoRSxlQUFlO1lBQ2Y7Z0JBQ0UsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsUUFBUSxFQUFFLEtBQUs7YUFDaEI7WUFDRDtnQkFDRSxPQUFPLEVBQUUsUUFBUTtnQkFDakIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxLQUFLO2FBQ2hCO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLEtBQUs7YUFDaEI7WUFDRCxlQUFlO1lBQ2Y7Z0JBQ0UsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixRQUFRLEVBQUUsUUFBUTthQUNuQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsS0FBSztnQkFDZixRQUFRLEVBQUUsUUFBUTthQUNuQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLFFBQVE7YUFDbkI7U0FDRixDQUFDO1FBRUYsdUJBQXVCO1FBQ1AsbUJBQWMsR0FBOEMsWUFBWSxDQUFDO1FBS3pGLHlCQUF5QjtRQUNqQixlQUFVLEdBQXNCLElBQUksQ0FBQztJQWUxQyxDQUFDO0lBRUosNEJBQTRCO0lBQ3BCLGdCQUFnQjtRQUN0QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksT0FBTyxZQUFZLEtBQUssV0FBVyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDbEMsUUFBUSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUMzQixLQUFLLE9BQU87b0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDMUUsTUFBTTtnQkFDUixLQUFLLE9BQU87b0JBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDMUUsTUFBTTtnQkFDUixLQUFLLE1BQU07b0JBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDekUsTUFBTTtnQkFDUixLQUFLLFlBQVksQ0FBQztnQkFDbEI7b0JBQ0UsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDL0UsTUFBTTthQUNUO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTztpQkFDL0MsUUFBUSxFQUFFO2lCQUNWLG1CQUFtQixDQUFDLFlBQVksQ0FBQztpQkFDakMsU0FBUyxDQUFDLFlBQVksQ0FBQztpQkFDdkIsYUFBYSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVELHVCQUF1QjtJQUNmLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtZQUM1QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsMkJBQTJCO0lBQ3BCLE9BQU87UUFDWixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQzVCLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMvQixLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUNwQixPQUFPO1FBQ1osSUFBSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUssV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUU7WUFDOUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzlCLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixRQUFRLEVBQUUsVUFBVTtxQkFDckI7b0JBQ0Q7d0JBQ0UsT0FBTyxFQUFFLGdCQUFnQjt3QkFDekIsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFO3FCQUNwQztvQkFDRDt3QkFDRSxPQUFPLEVBQUUsb0JBQW9CO3dCQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUk7cUJBQ3BCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzNGLEtBQUssSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBZTtRQUN0QyxJQUFJLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3RFLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQztnQkFDMUMsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO2lJQXhLVSxzQkFBc0I7cUhBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1QjttTUFHaUIsYUFBYTtzQkFBNUIsS0FBSztnQkFFVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBR1UsMEJBQTBCO3NCQUF6QyxLQUFLO2dCQTBDVSxjQUFjO3NCQUE3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24sIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIElucHV0LCBPbkRlc3Ryb3ksIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT1ZFUkxBWV9SRUZFUkVOQ0UgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvb3ZlcmxheS5wcm92aWRlcic7XG5pbXBvcnQgeyBBcHBHdWlkZWRUb3VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2d1aWRlZC10b3VyL2d1aWRlZC10b3VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwR3VpZGVkVG91ckNvbXBvbmVudCB9IGZyb20gJy4vZ3VpZGVkLXRvdXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdVSURFRF9UT1VSX0RBVEEsIElHdWlkZWRUb3VyRGF0YSB9IGZyb20gJy4vZ3VpZGVkLXRvdXIuaW50ZXJmYWNlJztcblxuLyoqIEd1aWRlZCB0b3VyIGRpcmVjdGl2ZS4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBHdWlkZWRUb3VyXScsXG59KVxuZXhwb3J0IGNsYXNzIEFwcEd1aWRlZFRvdXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvKiogR3VpZGVkIHRvdXIgc3RlcCBjb25maWd1cmF0aW9uLiAqL1xuICBASW5wdXQoKSBwdWJsaWMgYXBwR3VpZGVkVG91cjogSUd1aWRlZFRvdXJEYXRhIHwgdW5kZWZpbmVkID0gdm9pZCAwO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBoaWdobGlnaHRFbGVtZW50ID0gZmFsc2U7XG5cbiAgLyoqIENvbm5lY3RlZCBwb3NpdGlvbnMgY29uZmlndXJhdGlvbi4gKi9cbiAgQElucHV0KCkgcHVibGljIGZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgIC8vIGJlbG93IG9yaWdpblxuICAgIHtcbiAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgb3ZlcmxheVg6ICdlbmQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgIH0sXG4gICAge1xuICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgIH0sXG4gICAgLy8gYWJvdmUgb3JpZ2luXG4gICAge1xuICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgfSxcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgfSxcbiAgXTtcblxuICAvKiogU2Nyb2xsIHN0cmF0ZWd5LiAqL1xuICBASW5wdXQoKSBwdWJsaWMgc2Nyb2xsU3RyYXRlZ3k6ICdibG9jaycgfCAnY2xvc2UnIHwgJ25vb3AnIHwgJ3JlcG9zaXRpb24nID0gJ3JlcG9zaXRpb24nO1xuXG4gIC8qKiBOYXRpdmUgZWxlbWVudCByZWYuICovXG4gIHByaXZhdGUgbmF0aXZlRWxlbWVudD86IEhUTUxFbGVtZW50O1xuXG4gIC8qKiBPdmVybGF5IHJlZmVyZW5jZS4gKi9cbiAgcHJpdmF0ZSBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBlbCBBIHdyYXBwZXIgYXJvdW5kIGEgbmF0aXZlIGVsZW1lbnQgaW5zaWRlIG9mIGEgVmlldy5cbiAgICogQHBhcmFtIG92ZXJsYXkgU2VydmljZSB0byBjcmVhdGUgT3ZlcmxheXMuXG4gICAqIEBwYXJhbSBvdmVybGF5Q29uZmlnIEluaXRpYWwgY29uZmlndXJhdGlvbiB1c2VkIHdoZW4gY3JlYXRpbmcgYW4gb3ZlcmxheS5cbiAgICogQHBhcmFtIHZpZXdDb250YWluZXJSZWYgUmVwcmVzZW50cyBhIGNvbnRhaW5lciB3aGVyZSBvbmUgb3IgbW9yZSB2aWV3cyBjYW4gYmUgYXR0YWNoZWQgdG8gYSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB0b3VyIEd1aWRlZCB0b3VyIHNlcnZpY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlDb25maWc6IE92ZXJsYXlDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdG91cjogQXBwR3VpZGVkVG91clNlcnZpY2UsXG4gICkge31cblxuICAvKiogT3ZlcmxheSBjb25maWd1cmF0b3IuICovXG4gIHByaXZhdGUgY29uZmlndXJlT3ZlcmxheSgpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbkhvc3QgPSB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHR5cGVvZiBwb3NpdGlvbkhvc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aGlzLm92ZXJsYXlDb25maWcuaGFzQmFja2Ryb3AgPSBmYWxzZTtcbiAgICAgIHRoaXMub3ZlcmxheUNvbmZpZy5wYW5lbENsYXNzID0gJyc7XG4gICAgICB0aGlzLm92ZXJsYXlDb25maWcubWluSGVpZ2h0ID0gdm9pZCAwO1xuICAgICAgdGhpcy5vdmVybGF5Q29uZmlnLm1pbldpZHRoID0gdm9pZCAwO1xuICAgICAgdGhpcy5vdmVybGF5Q29uZmlnLm1heEhlaWdodCA9IHZvaWQgMDtcbiAgICAgIHRoaXMub3ZlcmxheUNvbmZpZy5tYXhXaWR0aCA9IHZvaWQgMDtcbiAgICAgIHRoaXMub3ZlcmxheUNvbmZpZy5oZWlnaHQgPSB2b2lkIDA7XG4gICAgICB0aGlzLm92ZXJsYXlDb25maWcud2lkdGggPSB2b2lkIDA7XG4gICAgICBzd2l0Y2ggKHRoaXMuc2Nyb2xsU3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAnYmxvY2snOlxuICAgICAgICAgIHRoaXMub3ZlcmxheUNvbmZpZy5zY3JvbGxTdHJhdGVneSA9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Nsb3NlJzpcbiAgICAgICAgICB0aGlzLm92ZXJsYXlDb25maWcuc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdub29wJzpcbiAgICAgICAgICB0aGlzLm92ZXJsYXlDb25maWcuc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ub29wKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JlcG9zaXRpb24nOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoaXMub3ZlcmxheUNvbmZpZy5zY3JvbGxTdHJhdGVneSA9IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMub3ZlcmxheUNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHBvc2l0aW9uSG9zdClcbiAgICAgICAgLnNldE9yaWdpbihwb3NpdGlvbkhvc3QpXG4gICAgICAgIC53aXRoUG9zaXRpb25zKHRoaXMuZmxleGlibGVDb25uZWN0ZWRQb3NpdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBPdmVybGF5IGNyZWF0b3IuICovXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheSgpOiBPdmVybGF5UmVmIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZiA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5jb25maWd1cmVPdmVybGF5KCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKHRoaXMub3ZlcmxheUNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWY7XG4gIH1cblxuICAvKiogRGlzcG9zZXMgYW4gb3ZlcmxheS4gKi9cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZiAhPT0gbnVsbCkge1xuICAgICAgdm9pZCB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgICAgdm9pZCB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgICB0aGlzLmRlY29yYXRlTmF0aXZlRWwodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERpc3BsYXlzIGFuIG92ZXJsYXkuICovXG4gIHB1YmxpYyBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgdGhpcy5hcHBHdWlkZWRUb3VyICE9PSAndW5kZWZpbmVkJyAmJiAhdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCkge1xuICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMuY3JlYXRlT3ZlcmxheSgpO1xuICAgICAgY29uc3QgY29udGV4dCA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE9WRVJMQVlfUkVGRVJFTkNFLFxuICAgICAgICAgICAgdXNlVmFsdWU6IG92ZXJsYXlSZWYsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBHVUlERURfVE9VUl9EQVRBLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHsgLi4udGhpcy5hcHBHdWlkZWRUb3VyIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBcHBHdWlkZWRUb3VyU2VydmljZSxcbiAgICAgICAgICAgIHVzZVZhbHVlOiB0aGlzLnRvdXIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChBcHBHdWlkZWRUb3VyQ29tcG9uZW50LCB0aGlzLnZpZXdDb250YWluZXJSZWYsIGNvbnRleHQpO1xuICAgICAgdm9pZCB0aGlzLm92ZXJsYXlSZWY/LmF0dGFjaChwb3J0YWwpO1xuICAgICAgdGhpcy5kZWNvcmF0ZU5hdGl2ZUVsKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZWNvcmF0ZU5hdGl2ZUVsKHJlc2V0PzogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgdGhpcy5uYXRpdmVFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmhpZ2hsaWdodEVsZW1lbnQpIHtcbiAgICAgIGlmIChyZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYm9yZGVyID0gJ3Vuc2V0JztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnN0eWxlLmJvcmRlciA9ICcxcHggZG90dGVkIGJsYWNrJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubmF0aXZlRWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/** Guided tour step data injection token. */
|
|
3
|
+
export const GUIDED_TOUR_DATA = new InjectionToken('GUIDED_TOUR_DATA');
|
|
4
|
+
/** Guided tour step data provider. */
|
|
5
|
+
export const guidedTourDataProvider = {
|
|
6
|
+
provide: GUIDED_TOUR_DATA,
|
|
7
|
+
useValue: {
|
|
8
|
+
index: 0,
|
|
9
|
+
title: '',
|
|
10
|
+
subtitle: '',
|
|
11
|
+
description: '',
|
|
12
|
+
first: true,
|
|
13
|
+
last: true,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZ3VpZGVkLXRvdXIvc3JjL2xpYi9jb21wb25lbnRzL2d1aWRlZC10b3VyL2d1aWRlZC10b3VyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBWXpELDZDQUE2QztBQUM3QyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBa0Isa0JBQWtCLENBQUMsQ0FBQztBQUV4RixzQ0FBc0M7QUFDdEMsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQWE7SUFDOUMsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixRQUFRLEVBQW1CO1FBQ3pCLEtBQUssRUFBRSxDQUFDO1FBQ1IsS0FBSyxFQUFFLEVBQUU7UUFDVCxRQUFRLEVBQUUsRUFBRTtRQUNaLFdBQVcsRUFBRSxFQUFFO1FBQ2YsS0FBSyxFQUFFLElBQUk7UUFDWCxJQUFJLEVBQUUsSUFBSTtLQUNYO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogR3VpZGVkIHRvdXIgc3RlcCBkYXRhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR3VpZGVkVG91ckRhdGEge1xuICBpbmRleDogbnVtYmVyO1xuICB0aXRsZTogc3RyaW5nO1xuICBzdWJ0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBmaXJzdDogYm9vbGVhbjtcbiAgbGFzdDogYm9vbGVhbjtcbn1cblxuLyoqIEd1aWRlZCB0b3VyIHN0ZXAgZGF0YSBpbmplY3Rpb24gdG9rZW4uICovXG5leHBvcnQgY29uc3QgR1VJREVEX1RPVVJfREFUQSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJR3VpZGVkVG91ckRhdGE+KCdHVUlERURfVE9VUl9EQVRBJyk7XG5cbi8qKiBHdWlkZWQgdG91ciBzdGVwIGRhdGEgcHJvdmlkZXIuICovXG5leHBvcnQgY29uc3QgZ3VpZGVkVG91ckRhdGFQcm92aWRlcjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IEdVSURFRF9UT1VSX0RBVEEsXG4gIHVzZVZhbHVlOiA8SUd1aWRlZFRvdXJEYXRhPntcbiAgICBpbmRleDogMCxcbiAgICB0aXRsZTogJycsXG4gICAgc3VidGl0bGU6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICBmaXJzdDogdHJ1ZSxcbiAgICBsYXN0OiB0cnVlLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, QueryList, signal, ViewChildren } from '@angular/core';
|
|
2
|
+
import { AppGuidedTourService } from '../../services/guided-tour/guided-tour.service';
|
|
3
|
+
import { AppGuidedTourDirective } from '../guided-tour/guided-tour.directive';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../services/guided-tour/guided-tour.service";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@angular/material/button";
|
|
8
|
+
import * as i4 from "../guided-tour/guided-tour.directive";
|
|
9
|
+
/** An example of a guided tour. */
|
|
10
|
+
export class AppGuidedTourExampleComponent {
|
|
11
|
+
/**
|
|
12
|
+
* @param tour Guided tour service.
|
|
13
|
+
*/
|
|
14
|
+
constructor(tour) {
|
|
15
|
+
this.tour = tour;
|
|
16
|
+
/** Example tour configuration. */
|
|
17
|
+
this.tourConig$ = signal([
|
|
18
|
+
{
|
|
19
|
+
index: 0,
|
|
20
|
+
title: 'first',
|
|
21
|
+
subtitle: 'First step',
|
|
22
|
+
description: 'The first step. Highlighting disabled.',
|
|
23
|
+
first: true,
|
|
24
|
+
last: false,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
index: 1,
|
|
28
|
+
title: 'second',
|
|
29
|
+
subtitle: 'Second step',
|
|
30
|
+
description: 'The second step. Highlighting enabled.',
|
|
31
|
+
first: false,
|
|
32
|
+
last: false,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
index: 2,
|
|
36
|
+
title: 'third',
|
|
37
|
+
subtitle: 'Third step',
|
|
38
|
+
description: 'The final step. Highlighting enabled.',
|
|
39
|
+
first: false,
|
|
40
|
+
last: true,
|
|
41
|
+
},
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
ngAfterViewInit() {
|
|
45
|
+
this.tour.configuration = this.steps;
|
|
46
|
+
}
|
|
47
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleComponent, deps: [{ token: i1.AppGuidedTourService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: AppGuidedTourExampleComponent, selector: "app-guided-tour-example", providers: [AppGuidedTourService], viewQueries: [{ propertyName: "steps", predicate: AppGuidedTourDirective, descendants: true }], ngImport: i0, template: "<p>... Some content ...</p>\n\n<ng-container *ngIf=\"tourConig$() as config\">\n <div [appGuidedTour]=\"config.at(1)\" [highlightElement]=\"true\">second item to explain</div>\n\n <p>... Some content ...</p>\n\n <div [appGuidedTour]=\"config.at(2)\" [highlightElement]=\"true\">third item to explain</div>\n\n <p>... Some content ...</p>\n\n <div [appGuidedTour]=\"config.at(0)\">first item to explain</div>\n</ng-container>\n\n<p>... Some content ...</p>\n\n@if (!tour.active) {\n <button mat-raised-button color=\"accent\" (click)=\"tour.next()\">Start tour</button>\n} @else {\n <button mat-raised-button color=\"warn\" (click)=\"tour.end()\">End tour</button>\n}\n", styles: [":host{display:block;padding:16px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i4.AppGuidedTourDirective, selector: "[appGuidedTour]", inputs: ["appGuidedTour", "highlightElement", "flexibleConnectedPositions", "scrollStrategy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleComponent, decorators: [{
|
|
51
|
+
type: Component,
|
|
52
|
+
args: [{ selector: 'app-guided-tour-example', providers: [AppGuidedTourService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p>... Some content ...</p>\n\n<ng-container *ngIf=\"tourConig$() as config\">\n <div [appGuidedTour]=\"config.at(1)\" [highlightElement]=\"true\">second item to explain</div>\n\n <p>... Some content ...</p>\n\n <div [appGuidedTour]=\"config.at(2)\" [highlightElement]=\"true\">third item to explain</div>\n\n <p>... Some content ...</p>\n\n <div [appGuidedTour]=\"config.at(0)\">first item to explain</div>\n</ng-container>\n\n<p>... Some content ...</p>\n\n@if (!tour.active) {\n <button mat-raised-button color=\"accent\" (click)=\"tour.next()\">Start tour</button>\n} @else {\n <button mat-raised-button color=\"warn\" (click)=\"tour.end()\">End tour</button>\n}\n", styles: [":host{display:block;padding:16px}\n"] }]
|
|
53
|
+
}], ctorParameters: () => [{ type: i1.AppGuidedTourService }], propDecorators: { steps: [{
|
|
54
|
+
type: ViewChildren,
|
|
55
|
+
args: [AppGuidedTourDirective]
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXItZXhhbXBsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1ndWlkZWQtdG91ci9zcmMvbGliL2NvbXBvbmVudHMvZ3VpZGVkLXRvdXItZXhhbXBsZS9ndWlkZWQtdG91ci1leGFtcGxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWd1aWRlZC10b3VyL3NyYy9saWIvY29tcG9uZW50cy9ndWlkZWQtdG91ci1leGFtcGxlL2d1aWRlZC10b3VyLWV4YW1wbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQUc5RSxtQ0FBbUM7QUFRbkMsTUFBTSxPQUFPLDZCQUE2QjtJQWdDeEM7O09BRUc7SUFDSCxZQUE0QixJQUEwQjtRQUExQixTQUFJLEdBQUosSUFBSSxDQUFzQjtRQS9CdEQsa0NBQWtDO1FBQzNCLGVBQVUsR0FBRyxNQUFNLENBQW9CO1lBQzVDO2dCQUNFLEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxPQUFPO2dCQUNkLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixXQUFXLEVBQUUsd0NBQXdDO2dCQUNyRCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUUsS0FBSzthQUNaO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFBRSxLQUFLO2FBQ1o7WUFDRDtnQkFDRSxLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUUsT0FBTztnQkFDZCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsV0FBVyxFQUFFLHVDQUF1QztnQkFDcEQsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osSUFBSSxFQUFFLElBQUk7YUFDWDtTQUNGLENBQUMsQ0FBQztJQUtzRCxDQUFDO0lBRW5ELGVBQWU7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO2lJQXZDVSw2QkFBNkI7cUhBQTdCLDZCQUE2QixrREFIN0IsQ0FBQyxvQkFBb0IsQ0FBQyxvREFLbkIsc0JBQXNCLGdEQ2hCdEMscXFCQXFCQTs7MkZEUGEsNkJBQTZCO2tCQVB6QyxTQUFTOytCQUNFLHlCQUF5QixhQUd4QixDQUFDLG9CQUFvQixDQUFDLG1CQUNoQix1QkFBdUIsQ0FBQyxNQUFNO3lGQUlGLEtBQUs7c0JBQWpELFlBQVk7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgUXVlcnlMaXN0LCBzaWduYWwsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBHdWlkZWRUb3VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2d1aWRlZC10b3VyL2d1aWRlZC10b3VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwR3VpZGVkVG91ckRpcmVjdGl2ZSB9IGZyb20gJy4uL2d1aWRlZC10b3VyL2d1aWRlZC10b3VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJR3VpZGVkVG91ckRhdGEgfSBmcm9tICcuLi9ndWlkZWQtdG91ci9ndWlkZWQtdG91ci5pbnRlcmZhY2UnO1xuXG4vKiogQW4gZXhhbXBsZSBvZiBhIGd1aWRlZCB0b3VyLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWd1aWRlZC10b3VyLWV4YW1wbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3VpZGVkLXRvdXItZXhhbXBsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2d1aWRlZC10b3VyLWV4YW1wbGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQXBwR3VpZGVkVG91clNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQXBwR3VpZGVkVG91ckV4YW1wbGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLyoqIFRvdXIgc3RlcHMuICovXG4gIEBWaWV3Q2hpbGRyZW4oQXBwR3VpZGVkVG91ckRpcmVjdGl2ZSkgcHVibGljIHN0ZXBzITogUXVlcnlMaXN0PEFwcEd1aWRlZFRvdXJEaXJlY3RpdmU+O1xuXG4gIC8qKiBFeGFtcGxlIHRvdXIgY29uZmlndXJhdGlvbi4gKi9cbiAgcHVibGljIHRvdXJDb25pZyQgPSBzaWduYWw8SUd1aWRlZFRvdXJEYXRhW10+KFtcbiAgICB7XG4gICAgICBpbmRleDogMCxcbiAgICAgIHRpdGxlOiAnZmlyc3QnLFxuICAgICAgc3VidGl0bGU6ICdGaXJzdCBzdGVwJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIGZpcnN0IHN0ZXAuIEhpZ2hsaWdodGluZyBkaXNhYmxlZC4nLFxuICAgICAgZmlyc3Q6IHRydWUsXG4gICAgICBsYXN0OiBmYWxzZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGluZGV4OiAxLFxuICAgICAgdGl0bGU6ICdzZWNvbmQnLFxuICAgICAgc3VidGl0bGU6ICdTZWNvbmQgc3RlcCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBzZWNvbmQgc3RlcC4gSGlnaGxpZ2h0aW5nIGVuYWJsZWQuJyxcbiAgICAgIGZpcnN0OiBmYWxzZSxcbiAgICAgIGxhc3Q6IGZhbHNlLFxuICAgIH0sXG4gICAge1xuICAgICAgaW5kZXg6IDIsXG4gICAgICB0aXRsZTogJ3RoaXJkJyxcbiAgICAgIHN1YnRpdGxlOiAnVGhpcmQgc3RlcCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBmaW5hbCBzdGVwLiBIaWdobGlnaHRpbmcgZW5hYmxlZC4nLFxuICAgICAgZmlyc3Q6IGZhbHNlLFxuICAgICAgbGFzdDogdHJ1ZSxcbiAgICB9LFxuICBdKTtcblxuICAvKipcbiAgICogQHBhcmFtIHRvdXIgR3VpZGVkIHRvdXIgc2VydmljZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSB0b3VyOiBBcHBHdWlkZWRUb3VyU2VydmljZSkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudG91ci5jb25maWd1cmF0aW9uID0gdGhpcy5zdGVwcztcbiAgfVxufVxuIiwiPHA+Li4uIFNvbWUgY29udGVudCAuLi48L3A+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3VyQ29uaWckKCkgYXMgY29uZmlnXCI+XG4gIDxkaXYgW2FwcEd1aWRlZFRvdXJdPVwiY29uZmlnLmF0KDEpXCIgW2hpZ2hsaWdodEVsZW1lbnRdPVwidHJ1ZVwiPnNlY29uZCBpdGVtIHRvIGV4cGxhaW48L2Rpdj5cblxuICA8cD4uLi4gU29tZSBjb250ZW50IC4uLjwvcD5cblxuICA8ZGl2IFthcHBHdWlkZWRUb3VyXT1cImNvbmZpZy5hdCgyKVwiIFtoaWdobGlnaHRFbGVtZW50XT1cInRydWVcIj50aGlyZCBpdGVtIHRvIGV4cGxhaW48L2Rpdj5cblxuICA8cD4uLi4gU29tZSBjb250ZW50IC4uLjwvcD5cblxuICA8ZGl2IFthcHBHdWlkZWRUb3VyXT1cImNvbmZpZy5hdCgwKVwiPmZpcnN0IGl0ZW0gdG8gZXhwbGFpbjwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxwPi4uLiBTb21lIGNvbnRlbnQgLi4uPC9wPlxuXG5AaWYgKCF0b3VyLmFjdGl2ZSkge1xuICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgKGNsaWNrKT1cInRvdXIubmV4dCgpXCI+U3RhcnQgdG91cjwvYnV0dG9uPlxufSBAZWxzZSB7XG4gIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cInRvdXIuZW5kKClcIj5FbmQgdG91cjwvYnV0dG9uPlxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './guided-tour/guided-tour.directive';
|
|
2
|
+
export * from './guided-tour/guided-tour.interface';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1ndWlkZWQtdG91ci9zcmMvbGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ndWlkZWQtdG91ci9ndWlkZWQtdG91ci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9ndWlkZWQtdG91ci9ndWlkZWQtdG91ci5pbnRlcmZhY2UnO1xuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { AppGuidedTourExampleComponent } from './components/guided-tour-example/guided-tour-example.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
const routes = [
|
|
7
|
+
{
|
|
8
|
+
path: '',
|
|
9
|
+
component: AppGuidedTourExampleComponent,
|
|
10
|
+
},
|
|
11
|
+
];
|
|
12
|
+
export class AppGuidedTourExampleRoutingModule {
|
|
13
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] }); }
|
|
15
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] }); }
|
|
16
|
+
}
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleRoutingModule, decorators: [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
imports: [RouterModule.forChild(routes)],
|
|
21
|
+
exports: [RouterModule],
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXItZXhhbXBsZS1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWd1aWRlZC10b3VyL3NyYy9saWIvZ3VpZGVkLXRvdXItZXhhbXBsZS1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7O0FBRS9HLE1BQU0sTUFBTSxHQUFZO0lBQ3RCO1FBQ0UsSUFBSSxFQUFFLEVBQUU7UUFDUixTQUFTLEVBQUUsNkJBQTZCO0tBQ3pDO0NBQ0YsQ0FBQztBQU1GLE1BQU0sT0FBTyxpQ0FBaUM7aUlBQWpDLGlDQUFpQztrSUFBakMsaUNBQWlDLHdDQUZsQyxZQUFZO2tJQUVYLGlDQUFpQyxZQUhsQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzsyRkFFWCxpQ0FBaUM7a0JBSjdDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQXBwR3VpZGVkVG91ckV4YW1wbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ3VpZGVkLXRvdXItZXhhbXBsZS9ndWlkZWQtdG91ci1leGFtcGxlLmNvbXBvbmVudCc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVbXSA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGNvbXBvbmVudDogQXBwR3VpZGVkVG91ckV4YW1wbGVDb21wb25lbnQsXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwR3VpZGVkVG91ckV4YW1wbGVSb3V0aW5nTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { AppGuidedTourExampleComponent } from './components/guided-tour-example/guided-tour-example.component';
|
|
6
|
+
import { AppGuidedTourModule } from './guided-tour.module';
|
|
7
|
+
import { AppGuidedTourExampleRoutingModule } from './guided-tour-example-routing.module';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class AppGuidedTourExampleModule {
|
|
10
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
11
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleModule, declarations: [AppGuidedTourExampleComponent], imports: [CommonModule, MatButtonModule, MatIconModule, AppGuidedTourModule, AppGuidedTourExampleRoutingModule] }); }
|
|
12
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleModule, imports: [CommonModule, MatButtonModule, MatIconModule, AppGuidedTourModule, AppGuidedTourExampleRoutingModule] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourExampleModule, decorators: [{
|
|
15
|
+
type: NgModule,
|
|
16
|
+
args: [{
|
|
17
|
+
imports: [CommonModule, MatButtonModule, MatIconModule, AppGuidedTourModule, AppGuidedTourExampleRoutingModule],
|
|
18
|
+
declarations: [AppGuidedTourExampleComponent],
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXItZXhhbXBsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NsaWVudC1ndWlkZWQtdG91ci9zcmMvbGliL2d1aWRlZC10b3VyLWV4YW1wbGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sZ0VBQWdFLENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7O0FBTXpGLE1BQU0sT0FBTywwQkFBMEI7aUlBQTFCLDBCQUEwQjtrSUFBMUIsMEJBQTBCLGlCQUZ0Qiw2QkFBNkIsYUFEbEMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsaUNBQWlDO2tJQUduRywwQkFBMEIsWUFIM0IsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsaUNBQWlDOzsyRkFHbkcsMEJBQTBCO2tCQUp0QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixFQUFFLGlDQUFpQyxDQUFDO29CQUMvRyxZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7IEFwcEd1aWRlZFRvdXJFeGFtcGxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2d1aWRlZC10b3VyLWV4YW1wbGUvZ3VpZGVkLXRvdXItZXhhbXBsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwR3VpZGVkVG91ck1vZHVsZSB9IGZyb20gJy4vZ3VpZGVkLXRvdXIubW9kdWxlJztcbmltcG9ydCB7IEFwcEd1aWRlZFRvdXJFeGFtcGxlUm91dGluZ01vZHVsZSB9IGZyb20gJy4vZ3VpZGVkLXRvdXItZXhhbXBsZS1yb3V0aW5nLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgQXBwR3VpZGVkVG91ck1vZHVsZSwgQXBwR3VpZGVkVG91ckV4YW1wbGVSb3V0aW5nTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbQXBwR3VpZGVkVG91ckV4YW1wbGVDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBHdWlkZWRUb3VyRXhhbXBsZU1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OverlayModule } from '@angular/cdk/overlay';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatCardModule } from '@angular/material/card';
|
|
6
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
+
import { AppGuidedTourComponent } from './components/guided-tour/guided-tour.component';
|
|
8
|
+
import { AppGuidedTourDirective } from './components/guided-tour/guided-tour.directive';
|
|
9
|
+
import { overlayProvider } from './providers/overlay.provider';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class AppGuidedTourModule {
|
|
12
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
13
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourModule, declarations: [AppGuidedTourComponent, AppGuidedTourDirective], imports: [CommonModule, OverlayModule, MatButtonModule, MatIconModule, MatCardModule], exports: [AppGuidedTourDirective] }); }
|
|
14
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourModule, providers: [overlayProvider], imports: [CommonModule, OverlayModule, MatButtonModule, MatIconModule, MatCardModule] }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AppGuidedTourModule, decorators: [{
|
|
17
|
+
type: NgModule,
|
|
18
|
+
args: [{
|
|
19
|
+
imports: [CommonModule, OverlayModule, MatButtonModule, MatIconModule, MatCardModule],
|
|
20
|
+
declarations: [AppGuidedTourComponent, AppGuidedTourDirective],
|
|
21
|
+
providers: [overlayProvider],
|
|
22
|
+
exports: [AppGuidedTourDirective],
|
|
23
|
+
}]
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpZGVkLXRvdXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jbGllbnQtZ3VpZGVkLXRvdXIvc3JjL2xpYi9ndWlkZWQtdG91ci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFRL0QsTUFBTSxPQUFPLG1CQUFtQjtpSUFBbkIsbUJBQW1CO2tJQUFuQixtQkFBbUIsaUJBSmYsc0JBQXNCLEVBQUUsc0JBQXNCLGFBRG5ELFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLGFBRzFFLHNCQUFzQjtrSUFFckIsbUJBQW1CLGFBSG5CLENBQUMsZUFBZSxDQUFDLFlBRmxCLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhOzsyRkFLekUsbUJBQW1CO2tCQU4vQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxhQUFhLENBQUM7b0JBQ3JGLFlBQVksRUFBRSxDQUFDLHNCQUFzQixFQUFFLHNCQUFzQixDQUFDO29CQUM5RCxTQUFTLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7IEFwcEd1aWRlZFRvdXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZ3VpZGVkLXRvdXIvZ3VpZGVkLXRvdXIuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcEd1aWRlZFRvdXJEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvZ3VpZGVkLXRvdXIvZ3VpZGVkLXRvdXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IG92ZXJsYXlQcm92aWRlciB9IGZyb20gJy4vcHJvdmlkZXJzL292ZXJsYXkucHJvdmlkZXInO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBPdmVybGF5TW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdENhcmRNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtBcHBHdWlkZWRUb3VyQ29tcG9uZW50LCBBcHBHdWlkZWRUb3VyRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbb3ZlcmxheVByb3ZpZGVyXSxcbiAgZXhwb3J0czogW0FwcEd1aWRlZFRvdXJEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBHdWlkZWRUb3VyTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
2
|
+
import { InjectionToken } from '@angular/core';
|
|
3
|
+
/** The overlay reference injection token. */
|
|
4
|
+
export const OVERLAY_REFERENCE = new InjectionToken('OverlayReference');
|
|
5
|
+
/** Overlay config provider. */
|
|
6
|
+
export const overlayProvider = {
|
|
7
|
+
provide: OverlayConfig,
|
|
8
|
+
useFactory: () => new OverlayConfig({
|
|
9
|
+
direction: 'ltr',
|
|
10
|
+
}),
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2xpZW50LWd1aWRlZC10b3VyL3NyYy9saWIvcHJvdmlkZXJzL292ZXJsYXkucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFFekQsNkNBQTZDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFhLGtCQUFrQixDQUFDLENBQUM7QUFFcEYsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBYTtJQUN2QyxPQUFPLEVBQUUsYUFBYTtJQUN0QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQ2YsSUFBSSxhQUFhLENBQUM7UUFDaEIsU0FBUyxFQUFFLEtBQUs7S0FDakIsQ0FBQztDQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKiBUaGUgb3ZlcmxheSByZWZlcmVuY2UgaW5qZWN0aW9uIHRva2VuLiAqL1xuZXhwb3J0IGNvbnN0IE9WRVJMQVlfUkVGRVJFTkNFID0gbmV3IEluamVjdGlvblRva2VuPE92ZXJsYXlSZWY+KCdPdmVybGF5UmVmZXJlbmNlJyk7XG5cbi8qKiBPdmVybGF5IGNvbmZpZyBwcm92aWRlci4gKi9cbmV4cG9ydCBjb25zdCBvdmVybGF5UHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBPdmVybGF5Q29uZmlnLFxuICB1c2VGYWN0b3J5OiAoKSA9PlxuICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgfSksXG59O1xuIl19
|