Skip to content
This repository was archived by the owner on Nov 5, 2021. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
* Docs folder
* Version bump and updated changelog

1.0.0 / 2017-04-30
1.0.0 / 2017-04-29
==================

* 1.0.0
Expand Down
38 changes: 12 additions & 26 deletions dist/vue-breadcrumbs.common.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
'use strict';

function install(Vue, options) {
function getMatchedRoutes(routes) {
var getMatchedRoutes = function getMatchedRoutes(routes) {
// Convert to an array if Vue 1.x
if (parseFloat(Vue.version) < 2) {
routes = Object.keys(routes).filter(function (key) {
Expand All @@ -17,25 +17,14 @@ function install(Vue, options) {
}

return routes;
}
};

// Add the $breadcrumbs property to the Vue instance
Object.defineProperty(Vue.prototype, '$breadcrumbs', {
get: function get() {
var crumbs = [];

var matched = getMatchedRoutes(this.$route.matched);

matched.forEach(function (route) {
// Backwards compatibility
var hasBreadcrumb = parseFloat(Vue.version) < 2 ? route.handler && route.handler.breadcrumb : route.meta && route.meta.breadcrumb;

if (hasBreadcrumb) {
crumbs.push(route);
}
return getMatchedRoutes(this.$route.matched).filter(function (route) {
return parseFloat(Vue.version) < 2 ? route.handler && route.handler.breadcrumb : route.meta && route.meta.breadcrumb;
});

return crumbs;
}
});

Expand All @@ -58,25 +47,22 @@ function install(Vue, options) {
path: crumb.handler && crumb.handler.fullPath ? crumb.handler.fullPath : crumb.path,
params: this.$route.params
};
}
},
},
resolveCrumbName: function resolveCrumbName(crumb) {
var crumbName = parseFloat(Vue.version) < 2 ? crumb.handler.breadcrumb : crumb.meta.breadcrumb;

filters: {
// Display the correct breadcrumb text
// depending on the Vue version
crumbText: function crumbText(crumb) {
return parseFloat(Vue.version) < 2 ? crumb.handler.breadcrumb : crumb.meta.breadcrumb;
return typeof crumbName === 'function' ? crumbName(this.$route.params) : crumbName;
}
},

template: '<nav class="breadcrumbs" v-if="$breadcrumbs.length"> ' + '<ul> ' + '<li v-for="crumb in $breadcrumbs"> ' + '<router-link :to="linkProp(crumb)">{{ crumb | crumbText }}</router-link> ' + '</li> ' + '</ul> ' + '</nav>'
template: '\n <nav class="breadcrumbs" v-if="$breadcrumbs.length">\n <ul>\n <li v-for="crumb in $breadcrumbs">\n <router-link :to="linkProp(crumb)">{{ resolveCrumbName(crumb) }}</router-link>\n </li>\n </ul>\n </nav>\n '
};

options = Object.assign(defaults, options);
var componentOptions = Object.assign(defaults, options);

// Add a default breadcrumbs component
if (options.registerComponent) {
Vue.component('breadcrumbs', options);
if (componentOptions.registerComponent) {
Vue.component('breadcrumbs', componentOptions);
}
}

Expand Down
38 changes: 12 additions & 26 deletions dist/vue-breadcrumbs.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
}(this, function () { 'use strict';

function install(Vue, options) {
function getMatchedRoutes(routes) {
var getMatchedRoutes = function getMatchedRoutes(routes) {
// Convert to an array if Vue 1.x
if (parseFloat(Vue.version) < 2) {
routes = Object.keys(routes).filter(function (key) {
Expand All @@ -21,25 +21,14 @@
}

return routes;
}
};

// Add the $breadcrumbs property to the Vue instance
Object.defineProperty(Vue.prototype, '$breadcrumbs', {
get: function get() {
var crumbs = [];

var matched = getMatchedRoutes(this.$route.matched);

matched.forEach(function (route) {
// Backwards compatibility
var hasBreadcrumb = parseFloat(Vue.version) < 2 ? route.handler && route.handler.breadcrumb : route.meta && route.meta.breadcrumb;

if (hasBreadcrumb) {
crumbs.push(route);
}
return getMatchedRoutes(this.$route.matched).filter(function (route) {
return parseFloat(Vue.version) < 2 ? route.handler && route.handler.breadcrumb : route.meta && route.meta.breadcrumb;
});

return crumbs;
}
});

Expand All @@ -62,25 +51,22 @@
path: crumb.handler && crumb.handler.fullPath ? crumb.handler.fullPath : crumb.path,
params: this.$route.params
};
}
},
},
resolveCrumbName: function resolveCrumbName(crumb) {
var crumbName = parseFloat(Vue.version) < 2 ? crumb.handler.breadcrumb : crumb.meta.breadcrumb;

filters: {
// Display the correct breadcrumb text
// depending on the Vue version
crumbText: function crumbText(crumb) {
return parseFloat(Vue.version) < 2 ? crumb.handler.breadcrumb : crumb.meta.breadcrumb;
return typeof crumbName === 'function' ? crumbName(this.$route.params) : crumbName;
}
},

template: '<nav class="breadcrumbs" v-if="$breadcrumbs.length"> ' + '<ul> ' + '<li v-for="crumb in $breadcrumbs"> ' + '<router-link :to="linkProp(crumb)">{{ crumb | crumbText }}</router-link> ' + '</li> ' + '</ul> ' + '</nav>'
template: '\n <nav class="breadcrumbs" v-if="$breadcrumbs.length">\n <ul>\n <li v-for="crumb in $breadcrumbs">\n <router-link :to="linkProp(crumb)">{{ resolveCrumbName(crumb) }}</router-link>\n </li>\n </ul>\n </nav>\n '
};

options = Object.assign(defaults, options);
var componentOptions = Object.assign(defaults, options);

// Add a default breadcrumbs component
if (options.registerComponent) {
Vue.component('breadcrumbs', options);
if (componentOptions.registerComponent) {
Vue.component('breadcrumbs', componentOptions);
}
}

Expand Down
2 changes: 1 addition & 1 deletion dist/vue-breadcrumbs.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified dist/vue-breadcrumbs.min.js.gz
Binary file not shown.
7 changes: 4 additions & 3 deletions example/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ var AboutFoo = {
var AboutBar = {
path: 'bar',
component: {
template: '<p>About our foo!</p>'
template: '<p>About our bar!</p>'
},
meta: {
breadcrumb: 'Bar About'
Expand All @@ -90,15 +90,16 @@ var About = {
]
}


var Item = {
path: ':id',
name: 'store-item',
component: {
template: '<p>test This is item {{ $route.params.id }}</p>'
},
meta: {
breadcrumb: 'View item'
breadcrumb(params) {
return 'View item ' + params.id
}
}
}

Expand Down
Loading