kamrify commited on
Commit
c5e62d3
·
1 Parent(s): 492d0ff

Document the asyncronous usage

Browse files
Files changed (2) hide show
  1. index.html +4 -0
  2. readme.md +57 -14
index.html CHANGED
@@ -324,6 +324,10 @@ driver.hasHighlightedElement(); // Checks if there is any highlighted element
324
  driver.hasNextStep(); // Checks if there is next step to move to
325
  driver.hasPreviousStep(); // Checks if there is previous step to move to
326
 
 
 
 
 
327
  // Gets the currently highlighted element on screen
328
  const activeElement = driver.getHighlightedElement();
329
  const lastActiveElement = driver.getLastHighlightedElement();
 
324
  driver.hasNextStep(); // Checks if there is next step to move to
325
  driver.hasPreviousStep(); // Checks if there is previous step to move to
326
 
327
+ // Prevents the current move. Useful in `onNext` or `onPrevious` if you want to
328
+ // perform some asynchronous task and manually move to next step
329
+ driver.preventMove();
330
+
331
  // Gets the currently highlighted element on screen
332
  const activeElement = driver.getHighlightedElement();
333
  const lastActiveElement = driver.getLastHighlightedElement();
readme.md CHANGED
@@ -148,6 +148,57 @@ You can also hide the buttons and control the introductions programmatically by
148
 
149
  ![](./demo/images/split.png)
150
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  ## API
152
 
153
  Driver comes with several options that you can manipulate to make Driver behave as you like
@@ -175,8 +226,8 @@ const driver = new Driver({
175
  onHighlighted: (Element) => {}, // Called when element is fully highlighted
176
  onDeselected: (Element) => {}, // Called when element has been deselected
177
  onReset: (Element) => {}, // Called when overlay is about to be cleared
178
- onNext: () => {}, // Called when moving to next step on any step
179
- onPrevious: () => {}, // Called when moving to next step on any step
180
  });
181
  ```
182
  Note that all the button options that you provide in the driver definition can be overridden for a specific step by giving them in the step definition
@@ -242,6 +293,10 @@ driver.movePrevious(); // Moves to previous step in the steps list
242
  driver.hasNextStep(); // Checks if there is next step to move to
243
  driver.hasPreviousStep(); // Checks if there is previous step to move to
244
 
 
 
 
 
245
  // Highlights the element using query selector or the step definition
246
  driver.highlight(string|stepDefinition);
247
 
@@ -276,18 +331,6 @@ activeElement.getNode(); // Gets the DOM Element behind this element
276
 
277
  ![](./demo/images/split.png)
278
 
279
- ## Todo
280
-
281
- - [X] Single element highlighting
282
- - [X] Popovers on the highlighted elements
283
- - [X] Add smooth transition on changing highlighted elements
284
- - [X] Multi-step Journey Definitions
285
- - [X] Make it controllable by keyboard
286
- - [X] Bring highlighted element to viewport
287
- - [X] Add type definitions
288
- - [ ] Create wrappers for Angular, Vue and React
289
- - [ ] Write tests
290
-
291
  ## Contributions
292
 
293
  Feel free to submit pull requests, create issues or spread the word.
 
148
 
149
  ![](./demo/images/split.png)
150
 
151
+ ### Asynchronous Actions – [Demo](http://kamranahmed.info/driver)
152
+
153
+ During the feature introductions, to delay the move to next step, you may handle that in `onNext` or `onPrevious` callbacks
154
+
155
+ ```javascript
156
+ const driver = new Driver();
157
+
158
+ // Define the steps for introduction
159
+ driver.defineSteps([
160
+ {
161
+ element: '#first-element-introduction',
162
+ popover: {
163
+ title: 'Title on Popover',
164
+ description: 'Body of the popover',
165
+ position: 'left'
166
+ }
167
+ },
168
+ {
169
+ element: '#second-element-introduction',
170
+ popover: {
171
+ title: 'Title on Popover',
172
+ description: 'Body of the popover',
173
+ position: 'top'
174
+ },
175
+ onNext: () => {
176
+ // Do not move to the next step yet
177
+ driver.preventMove();
178
+ // Perform some action and manually call `moveNext`
179
+ someAction()
180
+ .then(() => {
181
+ driver.moveNext();
182
+ });
183
+ }
184
+ },
185
+ {
186
+ element: '#third-element-introduction',
187
+ popover: {
188
+ title: 'Title on Popover',
189
+ description: 'Body of the popover',
190
+ position: 'right'
191
+ }
192
+ },
193
+ ]);
194
+
195
+ // Start the introduction
196
+ driver.start();
197
+ ```
198
+ You can also hide the buttons and control the introductions programmatically by using the API methods listed below.
199
+
200
+ ![](./demo/images/split.png)
201
+
202
  ## API
203
 
204
  Driver comes with several options that you can manipulate to make Driver behave as you like
 
226
  onHighlighted: (Element) => {}, // Called when element is fully highlighted
227
  onDeselected: (Element) => {}, // Called when element has been deselected
228
  onReset: (Element) => {}, // Called when overlay is about to be cleared
229
+ onNext: (Element) => {}, // Called when moving to next step on any step
230
+ onPrevious: (Element) => {}, // Called when moving to next step on any step
231
  });
232
  ```
233
  Note that all the button options that you provide in the driver definition can be overridden for a specific step by giving them in the step definition
 
293
  driver.hasNextStep(); // Checks if there is next step to move to
294
  driver.hasPreviousStep(); // Checks if there is previous step to move to
295
 
296
+ // Prevents the current move. Useful in `onNext` or `onPrevious` if you want to
297
+ // perform some asynchronous task and manually move to next step
298
+ driver.preventMove();
299
+
300
  // Highlights the element using query selector or the step definition
301
  driver.highlight(string|stepDefinition);
302
 
 
331
 
332
  ![](./demo/images/split.png)
333
 
 
 
 
 
 
 
 
 
 
 
 
 
334
  ## Contributions
335
 
336
  Feel free to submit pull requests, create issues or spread the word.