@ruc-lib/tour-guide 2.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/README.md ADDED
@@ -0,0 +1,192 @@
1
+ # ruclib-tour-guide
2
+
3
+ A component for creating a tour guide that provides information and guidance about a specific feature or functionality to the user.
4
+
5
+ # Installation guide
6
+
7
+ To use the Tour Guide component, you can install the entire RUC library or just this specific component.
8
+
9
+ ### Install the Entire Library
10
+ ```bash
11
+ npm install @uxpractice/ruc-lib
12
+ ```
13
+
14
+ ### Install Individual Component
15
+
16
+ If you only need the Tour Guide component
17
+ ```bash
18
+ npm install @uxpractice/tour-guide
19
+ ```
20
+
21
+ ## Usage
22
+ ### 1. Import the Module
23
+ In your Angular module file (e.g., `app.module.ts`), import the `RuclibTourGuideModule`:
24
+
25
+ ```typescript
26
+ import { RuclibTourGuideModule } from '@uxpractice/tour-guide';
27
+ import { AppComponent } from './app.component';
28
+ import { NgModule } from '@angular/core';
29
+ import { BrowserModule } from '@angular/platform-browser';
30
+
31
+ @NgModule({
32
+ declarations: [AppComponent],
33
+ imports: [
34
+ BrowserModule,
35
+ RuclibTourGuideModule
36
+ ],
37
+ providers: [],
38
+ bootstrap: [AppComponent]
39
+ })
40
+ export class AppModule {}
41
+ ```
42
+
43
+ ### 2. Use the Component
44
+ In your component's template, use the `<uxp-ruc-tour-guide>` selector and pass the configuration object to the `rucInputData` input.
45
+
46
+ ```html
47
+ <uxp-ruc-tour-guide
48
+ [rucInputData]="tourGuideConfig"
49
+ [customTheme]="customTheme"
50
+ (rucEvent)="passEvent($event)"
51
+ [dataSource]="tourGuideData">
52
+ </uxp-ruc-tour-guide>
53
+ ```
54
+
55
+ ## API Reference
56
+
57
+ ### Component Inputs
58
+
59
+ | Input | Type | Description |
60
+ |----------------|--------------------|---------------------------------------------------|
61
+ | `rucInputData` | `tourGuideConfig` | The main configuration object for the tour guide. |
62
+ | `customTheme` | `string` | An optional CSS class for custom theming. |
63
+ | `dataSource` | `tourGuideData` | An optional CSS class for custom theming. |
64
+
65
+ ### Component Outputs
66
+
67
+ | Output | Type | Description |
68
+ |-----------|-----------|---------------------------------------------------|
69
+ | `rucEvent`| `any` | Emits events related to tour guide actions (e.g., 'skip', 'next', 'finish'). |
70
+
71
+ ### `tourGuideConfig`
72
+ This is the main configuration object for the Tour Guide component.
73
+
74
+ | Property | Type | Description |
75
+ |--------------------------|---------------------------------------------------------------------|-----------------------------------------------------------------------|
76
+ | `type` | `'simple' \| 'advance'` | Type of tour guide (e.g., 'simple', 'advance'). |
77
+ | `showSkipButton` | `boolean` | To toggle the visibility of the skip button. |
78
+ | `buttonsFontSize` | `string` | Configure the font size of buttons. |
79
+ | `titleFontSize` | `string` | Configure the font size of the title. |
80
+ | `contentFontSize` | `string` | Configure the font size of the main content. |
81
+ | `buttonsAlignment` | `'start' \| 'center' \| 'end' \| 'space-between' \| 'space-around'` | Change the alignment of buttons. |
82
+ | `stepCountAlignment` | `'start' | 'center' | 'end'` | Change the alignment of step count. |
83
+ | `stepCountStartText` | `string` | Text to display at the start of the step count (e.g., 'Step'). |
84
+ | `stepCountMiddleText` | `string` | Text to display in the middle of the step count (e.g., 'of'). |
85
+ | `skipButtonText` | `string` | Text for the skip button. |
86
+ | `prevButtonText` | `string` | Text for the previous button. |
87
+ | `nextButtonText` | `string` | Text for the next button. |
88
+ | `finishButtonText` | `string` | Text for the finish button. |
89
+ | `highlightBorderColor` | `string` | Color of the highlight border around the guided element. |
90
+ | `highlightBorderWidth` | `string` | Width of the highlight border around the guided element. |
91
+ | `defaultPopupWidth` | `string` | Default width of the tour guide popup. |
92
+
93
+ ### `tourGuideData`
94
+ This array of objects defines the content for each step of the tour guide.
95
+
96
+ | Property | Type | Description |
97
+ |------------|-------------------------------------------------------------|-----------------------------------------------------------------------|
98
+ | `title` | `string` | Title of the tour guide step. |
99
+ | `content` | `string` | Main content/description for the tour guide step. |
100
+ | `selector` | `string` (Only for `'advance'` type) | CSS selector for the element to highlight in 'advance' mode. |
101
+ | `position` | `'top' \| 'bottom' \| 'left' \| 'right' \| 'auto'` | Position of the popup relative to the highlighted element. |
102
+ | `shape` | `'' \| 'rounded' \| 'rectangle' \| 'circle'` | Shape of the description popup. |
103
+ | `width` | `string` | Custom width for the popup of the current step. |
104
+
105
+ ## Example Configuration
106
+
107
+ Here's an example of how to configure the Tour Guide component in your component's TypeScript file.
108
+
109
+ ```typescript
110
+ import { Component } from '@angular/core';
111
+ import { TourGuideConfig, TourGuideData } from '@uxpractice/tour-guide';
112
+
113
+ @Component({
114
+ selector: 'app-root',
115
+ templateUrl: './app.component.html',
116
+ })
117
+ export class AppComponent {
118
+ tourGuideConfig: TourGuideConfig = {
119
+ type: 'advance',
120
+ showSkipButton: true,
121
+ buttonsFontSize: '14px',
122
+ titleFontSize: '18px',
123
+ contentFontSize: '14px',
124
+ buttonsAlignment: 'end',
125
+ stepCountAlignment: 'center',
126
+ stepCountStartText: 'Step',
127
+ stepCountMiddleText: 'of',
128
+ skipButtonText: 'Skip Tour',
129
+ prevButtonText: 'Previous',
130
+ nextButtonText: 'Next',
131
+ finishButtonText: 'Finish',
132
+ highlightBorderColor: '#007bff',
133
+ highlightBorderWidth: '3px',
134
+ defaultPopupWidth: '300px'
135
+ };
136
+
137
+ tourGuideData: TourGuideData[] = [
138
+ {
139
+ title: 'Welcome to Our App!',
140
+ content: 'This tour will guide you through the main features.',
141
+ selector: '', // No specific selector for the first step
142
+ position: 'auto',
143
+ shape: 'rounded',
144
+ width: '350px'
145
+ },
146
+ {
147
+ title: 'Navigation Bar',
148
+ content: 'This is where you can navigate to different sections of the application.',
149
+ selector: '#navbar', // Replace with your actual selector
150
+ position: 'bottom',
151
+ shape: 'rectangle',
152
+ width: '300px'
153
+ },
154
+ {
155
+ title: 'User Profile',
156
+ content: 'Click here to view and manage your profile settings.',
157
+ selector: '#user-profile-icon', // Replace with your actual selector
158
+ position: 'left',
159
+ shape: 'circle',
160
+ width: '280px'
161
+ },
162
+ {
163
+ title: 'Main Content Area',
164
+ content: 'All your important data and features are displayed here.',
165
+ selector: '#main-content', // Replace with your actual selector
166
+ position: 'top',
167
+ shape: 'rounded',
168
+ width: '400px'
169
+ },
170
+ {
171
+ title: 'Notifications',
172
+ content: 'Stay updated with the latest notifications.',
173
+ selector: '#notifications-bell', // Replace with your actual selector
174
+ position: 'right',
175
+ shape: 'rectangle',
176
+ width: '250px'
177
+ }
178
+ ];
179
+
180
+ passEvent(event: any) {
181
+ console.log('Tour Guide Event:', event);
182
+ }
183
+ }
184
+ ```
185
+
186
+ ## Contribution
187
+
188
+ Contributions are welcome! Feel free to open issues or pull requests for any enhancements or fixes.
189
+
190
+ ## Acknowledgements
191
+
192
+ Thank you for choosing the Tour Guide component. If you have any feedback or suggestions, please let us know!
@@ -0,0 +1,4 @@
1
+ export * from './lib/ruclib-tour-guide.module';
2
+ export * from './lib/ruclib-tour-guide/ruclib-tour-guide.component';
3
+ export * from './lib/model/tour-guide.model';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9ydWNsaWItdG91ci1ndWlkZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ydWNsaWItdG91ci1ndWlkZS9ydWNsaWItdG91ci1ndWlkZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC90b3VyLWd1aWRlLm1vZGVsJzsiXX0=
@@ -0,0 +1,26 @@
1
+ export const defaultTourGuideConfig = {
2
+ type: "advance",
3
+ showSkipButton: true,
4
+ buttonsFontSize: "14px",
5
+ titleFontSize: '16px',
6
+ contentFontSize: '14px',
7
+ buttonsAlignment: 'end',
8
+ stepCountAlignment: 'start',
9
+ stepCountStartText: 'Step',
10
+ stepCountMiddleText: 'of',
11
+ skipButtonText: 'Skip',
12
+ prevButtonText: 'Back',
13
+ nextButtonText: 'Next',
14
+ finishButtonText: 'Finish',
15
+ highlightBorderColor: '#007bff',
16
+ highlightBorderWidth: '2px',
17
+ defaultPopupWidth: '250px',
18
+ };
19
+ export const DEFAULT_VALUES = {
20
+ arrowRight: 'ArrowRight',
21
+ arrowLeft: 'ArrowLeft',
22
+ escape: 'Escape',
23
+ popup: { width: 300, height: 150, top: 0, left: 0, padding: 10, safeMargin: 64 },
24
+ startTourButtonLabel: 'Start Tour Guide'
25
+ };
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1jb25maWcubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21vZGVsL2RlZmF1bHQtY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFvQjtJQUNuRCxJQUFJLEVBQUUsU0FBUztJQUNmLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGVBQWUsRUFBRSxNQUFNO0lBQ3ZCLGFBQWEsRUFBRSxNQUFNO0lBQ3JCLGVBQWUsRUFBRSxNQUFNO0lBQ3ZCLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsa0JBQWtCLEVBQUUsT0FBTztJQUMzQixrQkFBa0IsRUFBRSxNQUFNO0lBQzFCLG1CQUFtQixFQUFFLElBQUk7SUFDekIsY0FBYyxFQUFFLE1BQU07SUFDdEIsY0FBYyxFQUFFLE1BQU07SUFDdEIsY0FBYyxFQUFFLE1BQU07SUFDdEIsZ0JBQWdCLEVBQUUsUUFBUTtJQUMxQixvQkFBb0IsRUFBRSxTQUFTO0lBQy9CLG9CQUFvQixFQUFFLEtBQUs7SUFDM0IsaUJBQWlCLEVBQUUsT0FBTztDQUM3QixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLFVBQVUsRUFBRSxZQUFZO0lBQ3hCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFDO0lBQzlFLG9CQUFvQixFQUFFLGtCQUFrQjtDQUN6QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG91ckd1aWRlQ29uZmlnIH0gZnJvbSBcIi4vdG91ci1ndWlkZS5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUb3VyR3VpZGVDb25maWc6IFRvdXJHdWlkZUNvbmZpZyA9IHtcclxuICAgIHR5cGU6IFwiYWR2YW5jZVwiLFxyXG4gICAgc2hvd1NraXBCdXR0b246IHRydWUsXHJcbiAgICBidXR0b25zRm9udFNpemU6IFwiMTRweFwiLFxyXG4gICAgdGl0bGVGb250U2l6ZTogJzE2cHgnLFxyXG4gICAgY29udGVudEZvbnRTaXplOiAnMTRweCcsXHJcbiAgICBidXR0b25zQWxpZ25tZW50OiAnZW5kJyxcclxuICAgIHN0ZXBDb3VudEFsaWdubWVudDogJ3N0YXJ0JyxcclxuICAgIHN0ZXBDb3VudFN0YXJ0VGV4dDogJ1N0ZXAnLFxyXG4gICAgc3RlcENvdW50TWlkZGxlVGV4dDogJ29mJyxcclxuICAgIHNraXBCdXR0b25UZXh0OiAnU2tpcCcsXHJcbiAgICBwcmV2QnV0dG9uVGV4dDogJ0JhY2snLFxyXG4gICAgbmV4dEJ1dHRvblRleHQ6ICdOZXh0JyxcclxuICAgIGZpbmlzaEJ1dHRvblRleHQ6ICdGaW5pc2gnLFxyXG4gICAgaGlnaGxpZ2h0Qm9yZGVyQ29sb3I6ICcjMDA3YmZmJyxcclxuICAgIGhpZ2hsaWdodEJvcmRlcldpZHRoOiAnMnB4JyxcclxuICAgIGRlZmF1bHRQb3B1cFdpZHRoOiAnMjUwcHgnLFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgREVGQVVMVF9WQUxVRVMgPSB7XHJcbiAgICBhcnJvd1JpZ2h0OiAnQXJyb3dSaWdodCcsXHJcbiAgICBhcnJvd0xlZnQ6ICdBcnJvd0xlZnQnLFxyXG4gICAgZXNjYXBlOiAnRXNjYXBlJyxcclxuICAgIHBvcHVwOiB7d2lkdGg6IDMwMCwgaGVpZ2h0OiAxNTAsIHRvcDogMCwgbGVmdDogMCwgcGFkZGluZzogMTAsIHNhZmVNYXJnaW46IDY0fSxcclxuICAgIHN0YXJ0VG91ckJ1dHRvbkxhYmVsOiAnU3RhcnQgVG91ciBHdWlkZSdcclxuICB9Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91ci1ndWlkZS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbW9kZWwvdG91ci1ndWlkZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBUb3VyR3VpZGVDb25maWcge1xyXG4gIHR5cGU6ICdzaW1wbGUnIHwgJ2FkdmFuY2UnO1xyXG4gIHNob3dTa2lwQnV0dG9uPzogYm9vbGVhbjtcclxuICBidXR0b25zRm9udFNpemU/OiBzdHJpbmc7XHJcbiAgdGl0bGVGb250U2l6ZT86IHN0cmluZztcclxuICBjb250ZW50Rm9udFNpemU/OiBzdHJpbmc7XHJcbiAgYnV0dG9uc0FsaWdubWVudD86ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnIHwgJ3NwYWNlLWJldHdlZW4nIHwgJ3NwYWNlLWFyb3VuZCcgfCAnc3BhY2UtZXZlbmx5JztcclxuICBzdGVwQ291bnRBbGlnbm1lbnQ/OiAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcclxuICBzdGVwQ291bnRTdGFydFRleHQ/OiBzdHJpbmc7XHJcbiAgc3RlcENvdW50TWlkZGxlVGV4dD86IHN0cmluZztcclxuICBza2lwQnV0dG9uVGV4dD86IHN0cmluZztcclxuICBwcmV2QnV0dG9uVGV4dD86IHN0cmluZztcclxuICBuZXh0QnV0dG9uVGV4dD86IHN0cmluZztcclxuICBmaW5pc2hCdXR0b25UZXh0Pzogc3RyaW5nO1xyXG4gIGhpZ2hsaWdodEJvcmRlckNvbG9yPzogc3RyaW5nO1xyXG4gIGhpZ2hsaWdodEJvcmRlcldpZHRoPzogc3RyaW5nO1xyXG4gIGRlZmF1bHRQb3B1cFdpZHRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJHdWlkZURhdGEge1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGNvbnRlbnQ6IHN0cmluZztcclxuICBzZWxlY3Rvcj86IHN0cmluZzsgLy8gT25seSBmb3IgJ2FkdmFuY2UnIHR5cGVcclxuICBwb3NpdGlvbj86ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2F1dG8nO1xyXG4gIHNoYXBlPzogJycgfCAncm91bmRlZCcgfCAncmVjdGFuZ2xlJyB8ICdjaXJjbGUnO1xyXG4gIHdpZHRoPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==