diff --git a/README.md b/README.md index c8d0b04..4e5d077 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,7 @@ You can use the following functions on `StepsService.steps()`: - **finish()**: Triggers the `on-finish` callback. - **goTo(** *number* | *name* **)**: Go to a specific step. Argument can be either a number (zero-based index) or the **name** of a step. +- **selectedIndex()**: Get current step index. You can get the number of steps from `StepsService.steps().steps.length`. diff --git a/bower.json b/bower.json index d6b99b0..8af27f4 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "angular-steps", - "version": "1.0.0", + "version": "1.0.1", "main": "dist/angular-steps.js", "description": "Split your UI into (wizard-like) steps in AngularJS.", "dependencies": { diff --git a/dist/angular-steps.js b/dist/angular-steps.js index 5ec9e8a..58e251f 100644 --- a/dist/angular-steps.js +++ b/dist/angular-steps.js @@ -1,6 +1,6 @@ /** * angular-steps - Split your UI into (wizard-like) steps in AngularJS. - * @version v1.0.0 + * @version v1.0.1 * @link https://github.com/omichelsen/angular-steps * @author Ole Michelsen * @license MIT @@ -135,6 +135,10 @@ this.cancel = function () { $scope.goTo($scope.steps[0]); }; + + this.selectedIndex = function () { + return $scope.steps.indexOf($scope.selectedStep); + }; }] }; }); diff --git a/dist/angular-steps.min.js b/dist/angular-steps.min.js index 78fc9be..4a08f92 100644 --- a/dist/angular-steps.min.js +++ b/dist/angular-steps.min.js @@ -1,8 +1,8 @@ /** * angular-steps - Split your UI into (wizard-like) steps in AngularJS. - * @version v1.0.0 + * @version v1.0.1 * @link https://github.com/omichelsen/angular-steps * @author Ole Michelsen * @license MIT */ -!function(){function e(e){angular.module("angular-steps").directive(e,function(){return{restrict:"A",replace:!1,require:"^steps",link:function(t,n,s,r){n.on("click",function(n){n.preventDefault(),t.$apply(function(){t.$eval(s[e]),r[e.replace("step","").toLowerCase()]()})})}}})}angular.module("templates-angular-steps",["step.html","steps.html"]),angular.module("step.html",[]).run(["$templateCache",function(e){e.put("step.html",'
')}]),angular.module("steps.html",[]).run(["$templateCache",function(e){e.put("steps.html",'
\n
\n
')}]),angular.module("angular-steps",["templates-angular-steps"]),angular.module("angular-steps").directive("step",function(){return{restrict:"E",replace:!0,transclude:!0,scope:{name:"@"},require:"^steps",templateUrl:function(e,t){return t.template||"step.html"},link:function(e,t,n,s){s.addStep(e)}}}),angular.module("angular-steps").directive("steps",function(){return{restrict:"E",replace:!0,transclude:!0,scope:{currentStep:"=",onFinish:"&",name:"@"},templateUrl:function(e,t){return t.template||"steps.html"},controller:["$scope","$element","StepsService",function(e,t,n){function s(){e.steps.forEach(function(e){e.selected=!1}),e.selectedStep=null}n.addSteps(e.name||n.defaultName,this),e.$on("$destroy",function(){n.removeSteps(e.name||n.defaultName)}),this.steps=e.steps=[],e.$watch("currentStep",function(t){if(t){var n=e.selectedStep.name;if(e.selectedStep&&n!==e.currentStep){var s=e.steps.filter(function(t){return t.name===e.currentStep})[0];e.goTo(s)}}}),this.addStep=function(t){e.steps.push(t),1===e.steps.length&&e.goTo(e.steps[0])},e.goTo=function(t){s(),e.selectedStep=t,void 0!==e.currentStep&&(e.currentStep=t.name),t.selected=!0},this.next=function(){var t=e.steps.indexOf(e.selectedStep);t===e.steps.length-1?this.finish():e.goTo(e.steps[t+1])},this.previous=function(){var t=e.steps.indexOf(e.selectedStep);if(0===t)throw new Error("Already at step 0");e.goTo(e.steps[t-1])},this.goTo=function(t){var n;n=isNaN(t)?e.steps.filter(function(e){return e.name===t})[0]:e.steps[t],e.goTo(n)},this.finish=function(){e.onFinish&&e.onFinish()},this.cancel=function(){e.goTo(e.steps[0])}}]}}),e("stepNext"),e("stepPrevious"),e("stepFinish"),e("stepCancel"),angular.module("angular-steps").factory("StepsService",function(){var e={},t={};return e.defaultName="default",e.addSteps=function(e,n){t[e]=n},e.removeSteps=function(e){delete t[e]},e.steps=function(n){return t[n||e.defaultName]},e})}(); \ No newline at end of file +!function(){function e(e){angular.module("angular-steps").directive(e,function(){return{restrict:"A",replace:!1,require:"^steps",link:function(t,n,s,r){n.on("click",function(n){n.preventDefault(),t.$apply(function(){t.$eval(s[e]),r[e.replace("step","").toLowerCase()]()})})}}})}angular.module("templates-angular-steps",["step.html","steps.html"]),angular.module("step.html",[]).run(["$templateCache",function(e){e.put("step.html",'
')}]),angular.module("steps.html",[]).run(["$templateCache",function(e){e.put("steps.html",'
\n
\n
')}]),angular.module("angular-steps",["templates-angular-steps"]),angular.module("angular-steps").directive("step",function(){return{restrict:"E",replace:!0,transclude:!0,scope:{name:"@"},require:"^steps",templateUrl:function(e,t){return t.template||"step.html"},link:function(e,t,n,s){s.addStep(e)}}}),angular.module("angular-steps").directive("steps",function(){return{restrict:"E",replace:!0,transclude:!0,scope:{currentStep:"=",onFinish:"&",name:"@"},templateUrl:function(e,t){return t.template||"steps.html"},controller:["$scope","$element","StepsService",function(e,t,n){function s(){e.steps.forEach(function(e){e.selected=!1}),e.selectedStep=null}n.addSteps(e.name||n.defaultName,this),e.$on("$destroy",function(){n.removeSteps(e.name||n.defaultName)}),this.steps=e.steps=[],e.$watch("currentStep",function(t){if(t){var n=e.selectedStep.name;if(e.selectedStep&&n!==e.currentStep){var s=e.steps.filter(function(t){return t.name===e.currentStep})[0];e.goTo(s)}}}),this.addStep=function(t){e.steps.push(t),1===e.steps.length&&e.goTo(e.steps[0])},e.goTo=function(t){s(),e.selectedStep=t,void 0!==e.currentStep&&(e.currentStep=t.name),t.selected=!0},this.next=function(){var t=e.steps.indexOf(e.selectedStep);t===e.steps.length-1?this.finish():e.goTo(e.steps[t+1])},this.previous=function(){var t=e.steps.indexOf(e.selectedStep);if(0===t)throw new Error("Already at step 0");e.goTo(e.steps[t-1])},this.goTo=function(t){var n;n=isNaN(t)?e.steps.filter(function(e){return e.name===t})[0]:e.steps[t],e.goTo(n)},this.finish=function(){e.onFinish&&e.onFinish()},this.cancel=function(){e.goTo(e.steps[0])},this.selectedIndex=function(){return e.steps.indexOf(e.selectedStep)}}]}}),e("stepNext"),e("stepPrevious"),e("stepFinish"),e("stepCancel"),angular.module("angular-steps").factory("StepsService",function(){var e={},t={};return e.defaultName="default",e.addSteps=function(e,n){t[e]=n},e.removeSteps=function(e){delete t[e]},e.steps=function(n){return t[n||e.defaultName]},e})}(); \ No newline at end of file diff --git a/package.json b/package.json index 8780904..adbb6e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-steps", - "version": "1.0.0", + "version": "1.0.1", "description": "Split your UI into (wizard-like) steps in AngularJS.", "main": "dist/angular-steps.js", "dependencies": {}, diff --git a/src/angular-steps.js b/src/angular-steps.js index 90e6657..8c769cf 100644 --- a/src/angular-steps.js +++ b/src/angular-steps.js @@ -128,6 +128,10 @@ this.cancel = function () { $scope.goTo($scope.steps[0]); }; + + this.selectedIndex = function () { + return $scope.steps.indexOf($scope.selectedStep); + }; } }; });