diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7fa0e4f..0fc45e5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,22 @@
+
+## 0.5.5 (2017-07-20)
+
+#### Bug Fixes
+* Ensuring that nesting only starts from current navigated to id closes [#159] - Bug on this change below
+
+
+
+## 0.5.2 (2017-07-20)
+
+#### Bug Fixes
+* Ensuring that nesting only starts from current navigated to id closes [#159] - Bug on this change below
+
+
+## 0.5.1 (2017-07-20)
+
+#### Bug Fixes
+* Ensuring that nesting only starts from current navigated to id closes [#159]
+
## 0.5.0 (2016-11-14)
diff --git a/bower.json b/bower.json
index 96b52f5..b1dbf88 100644
--- a/bower.json
+++ b/bower.json
@@ -1,7 +1,7 @@
{
"name": "angular-breadcrumb",
"description": "AngularJS module that generates a breadcrumb from ui-router's states",
- "version": "0.5.0",
+ "version": "0.5.5",
"main": "release/angular-breadcrumb.js",
"ignore": [
"sample",
diff --git a/dist/angular-breadcrumb.js b/dist/angular-breadcrumb.js
index 53d025d..184a3e7 100644
--- a/dist/angular-breadcrumb.js
+++ b/dist/angular-breadcrumb.js
@@ -1,4 +1,4 @@
-/*! angular-breadcrumb - v0.4.1-dev-2016-04-12
+/*! angular-breadcrumb - v0.5.5
* http://ncuillery.github.io/angular-breadcrumb
* Copyright (c) 2016 Nicolas Cuillery; Licensed MIT */
@@ -37,7 +37,8 @@ function $Breadcrumb() {
templateUrl: null,
templateLast: 'default',
templateLastUrl: null,
- includeAbstract : false
+ includeAbstract: false,
+ useRootParams: false
};
this.setOptions = function(options) {
@@ -148,12 +149,47 @@ function $Breadcrumb() {
return $$options.templateLastUrl;
},
- getStatesChain: function(exitOnFirst) { // Deliberately undocumented param, see getLastStep
+ getStatesChain: function (exitOnFirst, $routeParams) { // Deliberately undocumented param, see getLastStep
var chain = [];
+ //Ensuring that nesting only starts from current navigated to id
+ var startInsertingChain = false;
+
// From current state to the root
- for(var stateRef = $state.$current.self.name; stateRef; stateRef=$$breadcrumbParentState(stateRef)) {
- $$addStateInChain(chain, stateRef);
+ for (var stateRef = $state.$current.self.name; stateRef; stateRef = $$breadcrumbParentState(stateRef)) {
+
+ if ($routeParams && $routeParams.id && $$options.useRootParams && !$routeParams.external) {
+
+ //Ensuring that nesting only starts from current navigated to id
+
+ var ref = parseStateRef(stateRef),
+ conf = $state.get(ref.state);
+
+ var getCurrentURLState = $state.get('myReportsNew.' + $routeParams.id);
+
+ if (conf) {
+ if (conf.ncyBreadcrumb && conf.ncyBreadcrumb.parent) {
+
+ if (conf.ncyBreadcrumb.parent == getCurrentURLState.ncyBreadcrumb.parent) {
+ startInsertingChain = true;
+ }
+
+ if (startInsertingChain) {
+ $$addStateInChain(chain, stateRef);
+ }
+ }
+ else {
+ $$addStateInChain(chain, stateRef);
+ }
+ }
+ else {
+ $$addStateInChain(chain, stateRef);
+ }
+ }
+ else {
+ $$addStateInChain(chain, stateRef);
+ }
+
if(exitOnFirst && chain.length) {
return chain;
}
@@ -168,7 +204,7 @@ function $Breadcrumb() {
},
getLastStep: function() {
- var chain = this.getStatesChain(true);
+ var chain = this.getStatesChain(true, $routeParams);
return chain.length ? chain[0] : undefined;
},
@@ -210,7 +246,7 @@ var deregisterWatchers = function(labelWatcherArray) {
});
};
-function BreadcrumbDirective($interpolate, $breadcrumb, $rootScope) {
+function BreadcrumbDirective($interpolate, $breadcrumb, $rootScope, $routeParams) {
var $$templates = {
bootstrap2: '
' +
'- ' +
@@ -242,7 +278,8 @@ function BreadcrumbDirective($interpolate, $breadcrumb, $rootScope) {
labelWatchers = [];
var viewScope = $breadcrumb.$getLastViewScope();
- scope.steps = $breadcrumb.getStatesChain();
+
+ scope.steps = $breadcrumb.getStatesChain(false, $routeParams);
angular.forEach(scope.steps, function (step) {
if (step.ncyBreadcrumb && step.ncyBreadcrumb.label) {
var parseLabel = $interpolate(step.ncyBreadcrumb.label);
@@ -267,9 +304,10 @@ function BreadcrumbDirective($interpolate, $breadcrumb, $rootScope) {
}
};
}
-BreadcrumbDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope'];
-function BreadcrumbLastDirective($interpolate, $breadcrumb, $rootScope) {
+BreadcrumbDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope', '$routeParams'];
+
+function BreadcrumbLastDirective($interpolate, $breadcrumb, $rootScope, $routeParams) {
var $$templates = {
'default': '{{ncyBreadcrumbLabel}}'
};
@@ -327,9 +365,9 @@ function BreadcrumbLastDirective($interpolate, $breadcrumb, $rootScope) {
}
};
}
-BreadcrumbLastDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope'];
+BreadcrumbLastDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope', '$routeParams'];
-function BreadcrumbTextDirective($interpolate, $breadcrumb, $rootScope) {
+function BreadcrumbTextDirective($interpolate, $breadcrumb, $rootScope, $routeParams) {
return {
restrict: 'A',
@@ -365,7 +403,7 @@ function BreadcrumbTextDirective($interpolate, $breadcrumb, $rootScope) {
labelWatchers = [];
var viewScope = $breadcrumb.$getLastViewScope();
- var steps = $breadcrumb.getStatesChain();
+ var steps = $breadcrumb.getStatesChain(false, $routeParams);
var combinedLabels = [];
angular.forEach(steps, function (step) {
if (step.ncyBreadcrumb && step.ncyBreadcrumb.label) {
@@ -395,7 +433,7 @@ function BreadcrumbTextDirective($interpolate, $breadcrumb, $rootScope) {
}
};
}
-BreadcrumbTextDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope'];
+BreadcrumbTextDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope', '$routeParams'];
angular.module('ncy-angular-breadcrumb', ['ui.router.state'])
.provider('$breadcrumb', $Breadcrumb)
diff --git a/dist/angular-breadcrumb.min.js b/dist/angular-breadcrumb.min.js
index e91e05e..9a59e29 100644
--- a/dist/angular-breadcrumb.min.js
+++ b/dist/angular-breadcrumb.min.js
@@ -1,4 +1,4 @@
-/*! angular-breadcrumb - v0.4.1-dev-2016-04-12
+/*! angular-breadcrumb - v0.5.5
* http://ncuillery.github.io/angular-breadcrumb
* Copyright (c) 2016 Nicolas Cuillery; Licensed MIT */
-!function(a,b,c){"use strict";function d(a,c){return b.equals(a.length,c.length)?a>c:a.length>c.length}function e(a){var b=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/);if(!b||4!==b.length)throw new Error("Invalid state ref '"+a+"'");return{state:b[1],paramExpr:b[3]||null}}function f(a,b,d,e){var f=k[a];f!==c&&f(),f=b.$on(d,e),k[a]=f}function g(){var a={prefixStateName:null,template:"bootstrap3",templateUrl:null,templateLast:"default",templateLastUrl:null,includeAbstract:!1};this.setOptions=function(c){b.extend(a,c)},this.$get=["$state","$stateParams","$rootScope",function(b,g,h){var i=h;f("$Breadcrumb.$viewContentLoaded",h,"$viewContentLoaded",function(a){!a.targetScope.ncyBreadcrumbIgnore&&d(a.targetScope.$id,i.$id)&&(i=a.targetScope)});var j=function(a){var b=a.parent||(/^(.+)\.[^.]+$/.exec(a.name)||[])[1],c="object"==typeof b;return c?b.name:b},k=function(c,d){for(var f,h,j=e(d),k=!1,l=!1,m=0,n=c.length;n>m;m+=1)if(c[m].name===j.state)return;f=b.get(j.state),f.ncyBreadcrumb&&(f.ncyBreadcrumb.force&&(k=!0),f.ncyBreadcrumb.skip&&(l=!0)),f["abstract"]&&!a.includeAbstract&&!k||l||(j.paramExpr&&(h=i.$eval(j.paramExpr)),f.ncyBreadcrumbLink=b.href(j.state,h||g||{}),f.ncyBreadcrumbStateRef=d,c.unshift(f))},l=function(a){var c=e(a),d=b.get(c.state);if(d.ncyBreadcrumb&&d.ncyBreadcrumb.parent){var f="function"==typeof d.ncyBreadcrumb.parent,g=f?d.ncyBreadcrumb.parent(i):d.ncyBreadcrumb.parent;if(g)return g}return j(d)};return{getTemplate:function(b){return a.templateUrl?null:b[a.template]?b[a.template]:a.template},getTemplateUrl:function(){return a.templateUrl},getTemplateLast:function(b){return a.templateLastUrl?null:b[a.templateLast]?b[a.templateLast]:a.templateLast},getTemplateLastUrl:function(){return a.templateLastUrl},getStatesChain:function(c){for(var d=[],e=b.$current.self.name;e;e=l(e))if(k(d,e),c&&d.length)return d;return a.prefixStateName&&k(d,a.prefixStateName),d},getLastStep:function(){var a=this.getStatesChain(!0);return a.length?a[0]:c},$getLastViewScope:function(){return i}}}]}function h(a,c,d){var e={bootstrap2:'',bootstrap3:'
- {{step.ncyBreadcrumbLabel}}{{step.ncyBreadcrumbLabel}}
'};return{restrict:"AE",replace:!0,scope:{},template:c.getTemplate(e),templateUrl:c.getTemplateUrl(),link:{post:function(e){var g=[],h=function(){n(g),g=[];var d=c.$getLastViewScope();e.steps=c.getStatesChain(),b.forEach(e.steps,function(b){if(b.ncyBreadcrumb&&b.ncyBreadcrumb.label){var c=a(b.ncyBreadcrumb.label);b.ncyBreadcrumbLabel=c(d),m(g,c,d,b)}else b.ncyBreadcrumbLabel=b.name})};f("BreadcrumbDirective.$viewContentLoaded",d,"$viewContentLoaded",function(a){a.targetScope.ncyBreadcrumbIgnore||h()}),h()}}}}function i(a,b,c){var d={"default":"{{ncyBreadcrumbLabel}}"};return{restrict:"A",scope:{},template:b.getTemplateLast(d),templateUrl:b.getTemplateLastUrl(),compile:function(d,e){var g=d.attr(e.$attr.ncyBreadcrumbLast);return g&&d.html(g),{post:function(d){var e=[],g=function(){n(e),e=[];var c=b.$getLastViewScope(),f=b.getLastStep();if(f)if(d.ncyBreadcrumbLink=f.ncyBreadcrumbLink,f.ncyBreadcrumb&&f.ncyBreadcrumb.label){var g=a(f.ncyBreadcrumb.label);d.ncyBreadcrumbLabel=g(c),m(e,g,c,d)}else d.ncyBreadcrumbLabel=f.name};f("BreadcrumbLastDirective.$viewContentLoaded",c,"$viewContentLoaded",function(a){a.targetScope.ncyBreadcrumbIgnore||g()}),g()}}}}}function j(a,c,d){return{restrict:"A",scope:{},template:"{{ncyBreadcrumbChain}}",compile:function(e,g){var h=e.attr(g.$attr.ncyBreadcrumbText);h&&e.html(h);var i=e.attr(g.$attr.ncyBreadcrumbTextSeparator)||" / ";return{post:function(e){var g=[],h=function(a,c,d){b.forEach(l(c),function(b){var c=d.$watch(b,function(a,b){a!==b&&j()});a.push(c)})},j=function(){n(g),g=[];var d=c.$getLastViewScope(),f=c.getStatesChain(),j=[];b.forEach(f,function(b){if(b.ncyBreadcrumb&&b.ncyBreadcrumb.label){var c=a(b.ncyBreadcrumb.label);j.push(c(d)),h(g,c,d)}else j.push(b.name)}),e.ncyBreadcrumbChain=j.join(i)};f("BreadcrumbTextDirective.$viewContentLoaded",d,"$viewContentLoaded",function(a){a.targetScope.ncyBreadcrumbIgnore||j()}),j()}}}}}var k={},l=function(a){if(a.expressions)return a.expressions;var c=[];return b.forEach(a.parts,function(a){b.isFunction(a)&&c.push(a.exp)}),c},m=function(a,c,d,e){b.forEach(l(c),function(b){var f=d.$watch(b,function(){e.ncyBreadcrumbLabel=c(d)});a.push(f)})},n=function(a){b.forEach(a,function(a){a()})};h.$inject=["$interpolate","$breadcrumb","$rootScope"],i.$inject=["$interpolate","$breadcrumb","$rootScope"],j.$inject=["$interpolate","$breadcrumb","$rootScope"],b.module("ncy-angular-breadcrumb",["ui.router.state"]).provider("$breadcrumb",g).directive("ncyBreadcrumb",h).directive("ncyBreadcrumbLast",i).directive("ncyBreadcrumbText",j)}(window,window.angular);
\ No newline at end of file
+!function(e,t,r){"use strict";function a(e,r){return t.equals(e.length,r.length)?e>r:e.length>r.length}function n(e){var t=e.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/);if(!t||4!==t.length)throw new Error("Invalid state ref '"+e+"'");return{state:t[1],paramExpr:t[3]||null}}function c(e,t,a,n){var c=l[e];c!==r&&c(),c=t.$on(a,n),l[e]=c}function u(){var e={prefixStateName:null,template:"bootstrap3",templateUrl:null,templateLast:"default",templateLastUrl:null,includeAbstract:!1,useRootParams:!1};this.setOptions=function(r){t.extend(e,r)},this.$get=["$state","$stateParams","$rootScope",function(t,u,i){var o=i;c("$Breadcrumb.$viewContentLoaded",i,"$viewContentLoaded",function(e){!e.targetScope.ncyBreadcrumbIgnore&&a(e.targetScope.$id,o.$id)&&(o=e.targetScope)});var s=function(e){var t=e.parent||(/^(.+)\.[^.]+$/.exec(e.name)||[])[1],r="object"==typeof t;return r?t.name:t},l=function(r,a){for(var c,i,s=n(a),l=!1,m=!1,p=0,d=r.length;d>p;p+=1)if(r[p].name===s.state)return;c=t.get(s.state),c.ncyBreadcrumb&&(c.ncyBreadcrumb.force&&(l=!0),c.ncyBreadcrumb.skip&&(m=!0)),c["abstract"]&&!e.includeAbstract&&!l||m||(s.paramExpr&&(i=o.$eval(s.paramExpr)),c.ncyBreadcrumbLink=t.href(s.state,i||u||{}),c.ncyBreadcrumbStateRef=a,r.unshift(c))},m=function(e){var r=n(e),a=t.get(r.state);if(a.ncyBreadcrumb&&a.ncyBreadcrumb.parent){var c="function"==typeof a.ncyBreadcrumb.parent,u=c?a.ncyBreadcrumb.parent(o):a.ncyBreadcrumb.parent;if(u)return u}return s(a)};return{getTemplate:function(t){return e.templateUrl?null:t[e.template]?t[e.template]:e.template},getTemplateUrl:function(){return e.templateUrl},getTemplateLast:function(t){return e.templateLastUrl?null:t[e.templateLast]?t[e.templateLast]:e.templateLast},getTemplateLastUrl:function(){return e.templateLastUrl},getStatesChain:function(r,a){for(var c=[],u=!1,i=t.$current.self.name;i;i=m(i)){if(a&&a.id&&e.useRootParams&&!a.external){var o=n(i),s=t.get(o.state),p=t.get("myReportsNew."+a.id);s&&s.ncyBreadcrumb&&s.ncyBreadcrumb.parent?(s.ncyBreadcrumb.parent==p.ncyBreadcrumb.parent&&(u=!0),u&&l(c,i)):l(c,i)}else l(c,i);if(r&&c.length)return c}return e.prefixStateName&&l(c,e.prefixStateName),c},getLastStep:function(){var e=this.getStatesChain(!0,$routeParams);return e.length?e[0]:r},$getLastViewScope:function(){return o}}}]}function i(e,r,a,n){var u={bootstrap2:'',bootstrap3:'- {{step.ncyBreadcrumbLabel}}{{step.ncyBreadcrumbLabel}}
'};return{restrict:"AE",replace:!0,scope:{},template:r.getTemplate(u),templateUrl:r.getTemplateUrl(),link:{post:function(u){var i=[],o=function(){d(i),i=[];var a=r.$getLastViewScope();u.steps=r.getStatesChain(!1,n),t.forEach(u.steps,function(t){if(t.ncyBreadcrumb&&t.ncyBreadcrumb.label){var r=e(t.ncyBreadcrumb.label);t.ncyBreadcrumbLabel=r(a),p(i,r,a,t)}else t.ncyBreadcrumbLabel=t.name})};c("BreadcrumbDirective.$viewContentLoaded",a,"$viewContentLoaded",function(e){e.targetScope.ncyBreadcrumbIgnore||o()}),o()}}}}function o(e,t,r,a){var n={"default":"{{ncyBreadcrumbLabel}}"};return{restrict:"A",scope:{},template:t.getTemplateLast(n),templateUrl:t.getTemplateLastUrl(),compile:function(a,n){var u=a.attr(n.$attr.ncyBreadcrumbLast);return u&&a.html(u),{post:function(a){var n=[],u=function(){d(n),n=[];var r=t.$getLastViewScope(),c=t.getLastStep();if(c)if(a.ncyBreadcrumbLink=c.ncyBreadcrumbLink,c.ncyBreadcrumb&&c.ncyBreadcrumb.label){var u=e(c.ncyBreadcrumb.label);a.ncyBreadcrumbLabel=u(r),p(n,u,r,a)}else a.ncyBreadcrumbLabel=c.name};c("BreadcrumbLastDirective.$viewContentLoaded",r,"$viewContentLoaded",function(e){e.targetScope.ncyBreadcrumbIgnore||u()}),u()}}}}}function s(e,r,a,n){return{restrict:"A",scope:{},template:"{{ncyBreadcrumbChain}}",compile:function(u,i){var o=u.attr(i.$attr.ncyBreadcrumbText);o&&u.html(o);var s=u.attr(i.$attr.ncyBreadcrumbTextSeparator)||" / ";return{post:function(u){var i=[],o=function(e,r,a){t.forEach(m(r),function(t){var r=a.$watch(t,function(e,t){e!==t&&l()});e.push(r)})},l=function(){d(i),i=[];var a=r.$getLastViewScope(),c=r.getStatesChain(!1,n),l=[];t.forEach(c,function(t){if(t.ncyBreadcrumb&&t.ncyBreadcrumb.label){var r=e(t.ncyBreadcrumb.label);l.push(r(a)),o(i,r,a)}else l.push(t.name)}),u.ncyBreadcrumbChain=l.join(s)};c("BreadcrumbTextDirective.$viewContentLoaded",a,"$viewContentLoaded",function(e){e.targetScope.ncyBreadcrumbIgnore||l()}),l()}}}}}var l={},m=function(e){if(e.expressions)return e.expressions;var r=[];return t.forEach(e.parts,function(e){t.isFunction(e)&&r.push(e.exp)}),r},p=function(e,r,a,n){t.forEach(m(r),function(t){var c=a.$watch(t,function(){n.ncyBreadcrumbLabel=r(a)});e.push(c)})},d=function(e){t.forEach(e,function(e){e()})};i.$inject=["$interpolate","$breadcrumb","$rootScope","$routeParams"],o.$inject=["$interpolate","$breadcrumb","$rootScope","$routeParams"],s.$inject=["$interpolate","$breadcrumb","$rootScope","$routeParams"],t.module("ncy-angular-breadcrumb",["ui.router.state"]).provider("$breadcrumb",u).directive("ncyBreadcrumb",i).directive("ncyBreadcrumbLast",o).directive("ncyBreadcrumbText",s)}(window,window.angular);
\ No newline at end of file
diff --git a/package.json b/package.json
index 6f773eb..ce96fe5 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "angular-breadcrumb",
"description": "AngularJS module that generates a breadcrumb from ui-router's states",
- "version": "0.5.0",
+ "version": "0.5.5",
"homepage": "http://ncuillery.github.io/angular-breadcrumb",
"author": {
"name": "Nicolas Cuillery",
diff --git a/release/angular-breadcrumb.js b/release/angular-breadcrumb.js
index ecbeeba..184a3e7 100644
--- a/release/angular-breadcrumb.js
+++ b/release/angular-breadcrumb.js
@@ -1,4 +1,4 @@
-/*! angular-breadcrumb - v0.5.0
+/*! angular-breadcrumb - v0.5.5
* http://ncuillery.github.io/angular-breadcrumb
* Copyright (c) 2016 Nicolas Cuillery; Licensed MIT */
@@ -37,7 +37,8 @@ function $Breadcrumb() {
templateUrl: null,
templateLast: 'default',
templateLastUrl: null,
- includeAbstract : false
+ includeAbstract: false,
+ useRootParams: false
};
this.setOptions = function(options) {
@@ -148,12 +149,47 @@ function $Breadcrumb() {
return $$options.templateLastUrl;
},
- getStatesChain: function(exitOnFirst) { // Deliberately undocumented param, see getLastStep
+ getStatesChain: function (exitOnFirst, $routeParams) { // Deliberately undocumented param, see getLastStep
var chain = [];
+ //Ensuring that nesting only starts from current navigated to id
+ var startInsertingChain = false;
+
// From current state to the root
- for(var stateRef = $state.$current.self.name; stateRef; stateRef=$$breadcrumbParentState(stateRef)) {
- $$addStateInChain(chain, stateRef);
+ for (var stateRef = $state.$current.self.name; stateRef; stateRef = $$breadcrumbParentState(stateRef)) {
+
+ if ($routeParams && $routeParams.id && $$options.useRootParams && !$routeParams.external) {
+
+ //Ensuring that nesting only starts from current navigated to id
+
+ var ref = parseStateRef(stateRef),
+ conf = $state.get(ref.state);
+
+ var getCurrentURLState = $state.get('myReportsNew.' + $routeParams.id);
+
+ if (conf) {
+ if (conf.ncyBreadcrumb && conf.ncyBreadcrumb.parent) {
+
+ if (conf.ncyBreadcrumb.parent == getCurrentURLState.ncyBreadcrumb.parent) {
+ startInsertingChain = true;
+ }
+
+ if (startInsertingChain) {
+ $$addStateInChain(chain, stateRef);
+ }
+ }
+ else {
+ $$addStateInChain(chain, stateRef);
+ }
+ }
+ else {
+ $$addStateInChain(chain, stateRef);
+ }
+ }
+ else {
+ $$addStateInChain(chain, stateRef);
+ }
+
if(exitOnFirst && chain.length) {
return chain;
}
@@ -168,7 +204,7 @@ function $Breadcrumb() {
},
getLastStep: function() {
- var chain = this.getStatesChain(true);
+ var chain = this.getStatesChain(true, $routeParams);
return chain.length ? chain[0] : undefined;
},
@@ -210,7 +246,7 @@ var deregisterWatchers = function(labelWatcherArray) {
});
};
-function BreadcrumbDirective($interpolate, $breadcrumb, $rootScope) {
+function BreadcrumbDirective($interpolate, $breadcrumb, $rootScope, $routeParams) {
var $$templates = {
bootstrap2: '' +
'- ' +
@@ -242,7 +278,8 @@ function BreadcrumbDirective($interpolate, $breadcrumb, $rootScope) {
labelWatchers = [];
var viewScope = $breadcrumb.$getLastViewScope();
- scope.steps = $breadcrumb.getStatesChain();
+
+ scope.steps = $breadcrumb.getStatesChain(false, $routeParams);
angular.forEach(scope.steps, function (step) {
if (step.ncyBreadcrumb && step.ncyBreadcrumb.label) {
var parseLabel = $interpolate(step.ncyBreadcrumb.label);
@@ -267,9 +304,10 @@ function BreadcrumbDirective($interpolate, $breadcrumb, $rootScope) {
}
};
}
-BreadcrumbDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope'];
-function BreadcrumbLastDirective($interpolate, $breadcrumb, $rootScope) {
+BreadcrumbDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope', '$routeParams'];
+
+function BreadcrumbLastDirective($interpolate, $breadcrumb, $rootScope, $routeParams) {
var $$templates = {
'default': '{{ncyBreadcrumbLabel}}'
};
@@ -327,9 +365,9 @@ function BreadcrumbLastDirective($interpolate, $breadcrumb, $rootScope) {
}
};
}
-BreadcrumbLastDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope'];
+BreadcrumbLastDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope', '$routeParams'];
-function BreadcrumbTextDirective($interpolate, $breadcrumb, $rootScope) {
+function BreadcrumbTextDirective($interpolate, $breadcrumb, $rootScope, $routeParams) {
return {
restrict: 'A',
@@ -365,7 +403,7 @@ function BreadcrumbTextDirective($interpolate, $breadcrumb, $rootScope) {
labelWatchers = [];
var viewScope = $breadcrumb.$getLastViewScope();
- var steps = $breadcrumb.getStatesChain();
+ var steps = $breadcrumb.getStatesChain(false, $routeParams);
var combinedLabels = [];
angular.forEach(steps, function (step) {
if (step.ncyBreadcrumb && step.ncyBreadcrumb.label) {
@@ -395,7 +433,7 @@ function BreadcrumbTextDirective($interpolate, $breadcrumb, $rootScope) {
}
};
}
-BreadcrumbTextDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope'];
+BreadcrumbTextDirective.$inject = ['$interpolate', '$breadcrumb', '$rootScope', '$routeParams'];
angular.module('ncy-angular-breadcrumb', ['ui.router.state'])
.provider('$breadcrumb', $Breadcrumb)
diff --git a/release/angular-breadcrumb.min.js b/release/angular-breadcrumb.min.js
index 1f3a44b..9a59e29 100644
--- a/release/angular-breadcrumb.min.js
+++ b/release/angular-breadcrumb.min.js
@@ -1,4 +1,4 @@
-/*! angular-breadcrumb - v0.5.0
+/*! angular-breadcrumb - v0.5.5
* http://ncuillery.github.io/angular-breadcrumb
* Copyright (c) 2016 Nicolas Cuillery; Licensed MIT */
-!function(a,b,c){"use strict";function d(a,c){return b.equals(a.length,c.length)?a>c:a.length>c.length}function e(a){var b=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/);if(!b||4!==b.length)throw new Error("Invalid state ref '"+a+"'");return{state:b[1],paramExpr:b[3]||null}}function f(a,b,d,e){var f=k[a];f!==c&&f(),f=b.$on(d,e),k[a]=f}function g(){var a={prefixStateName:null,template:"bootstrap3",templateUrl:null,templateLast:"default",templateLastUrl:null,includeAbstract:!1};this.setOptions=function(c){b.extend(a,c)},this.$get=["$state","$stateParams","$rootScope",function(b,g,h){var i=h;f("$Breadcrumb.$viewContentLoaded",h,"$viewContentLoaded",function(a){!a.targetScope.ncyBreadcrumbIgnore&&d(a.targetScope.$id,i.$id)&&(i=a.targetScope)});var j=function(a){var b=a.parent||(/^(.+)\.[^.]+$/.exec(a.name)||[])[1],c="object"==typeof b;return c?b.name:b},k=function(c,d){for(var f,h,j=e(d),k=!1,l=!1,m=0,n=c.length;n>m;m+=1)if(c[m].name===j.state)return;f=b.get(j.state),f.ncyBreadcrumb&&(f.ncyBreadcrumb.force&&(k=!0),f.ncyBreadcrumb.skip&&(l=!0)),f["abstract"]&&!a.includeAbstract&&!k||l||(j.paramExpr&&(h=i.$eval(j.paramExpr)),f.ncyBreadcrumbLink=b.href(j.state,h||g||{}),f.ncyBreadcrumbStateRef=d,c.unshift(f))},l=function(a){var c=e(a),d=b.get(c.state);if(d.ncyBreadcrumb&&d.ncyBreadcrumb.parent){var f="function"==typeof d.ncyBreadcrumb.parent,g=f?d.ncyBreadcrumb.parent(i):d.ncyBreadcrumb.parent;if(g)return g}return j(d)};return{getTemplate:function(b){return a.templateUrl?null:b[a.template]?b[a.template]:a.template},getTemplateUrl:function(){return a.templateUrl},getTemplateLast:function(b){return a.templateLastUrl?null:b[a.templateLast]?b[a.templateLast]:a.templateLast},getTemplateLastUrl:function(){return a.templateLastUrl},getStatesChain:function(c){for(var d=[],e=b.$current.self.name;e;e=l(e))if(k(d,e),c&&d.length)return d;return a.prefixStateName&&k(d,a.prefixStateName),d},getLastStep:function(){var a=this.getStatesChain(!0);return a.length?a[0]:c},$getLastViewScope:function(){return i}}}]}function h(a,c,d){var e={bootstrap2:'',bootstrap3:'
- {{step.ncyBreadcrumbLabel}}{{step.ncyBreadcrumbLabel}}
'};return{restrict:"AE",replace:!0,scope:{},template:c.getTemplate(e),templateUrl:c.getTemplateUrl(),link:{post:function(e){var g=[],h=function(){n(g),g=[];var d=c.$getLastViewScope();e.steps=c.getStatesChain(),b.forEach(e.steps,function(b){if(b.ncyBreadcrumb&&b.ncyBreadcrumb.label){var c=a(b.ncyBreadcrumb.label);b.ncyBreadcrumbLabel=c(d),m(g,c,d,b)}else b.ncyBreadcrumbLabel=b.name})};f("BreadcrumbDirective.$viewContentLoaded",d,"$viewContentLoaded",function(a){a.targetScope.ncyBreadcrumbIgnore||h()}),h()}}}}function i(a,b,c){var d={"default":"{{ncyBreadcrumbLabel}}"};return{restrict:"A",scope:{},template:b.getTemplateLast(d),templateUrl:b.getTemplateLastUrl(),compile:function(d,e){var g=d.attr(e.$attr.ncyBreadcrumbLast);return g&&d.html(g),{post:function(d){var e=[],g=function(){n(e),e=[];var c=b.$getLastViewScope(),f=b.getLastStep();if(f)if(d.ncyBreadcrumbLink=f.ncyBreadcrumbLink,f.ncyBreadcrumb&&f.ncyBreadcrumb.label){var g=a(f.ncyBreadcrumb.label);d.ncyBreadcrumbLabel=g(c),m(e,g,c,d)}else d.ncyBreadcrumbLabel=f.name};f("BreadcrumbLastDirective.$viewContentLoaded",c,"$viewContentLoaded",function(a){a.targetScope.ncyBreadcrumbIgnore||g()}),g()}}}}}function j(a,c,d){return{restrict:"A",scope:{},template:"{{ncyBreadcrumbChain}}",compile:function(e,g){var h=e.attr(g.$attr.ncyBreadcrumbText);h&&e.html(h);var i=e.attr(g.$attr.ncyBreadcrumbTextSeparator)||" / ";return{post:function(e){var g=[],h=function(a,c,d){b.forEach(l(c),function(b){var c=d.$watch(b,function(a,b){a!==b&&j()});a.push(c)})},j=function(){n(g),g=[];var d=c.$getLastViewScope(),f=c.getStatesChain(),j=[];b.forEach(f,function(b){if(b.ncyBreadcrumb&&b.ncyBreadcrumb.label){var c=a(b.ncyBreadcrumb.label);j.push(c(d)),h(g,c,d)}else j.push(b.name)}),e.ncyBreadcrumbChain=j.join(i)};f("BreadcrumbTextDirective.$viewContentLoaded",d,"$viewContentLoaded",function(a){a.targetScope.ncyBreadcrumbIgnore||j()}),j()}}}}}var k={},l=function(a){if(a.expressions)return a.expressions;var c=[];return b.forEach(a.parts,function(a){b.isFunction(a)&&c.push(a.exp)}),c},m=function(a,c,d,e){b.forEach(l(c),function(b){var f=d.$watch(b,function(){e.ncyBreadcrumbLabel=c(d)});a.push(f)})},n=function(a){b.forEach(a,function(a){a()})};h.$inject=["$interpolate","$breadcrumb","$rootScope"],i.$inject=["$interpolate","$breadcrumb","$rootScope"],j.$inject=["$interpolate","$breadcrumb","$rootScope"],b.module("ncy-angular-breadcrumb",["ui.router.state"]).provider("$breadcrumb",g).directive("ncyBreadcrumb",h).directive("ncyBreadcrumbLast",i).directive("ncyBreadcrumbText",j)}(window,window.angular);
\ No newline at end of file
+!function(e,t,r){"use strict";function a(e,r){return t.equals(e.length,r.length)?e>r:e.length>r.length}function n(e){var t=e.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/);if(!t||4!==t.length)throw new Error("Invalid state ref '"+e+"'");return{state:t[1],paramExpr:t[3]||null}}function c(e,t,a,n){var c=l[e];c!==r&&c(),c=t.$on(a,n),l[e]=c}function u(){var e={prefixStateName:null,template:"bootstrap3",templateUrl:null,templateLast:"default",templateLastUrl:null,includeAbstract:!1,useRootParams:!1};this.setOptions=function(r){t.extend(e,r)},this.$get=["$state","$stateParams","$rootScope",function(t,u,i){var o=i;c("$Breadcrumb.$viewContentLoaded",i,"$viewContentLoaded",function(e){!e.targetScope.ncyBreadcrumbIgnore&&a(e.targetScope.$id,o.$id)&&(o=e.targetScope)});var s=function(e){var t=e.parent||(/^(.+)\.[^.]+$/.exec(e.name)||[])[1],r="object"==typeof t;return r?t.name:t},l=function(r,a){for(var c,i,s=n(a),l=!1,m=!1,p=0,d=r.length;d>p;p+=1)if(r[p].name===s.state)return;c=t.get(s.state),c.ncyBreadcrumb&&(c.ncyBreadcrumb.force&&(l=!0),c.ncyBreadcrumb.skip&&(m=!0)),c["abstract"]&&!e.includeAbstract&&!l||m||(s.paramExpr&&(i=o.$eval(s.paramExpr)),c.ncyBreadcrumbLink=t.href(s.state,i||u||{}),c.ncyBreadcrumbStateRef=a,r.unshift(c))},m=function(e){var r=n(e),a=t.get(r.state);if(a.ncyBreadcrumb&&a.ncyBreadcrumb.parent){var c="function"==typeof a.ncyBreadcrumb.parent,u=c?a.ncyBreadcrumb.parent(o):a.ncyBreadcrumb.parent;if(u)return u}return s(a)};return{getTemplate:function(t){return e.templateUrl?null:t[e.template]?t[e.template]:e.template},getTemplateUrl:function(){return e.templateUrl},getTemplateLast:function(t){return e.templateLastUrl?null:t[e.templateLast]?t[e.templateLast]:e.templateLast},getTemplateLastUrl:function(){return e.templateLastUrl},getStatesChain:function(r,a){for(var c=[],u=!1,i=t.$current.self.name;i;i=m(i)){if(a&&a.id&&e.useRootParams&&!a.external){var o=n(i),s=t.get(o.state),p=t.get("myReportsNew."+a.id);s&&s.ncyBreadcrumb&&s.ncyBreadcrumb.parent?(s.ncyBreadcrumb.parent==p.ncyBreadcrumb.parent&&(u=!0),u&&l(c,i)):l(c,i)}else l(c,i);if(r&&c.length)return c}return e.prefixStateName&&l(c,e.prefixStateName),c},getLastStep:function(){var e=this.getStatesChain(!0,$routeParams);return e.length?e[0]:r},$getLastViewScope:function(){return o}}}]}function i(e,r,a,n){var u={bootstrap2:'',bootstrap3:'- {{step.ncyBreadcrumbLabel}}{{step.ncyBreadcrumbLabel}}
'};return{restrict:"AE",replace:!0,scope:{},template:r.getTemplate(u),templateUrl:r.getTemplateUrl(),link:{post:function(u){var i=[],o=function(){d(i),i=[];var a=r.$getLastViewScope();u.steps=r.getStatesChain(!1,n),t.forEach(u.steps,function(t){if(t.ncyBreadcrumb&&t.ncyBreadcrumb.label){var r=e(t.ncyBreadcrumb.label);t.ncyBreadcrumbLabel=r(a),p(i,r,a,t)}else t.ncyBreadcrumbLabel=t.name})};c("BreadcrumbDirective.$viewContentLoaded",a,"$viewContentLoaded",function(e){e.targetScope.ncyBreadcrumbIgnore||o()}),o()}}}}function o(e,t,r,a){var n={"default":"{{ncyBreadcrumbLabel}}"};return{restrict:"A",scope:{},template:t.getTemplateLast(n),templateUrl:t.getTemplateLastUrl(),compile:function(a,n){var u=a.attr(n.$attr.ncyBreadcrumbLast);return u&&a.html(u),{post:function(a){var n=[],u=function(){d(n),n=[];var r=t.$getLastViewScope(),c=t.getLastStep();if(c)if(a.ncyBreadcrumbLink=c.ncyBreadcrumbLink,c.ncyBreadcrumb&&c.ncyBreadcrumb.label){var u=e(c.ncyBreadcrumb.label);a.ncyBreadcrumbLabel=u(r),p(n,u,r,a)}else a.ncyBreadcrumbLabel=c.name};c("BreadcrumbLastDirective.$viewContentLoaded",r,"$viewContentLoaded",function(e){e.targetScope.ncyBreadcrumbIgnore||u()}),u()}}}}}function s(e,r,a,n){return{restrict:"A",scope:{},template:"{{ncyBreadcrumbChain}}",compile:function(u,i){var o=u.attr(i.$attr.ncyBreadcrumbText);o&&u.html(o);var s=u.attr(i.$attr.ncyBreadcrumbTextSeparator)||" / ";return{post:function(u){var i=[],o=function(e,r,a){t.forEach(m(r),function(t){var r=a.$watch(t,function(e,t){e!==t&&l()});e.push(r)})},l=function(){d(i),i=[];var a=r.$getLastViewScope(),c=r.getStatesChain(!1,n),l=[];t.forEach(c,function(t){if(t.ncyBreadcrumb&&t.ncyBreadcrumb.label){var r=e(t.ncyBreadcrumb.label);l.push(r(a)),o(i,r,a)}else l.push(t.name)}),u.ncyBreadcrumbChain=l.join(s)};c("BreadcrumbTextDirective.$viewContentLoaded",a,"$viewContentLoaded",function(e){e.targetScope.ncyBreadcrumbIgnore||l()}),l()}}}}}var l={},m=function(e){if(e.expressions)return e.expressions;var r=[];return t.forEach(e.parts,function(e){t.isFunction(e)&&r.push(e.exp)}),r},p=function(e,r,a,n){t.forEach(m(r),function(t){var c=a.$watch(t,function(){n.ncyBreadcrumbLabel=r(a)});e.push(c)})},d=function(e){t.forEach(e,function(e){e()})};i.$inject=["$interpolate","$breadcrumb","$rootScope","$routeParams"],o.$inject=["$interpolate","$breadcrumb","$rootScope","$routeParams"],s.$inject=["$interpolate","$breadcrumb","$rootScope","$routeParams"],t.module("ncy-angular-breadcrumb",["ui.router.state"]).provider("$breadcrumb",u).directive("ncyBreadcrumb",i).directive("ncyBreadcrumbLast",o).directive("ncyBreadcrumbText",s)}(window,window.angular);
\ No newline at end of file
diff --git a/sample/angular-breadcrumb-0.5.0.zip b/sample/angular-breadcrumb-0.5.0.zip
deleted file mode 100644
index 985e4bc..0000000
Binary files a/sample/angular-breadcrumb-0.5.0.zip and /dev/null differ
diff --git a/sample/angular-breadcrumb-0.5.5.zip b/sample/angular-breadcrumb-0.5.5.zip
new file mode 100644
index 0000000..df524a1
Binary files /dev/null and b/sample/angular-breadcrumb-0.5.5.zip differ