/
angular-breadcrumb.min.js
4 lines (4 loc) · 2.52 KB
/
angular-breadcrumb.min.js
1
2
3
4
/*! angular-breadcrumb - v0.1.0 - 2014-04-28
* https://github.com/ncuillery/angular-breadcrumb
* Copyright (c) 2014 Nicolas Cuillery; Licensed MIT */
angular.module("ncy-angular-breadcrumb",["ui.router.state"]).provider("$breadcrumb",function(){var a={prefixStateName:null,template:"bootstrap3",templateUrl:null};this.setOptions=function(b){angular.extend(a,b)},this.$get=["$state",function(b){var c=function(a,b){var c=d(a);return angular.isDefined(c.data)&&angular.isDefined(c.data[b])&&angular.equals(a.data[b],c.data[b])},d=function(a){if(angular.isDefined(a.parent))return b.get(a.parent);var c=/^(.+)\.[^.]+$/.exec(a.name);return c?b.get(c[1]):null},e=function(a,b,c){var d=!1;return angular.forEach(a,function(a){!d&&angular.equals(a,b)&&(d=!0)}),d||b.abstract?!1:(c?a.splice(1,0,b):a.unshift(b),!0)},f=function(a){return angular.isDefined(a.data)&&angular.isDefined(a.data.ncyBreadcrumbParent)&&!c(a,"ncyBreadcrumbParent")?b.get(a.data.ncyBreadcrumbParent):d(a)};return{getTemplate:function(b){return a.templateUrl?null:b[a.template]?b[a.template]:a.template},getTemplateUrl:function(){return a.templateUrl},getStatesChain:function(){var c=[],d=!1;if(a.prefixStateName){var g=b.get(a.prefixStateName);if(!g)throw'Bad configuration : prefixState "'+a.prefixStateName+'" unknown';var h=angular.extend(g,{ncyBreadcrumbLink:b.href(g)});d=e(c,h,d)}var i=b.$current.self;do{var j=angular.extend(i,{ncyBreadcrumbLink:b.href(i.name)});e(c,j,d),i=f(i)}while(i&&""!==i.name);return c}}}]}).directive("ncyBreadcrumb",["$state","$interpolate","$breadcrumb","$rootScope",function(a,b,c,d){return this.$$templates={bootstrap2:'<ul class="breadcrumb"><li ng-repeat="step in steps | limitTo:(steps.length-1)"><a href="{{step.ncyBreadcrumbLink}}">{{step.ncyBreadcrumbLabel}}</a> <span class="divider">/</span></li><li ng-repeat="step in steps | limitTo:-1" class="active"><span>{{step.ncyBreadcrumbLabel}}</span></li></ul>',bootstrap3:'<ol class="breadcrumb"><li ng-repeat="step in steps | limitTo:(steps.length-1)"><a href="{{step.ncyBreadcrumbLink}}">{{step.ncyBreadcrumbLabel}}</a> </li><li ng-repeat="step in steps | limitTo:-1" class="active"><span>{{step.ncyBreadcrumbLabel}}</span></li></ol>'},{restrict:"AE",replace:!0,scope:{},template:c.getTemplate(this.$$templates),templateUrl:c.getTemplateUrl(),link:{post:function(a){d.$on("$viewContentLoaded",function(d){a.steps=c.getStatesChain(),angular.forEach(a.steps,function(a){if(a.data&&a.data.ncyBreadcrumbLabel){var c=b(a.data.ncyBreadcrumbLabel);a.ncyBreadcrumbLabel=c(d.targetScope)}else a.ncyBreadcrumbLabel=a.name})})}}}}]);