Git Product home page Git Product logo

ng-joyride's Introduction

ng-joyride

An angular directive that provides the "joyride" functionality for introducing your websites.Similar to Jquery Joyride but a lot better.

ng-joyride

Demo

See the demo page for a demo and the overview of the features.

Installation

Bower

You can install this package through Bower by using the following command :

bower install ng-joyride --save

Add dependencies to your project.

<link href="/bower_components/bootstrap/dist/css/bootstrap.css" rel="stylesheet">
<link href="/bower_components/ng-joyride/ng-joyride.css" rel="stylesheet">


<script src="/bower_components/jquery/jquery.js"></script>
<script src="/bower_components/angular/angular.js"></script>
<script src="/bower_components/bootstrap/dist/js/bootstrap.js"></script>
<script src="/bower_components/ng-joyride/ng-joyride.js"></script>

Add it to your module.

angular.module('myModule', [
    'ngJoyRide'
])

There is one directive called ng-joy-ride which can be used as an attribute.

<div ng-joy-ride="startJoyRide" config="config" on-finish="onFinish()"  on-skip="onFinish()"></div>

Starting the Joyride

ng-joy-ride

You can invoke the joyride from anywhere by setting (in this case) startJoyRide to true.The scope variable that you bind to ng-joy-ride is the one that will control the start of the joyride. Once the joyride is complete , the scope variable gets set to false.So on completeion of the joyride startJoyRide will be set to false

Stopping the Joyride

The joyride stops when, the user presses "skip", "finish" or when you programamtically set startJoyRide to false.Setting startJoyRide to false when the joyride is on , will have the same effect as skip.


Joyride Events

You can bind to certain events in order to control the behaviour of the tour, this can be useful when you want a more specific level of interaction, where the tour continues by a user action instead of hitting Next. The following events are currently available:

  • joyride:prev: Go to the previous tour step
  • joyride:next: Go to the next tour step
  • joyride:exit: Skip & exit the tour

Example

You'll have to use something like jQuery to trigger the events on the element, for example, if you've defined the following tour:

<div id="serverTour" ng-joy-ride="startServerTour" config="serverTourConfig"></div>

You can call the events on it with the following way:

$("#serverTour").trigger("joyride:next")

Configuring the joyride

config

This is the attribute for setting the required steps.In the above example scope.config will have the list of joyride-element that you can pass through the config.
Example

$scope.config = [
        {
                type: "title",
                heading: "Welcome to the NG-Joyride demo",
                text: '<div class="row"><div id="title-text" class="col-md-12"><span class="main-text">Welcome to <strong>Ng Joyride Demo</strong></span><br><span>( This demo will walk you through the features of Ng-Joyride. )</span><br/><br/><span class="small"><em>This can have custom html too !!!</em></span></div></div>'

            },{
                type: "element",
                selector: "#finish",
                heading: "Custom Title",
                text: "The demo finishes.Head over to github to learn more",
                placement: "top",
                scroll: true
            }

        ];

Each element of the array should be a proper joyride element.There are 4 types of joyride-element.

  • title - The `title joyride-element' opens a generic styled box shows showing information.You can have custom HTML passed to it as you see above
  • element - Boostrap popvers over elements that you pass through the selector.Any jqyery selector will work.
  • function - A function call . The function call will be done.Through this you can render more DOM or open a modal etc
  • location_change - This will change the location using $location.path incase the joyride needs to be across different pages of your website.

Elaborate details of each of the Joyride Elements are at the end


Hooks in the joyride

on-finish,on-skip

You can pass functions using the on-finish and on-skip attributes.The function passed to on-finish will be called on finish of the joyride and the on-skip function will be called if the user skips from the joyride.


Demo and example usage.

You see this repo sample repo for the usage. You can download it and run it through a web browser.You can check main.js to see how I have passed the config using $scope.config


Joyride-Element Descriptions

      Type : Title

$scope.config = [
        {
                type: "title",
                heading: "Welcome to the NG-Joyride demo",
                finishBtnText: 'Finish',
                prevBtnText: 'Previous',
                skipBtnText: 'Skip',
                nextBtnText: 'Next',
                text: '<div class="row"><div id="title-text" class="col-md-12"><span class="main-text">Welcome to <strong>Ng Joyride Demo</strong></span><br><span>( This demo will walk you through the features of Ng-Joyride. )</span><br/><br/><span class="small"><em>This can have custom html too !!!</em></span></div></div>'
                 curtainClass : 'myCustomClass' //this is optional.
            }
        ];

The title element generates a box that looks like below.

ng-joyride

Properties

  • heading : Custom heading that you want the title box to have.
  • text : Text or HTML can be passed
  • titleTemplate ( Optional ) : You can pass a templateURL that can be used in case you don't want the default template.This will be a url that can be loaded either from the $templateCache or through AJAX if its not present in the cache.
  • curtainClass ( Optional ) : You can use this to pass your custom class to the joyride background.This is useful where you want the background to change in each step.
   Custom titleTemplate. The custom title template should have the following placeholder.
  • Heading Placeholder : {{heading}} will be replaced by the heading you pass.
  • Content Placeholder : <div ng-bind-html="content"></div> should be present in your template so that it can be populated by the template.
  • Skip Joyride Placeholder : <a class="skipBtn"></a> should be present as the class selector skipBtn is used to detect whether the user skipped the joyride.
  • Previous Button Placeholder : <a class="prevBtn"></a> should be present as the class selector prevBtn is used to detect whether the user pressed on previous step.
  • Next Button Placeholder : <a class="nextBtn"></a> should be present as the class selector nextBtn is used to detect whether the user pressed on next step.

The default template for 'title' is .

"<div id=\"ng-joyride-title-tplv1\"><div class=\"ng-joyride sharp-borders intro-banner\" style=\"\"><div class=\"popover-inner\"><h3 class=\"popover-title sharp-borders\">{{heading}}</h3><div class=\"popover-content container-fluid\"><div ng-bind-html=\"content\"></div><hr><div class=\"row\"><div class=\"col-md-4 skip-class\"><a class=\"skipBtn pull-left\" type=\"button\"><i class=\"glyphicon glyphicon-ban-circle\"></i>&nbsp; Skip</a></div><div class=\"col-md-8\"><div class=\"pull-right\"><button disabled=\"disabled\" class=\"prevBtn btn\" type=\"button\"><i class=\"glyphicon glyphicon-chevron-left\"></i>&nbsp;Previous</button> <button id=\"nextTitleBtn\" class=\"nextBtn btn btn-primary\" type=\"button\">Next&nbsp;<i class=\"glyphicon glyphicon-chevron-right\"></i></button></div></div></div></div></div></div></div>"

      Type : Element

$scope.config = [
        {
                type: "element",
                selector: "#home",
                heading: "Title can have <em>HTML</em>",
                text: "You are in the <em>home page.</em>",
                placement: "bottom",
                scroll: true,
                curtainClass : 'myCustomClass' //this is optional.
            }
        ];

The element joyride-element generates a box that looks like below.

ng-joyride

Properties

  • type : Should be a string element
  • selector : Any jquery selector can be passed here.
  • heading : This is the heading.Can have html also.
  • text : Text or HTML can be passed
  • placement ( Optional ) : Where the popover will be placed.Similar to bootstrap popover placements. The possible values are "top|bottom|right|left".
  • scroll : Whether you want, the page to be scrolled to the particular element.
  • advanceOn (Optional): An action on the page which will move the Joyride to the next step. It must consist of element and event. Example: {element: '#foo', event: 'click'}
  • curtainClass ( Optional ) : You can use this to pass your custom class to the joyride background.This is useful where you want the background to change in each step.
  • attachToBody ( Optional ) : You can use this to attach the popover to the body instead of the element.In some cases you might run into problems with css stacking context.Normally you wouldn't need to use this
  • shouldNotStopEvent ( Optional ) : This should be set to true if you want event generated on the selected element to propagate. This should be rarely needed as you normally would not want user to click on a button and trigger actions out of joyride.If you are looking to move the joyride forward when user does an action other than click 'next', use advanceOn.
  • elementTemplate ( Optional ) : This is a function which receives two arguments (content,isEnd) . content -> The content to display, isEnd -> Is true if its the last step. Return value of the function is used a template.This function controls the look and feel of the popover, that part which is inside the popover-content.

Can also be used as a delegate which accepts content to be displayed and if it is reached the end of the tour. This will enable you to customize the look and feel of element type just as you can with title type. An example of this is shown below:

function _generateTextForNext(isEnd){
      if (isEnd) {
        return 'Finish';
      } else {
        return 'Next';
      }
    }

    function elementTourTemplate(content, isEnd){
      return '<div class=\"row\"><div id=\"pop-over-text\" class=\"col-md-12\">' + content + '</div></div><hr><div class=\"row\"><div class=\"col-md-4 center\"><a class=\"skipBtn pull-left\" type=\"button\">Skip</a></div><div class=\"col-md-8\"><div class=\"pull-right\"><button id=\"prevBtn\" class=\"prevBtn btn btn-xs\" type=\"button\">Previous</button> <button id=\"nextBtn\" class=\"nextBtn btn btn-xs btn-primary\" type=\"button\">' + _generateTextForNext(isEnd) + '</button></div></div></div>';
    }
    
$scope.config = [
        {
                type: "element",
                selector: "#home",
                heading: "Title can have <em>HTML</em>",
                text: "You are in the <em>home page.</em>",
                placement: "bottom",
                scroll: true,
                elementTemplate: elementTourTemplate
            }
        ];

The string returned by "elementTemplate" should have the following placeholders.

  • Previous Button : a button of id "prevBtn" should be present for previous the user to go back.
  • Next Button : a button of id "nextBtn" should be present for previous the user to go back.
  • Skip Button : a button of id "skipBtn" should be present for previous the user to go back.
   Each joyride-element can have its own elementTemplate function .The below parameter controls

the look and feel of the popover as a whole while the above part controls the look and feel of the "popover-content" section

<div ng-joy-ride="startJoyRide" config="config" template-uri="template.html"></div>

The custom template-uri (This is different from the elementTemplate config )can be passed as an attribute value to template-uri as shown above.template.html will be loaded asynchronously in the above case.

The custom element template (supplied through template-uri) should have the following placeholders.

  • Heading Placeholder : {{heading}} will be replaced by the heading you pass.
  • popover-title : <h3 class="popover-title"></h3>.An element with class popover-title should be present for bootstrap to identify the popover template.
  • popover-content : <div class="popover-content"></div>.An element with class popover-content should be present for bootstrap to identify the popover content template.

The default template for 'element' is .

"<div class=\"popover ng-joyride sharp-borders\"> <div class=\"arrow\"></div>   <h3 class=\"popover-title sharp-borders\"></h3> <div class=\"popover-content container-fluid\"></div></div>"

The template supplied by template-uri will be same for all the popovers which will be structurally similar.Fine grained control and distinction can be achieved by the "elementTemplate" which can be different for each step


      Type : location_change

This is required where your intro content spans over multiple pages and you want joyride to be across multiple pages.

$scope.config = [
        {
                type: "location_change",
                path: "/demo"
            }
        ];

Immediately after changing the location, the next joyride-element is called.

Properties

  • type : Should be a string location_change
  • path : The path to navigate to should be passed here.The path needs to be a part of the same app.

      Type : function

This is required where your need to run some function for your dom element to get generated.

$scope.config = [
        {
                type: "function",
                fn: openModalForDemo //(can also be a string, which will be evaluated on the scope)
            }
        ];

Immediately after calling the function, the next joyride-element is called.

The function that you will be passing should expect a boolean argument.

For eg : true being passed to the function, will signify creation of dom nodes.Like opening of modal. false being passed the function, will signify removal of these nodes, like closing the modal.

This is important, for the 'previous' button to work .

Properties

  • type : Should be a string function
  • fn : pass the actual function reference.Or you can pass a function name as string. If you pass a string then it will be resolved on the scope .

License

MIT

Free Software, Hell Yeah!

ng-joyride's People

Contributors

abhikmitra avatar adamrharrison avatar beardedlinuxgeek avatar bryant1410 avatar dejanberic avatar hazarapet avatar hypercubed avatar levisaya avatar mattberther avatar mnaser avatar senthil090 avatar steve-tapley avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ng-joyride's Issues

Link

  1. Open a modal window.
  2. Start the tour
  3. Get to the "element" step that points to some element within the modal.
  4. Close the tour

Links (href) within the modal do not work (ng-click works fine). I'm not sure whether this is the only way to reproduce the problem.

Tour panel width

Tour panels width is sometimes too narrow when attached to narrow elements (i.e. button). Also, even when elements tour is attached to are not narrow, when there is a lot of text, tour panels tend to be too narrow and too height. Can you control the width depending on the amount of text in them or add bootstrap way of defining width (1-12 columns)?

tooltip issue

after performing tour, tooltip is not coming. i need to refresh the page then it shows tool tip

Heading and overlay issue

hi,

i am using ng-joyride for my web application
i am facing two issue:

  1. the "heading" option is being overridden by the title of the div.
  2. I tried "attachtoBody" but still overlay is not coming.

Curtain options

Any chance of making the existence of the backdrop(curtain) a option on each step of the tour?

Move to next step programmatically

This is a feature request rather than an issue.

Use case:

  1. Element type step points to a search input field.
  2. User enters search query and hits enter.
  3. Joyride goes to next step automatically.

Thank you for the awesome plug-in!

boostrap.js dependency ?

Hi

I'm trying to integrate your module in my app but I get an error :
TypeError: undefined is not a function
at Object._generatePopover (http://127.0.0.1:9002/vendor/ng-joyride/ng-joyride.js:105:23)

On your demo I saw that you're loading bootstrap.js (I don't), but this should not be needed because in parallel you're loading angular-bootstrap module (ui-bootstrap-tpls.js) that already handle himself (the angular-way) all the JS needed to run bootstrap JS components.

Or am I missing something ?

By the way, thanks for this module that seems great ;)

NPM Package

Forgive me but I am removing bower dependencies and I needed a version of this package provided by NPM as we are removing bower from our build system.

https://www.npmjs.com/package/ng-joyride

Please let me know your NPM username and I'll make you an owner of the npm package and remove myself from it ASAP. If for whatever reason you need the package to be unpublished, let me know and I will immediately.

Curtain is shown, empty popup

Hi Abhik,
trying to find the root cause for it, page loads curtain and title but the popup is empty.
No JS errors in console.

<div id="ng-curtain" class="ng-curtain-class" style="display: block;"></div>
<div class="ng-joyride-title" style=""></div>

Event not working on completion of joyride

Hello,
I am using ngjoyride in my ASP.NET application. I configured joyride and it works nicely. But the problem is that when joyride is completed then the event on page is not working.

ng-joyride can't be minified

Running ngAnnotate (https://github.com/olov/ng-annotate) to minify my code and use ng-joyride, I got:

Running "ngAnnotate:myApp" (ngAnnotate) task
Generating "client/build/app.annotate.js" from "client/build/app.annotate.js"...ERROR
>> error: couldn't process source due to parse error
>> Line 17217: Strict mode function may not have duplicate parameter names
Warning: Task "ngAnnotate:myApp" failed. Use --force to continue.

This means there is issue in the functions in strict mode.

Can't add ng-disabled directive

Hi,
I need to add in the "nextBtn" the ng-disabled directive because that button need to stay disabled until a condition is true. Is it possible? The same thing is for ng-if or ng-class. I can't use them in the template and i don't know why.. This is my situation:

function elementTourTemplate(content, isEnd){
            return '<div class=\"row custom-color\">' +
                '<div id=\"pop-over-text\" class=\"col-md-12\">' +
                content +
                '</div>' +
                '</div>' +
                '<hr>' +
                + $scope.rFunction() +
                '<div class=\"row\">' +
                '<div class=\"col-md-8 qt-tmpl-footer-modal\">' +
                '<a class=\"skipBtn pull-left qt-margin-min\" type=\"button\">Skip</a>' +
                '<button id=\"prevBtn\" class=\"prevBtn uk-button uk-button-danger qt-margin-min\" type=\"button\">' +
                'Back</button>' +
                '<button ng-disabled=\"$scope.rFunction() == false\" id=\"nextBtn\" class=\"nextBtn uk-button uk-button-success\" type=\"button\">' +
                'Next&nbsp;<i class=\"glyphicon glyphicon-chevron-right\">'+
                '</button>'+
                '</div>' +
                '</div>'
        }

 $scope.config=[
            {  
                type: "element",
                selector: "#left-tree-folders",
                heading: "Test one",
                text: "Click here to go to the next step",
                placement: "right",
                scroll: true,
                elementTemplate: elementTourTemplate

            }, ....

Well, as you can see i've got a custom template in which i can show the value i need: $scope.rFunction()

When i try to stamp this function that returns a boolean value outside any element of the template it's working. But if i try to put it on a directive like ng-disabled or ng-if not. Any idea? Thanks

"Don't show again" button

This is either a feature request or a request for assistance.
I'm trying to add a "Don't show again" button to individual tooltips that would prevent them from being shown in the future. I tried to accomplish this by by adding an <input type="checkbox" name="tour_tooltip_1" id="tour_tooltip_1" ng-model="tooltip_1_dismissed"> to the text of each tooltip, and the checkbox renders correctly, but doesn't have access to any scopes, including $rootScope. The model doesn't get bound to anything, I can't output any values with (( myValue }} inside the tooltip. The tooltip content seems completely outside of my Angular app's scope.
Is there any way I can accomplish what I need done?

Thanks!

background color of non-static elements

Why change the background color of only static elements? I have some non-static elements that remain 'hidden' behind the backdrop because their color isn't' being changed.

curtainClass being overridden by id

Just started using ng-joyride, and it is very nice. However, I'm running into a problem with using the curtainClass property on an element. If I create a CSS class that should override some of the default properties (e.g., override the opacity or color of the curtain) it won't work because the defaults are set on a CSS id (#ng-curtain), and CSS gives precedence to ids over classes.

So trying to override any of the default properties with the curtainClass will never work. Am I missing something?

Post minification ng joyride not able to load

Error: [$injector:modulerr] Failed to instantiate module ngJoyRide due to:
Error: [$injector:nomod] Module 'ngJoyRide' is not available! You either misspelled the module name or forgot to load it.

The same code works fine when I am running it through development (non-minified) version

Support cookies

It would be nice to see support for cookies to only display the joyride walkthrough the first time like in jQuery Joyride.

  'cookieMonster': true,           // true/false for whether cookies are used
  'cookieName': 'JoyRide',         // choose your own cookie name
  'cookieDomain': false,           // set to false or yoursite.com

From http://zurb.com/playground/jquery-joyride-feature-tour-plugin

decouple highlighted element and pointed-at element

Feature suggestion:
At times I'd like to highlight a parent element while I point the popup at one of its children.

This would be particularly helpful for pointing to an element contained in a stacking context. You could highlight the stacking context's root element and point to a descendant element within it.

Currently, you can only point at the element you highlight and if that element is part of a stacking context, it will usually remain behind the curtain.

Skip elements not present?

Hi

Is it somehow possible to skip non-present elements and jump to the next element that's present?

I'm trying to setup ng-joyride on a page where certain users don't have access to a specific element on the site. It's hidden from view (yes I know - not the most elegant solution).

When ng-joyride comes to the missing element only the curtain in shown.

AdvanceOn event watchers remain after Skip

When the "Skip" button is clicked on an element popover that has an advanceOn option set for a click event, the event click remains. So, after the curtain has disappeared and the tour has ended, if the user clicks the element registered with the advanceOn, the tour resumes without the curtain.

Is there a specific call necessary to clear all tour related event watchers?
Thanks

Cannot read property 'type' of undefined

I have already using bootstrap popover in other part of the system, and initially, when I launch joyride on the first joyride item, I have 'previous' button. So when clicking on it I got:

Cannot read property 'type' of undefined at: if (previousStep.type === "location_change") {

This is the actual function:

function goToPrev() {
                    steps[currentStepCount].cleanUp();

                    var previousStep = steps[currentStepCount - 1];
                    if (previousStep.type === "location_change") {

I'm using Angular UI router also.

Issues in the application links once joyride tour is complete

Hi Abhikmitra,

ngjoyride component is simply awesome. was able to playaround with it and use it as per my need. Currently I am facing an issue. I am highlighting a custom popover / dialog window which has some links. Those links are not accessible even after the joyride tour is over. Any clues? Your help is much appreciated. Only if i forcefully refresh the application the links are working else not.

Backdrop does not disappear

Good library - only one bug is causing me to not use it (yet)!

Steps to reproduce:
Go to http://abhikmitra.github.io/ng-joyride-demo/#/
Click on Next until you are on "Home" link on nav - Instead of clicking Next, just click on "Home" (original link) - you will see that the tour disappears but the black backdrop doesn't and basically renders screen un-clickable. Can it be fixed? i.e detect click on the tour element and call endJoyRide() ?

Dynamic config loading

Is there a way to load config data dynamically? I want to send JSON from the server and refresh it depending on the screen user is located on.

Getting grey background for html in case data comes from backend

Uploading greybackground.png…
Hi,
I am using ng-joyride for my web application,it have html content which comes from backend ,I am facing issue like for static content it is fine but for dynamic content I am getting grey background which doesn't display html content only joyride modal gets displayed.

Functions

When JSON comes from the server all values (except numbers and booleans) need to be enclosed in quotes. This prevents me from using functions. So, I cannot have the following:
{type: "function", fn: openModalDemo}.
It needs to be something like (difference is in quotes):
{type: "function", fn: "openModalDemo"}.

Any other syntax would do as long as it is a valid JSON.

Checkboxes are unresponsive

Hi, there!
Thanks for ng-joyride! I'm loving using it, but I'm afraid I have found another issue for which I would be grateful for any help.

Issue: Checkboxes during a tour fail to register a value change regardless of the click actually being detected (the checkbox flickers a darker grey).

Here's a plunker that reproduces the issue:
http://plnkr.co/8xsZvrhEAKaIJoJVphCj

Many thanks!

Remove Skip option in title type

I would like to be able to remove the skip option from all the steps of the tour. I know I could remove it from the default template in the code, but at the next update I will have to manually remove it again.

Is there the posibility to add a show/hide option for skip?

Cannot read property 'ownerDocument' of undefined on Element types

This line of code:
$fkEl.popover('show');

Throws the exception:

angular.js:11594 TypeError: Cannot read property 'ownerDocument' of undefined (full stack at the end of this comment).

With a breakpoint on $fkEl.popover('show');, I can see that the selector has found my element, but for some reason is throwing this exception. What am I doing wrong?

The stack trace is as follows:

angular.js:11594 TypeError: Cannot read property 'ownerDocument' of undefined
at Function.gb.contains (http://localhost/bower_components/jquery/dist/jquery.min.js:2:12147)
at Function.n.extend.buildFragment (http://localhost/bower_components/jquery/dist/jquery.min.js:3:14212)
at n.fn.extend.domManip (http://localhost/bower_components/jquery/dist/jquery.min.js:3:16801)
at n.fn.extend.after (http://localhost/bower_components/jquery/dist/jquery.min.js:3:15338)
at n.each.n.fn.(anonymous function) as insertAfter
at c.show (http://localhost/bower_components/bootstrap/dist/js/bootstrap.min.js:6:22544)
at HTMLSpanElement. (http://localhost/bower_components/bootstrap/dist/js/bootstrap.min.js:6:27388)
at Function.n.extend.each (http://localhost/bower_components/jquery/dist/jquery.min.js:2:2882)
at n.fn.n.each (http://localhost/bower_components/jquery/dist/jquery.min.js:2:847)
at b as popover

bootstrap version in bower.json

Hi,
I was wondering if there is a reason your bower.json file specifies bootstrap version 3.2.0? I'm having issues because ng-joyride is requiring 3.2.0 (and I have other dependencies using a later version) - is it possible to change the bower.json to something like:

"bootstrap": "~3.2.0"

Thanks,
Steve

unbind 'joyride:' events

Hi,
I rely on the 'joyride:next' event in my code, and i found out that you didn't unbind the event when the tour is closed.
So every time I reopen the tour, it will always get stuck when i call the event since its calling it twice.

Programatically end Joyride

Should setting $scope.startJoyRide to false clear open panels from the screen?

I need a way to end the joyride mid run.

The jQuery plugin allows you to send .joyride('end') to finish programatically

I expected setting the start attribute to false to have the same effect but this does not seem to trigger the onFinish method, or remove popovers from the screen. Am I missing something? or does ng-joyride not have this functionality?

Thanks

The tour was frozen in Firefox

Hi folks,

When i use firefox, the tour didn't work on page switch. Joyride didn't redirect the path assigned.
Can I ask if anyone has encountered this?

Thanks,
Josie

Heading and overlay issue

hi,

i am using ng-joyride for my web application
i am facing two issue:

  1. the "heading" option is being overridden by the title of the div.
  2. I tried "attachtoBody" but still overlay is not coming.

request to make joyride less sensitive to bad config

Hi,
A couple of times I've set up joyride with misconfigured config (eg a bad/mistyped element name). When the user happens to get to the step, joyride just stops working - the curtain is down, but the user has no way of recovering out of the joyride (unless they F5)

You can see this in the plunkr: http://plnkr.co/edit/Yn7cqL8IpR1VoL1ky65R

I could see this happening on a largish project where element ids change, and the tour is mistakenly not updated.

Can I make a suggestion that for misconfigured configs, that ng-joyride either end the tour, or skip the step?

Thanks,
Steve

Two title steps in a row causes failure

If two title steps occur in a row the second step closes immediately leaving the user with the curtain and no other modals to click through. I've confirmed this in the demo so I know it's not an issue my environment or project. Any ideas?

Dynamically trigger joyride

Is it possible to dynamically trigger a joyride? We have some triggers that happen based on certain events so I'm dynamically setting startJoyRide and joyRideConfig but it doesn't seem to do anything.

z-index can't be relied on to bring elements to front

If your HTML places elements into stacking contexts, and you want to highlight an element whose parent has a z-index, it seems to be impossible for the joyride elements to be brought to front. See this article for a description of why:

http://philipwalton.com/articles/what-no-one-told-you-about-z-index/

The effect is that your chosen element, and the joyride popover, are behind the curtain and you cannot interact with them.

This is not a "bug" in ng-joyride, as such, but more just the way z-index works. It does prevent me from using joyride though, as my stacking context needs to be the way it is.

An alternative would be to avoid bringing the target element to the front and instead just use its bounding rectangle to create an SVG shape with a hole in it for the curtain and then put the joyride elements above that. I may take a stab at that in the new year if nobody else has looked at it then.

You could also add a margin to the bounding rectangle (make it bigger to show some context) or add rounded corners, or even use a circle or ellipse as the cutout shape.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.