druxt-breadcrumb
Advanced tools
Comparing version 0.7.2 to 0.8.0
import { resolve } from 'path'; | ||
import { DruxtComponentMixin } from 'druxt'; | ||
import { DruxtModule } from 'druxt'; | ||
import { mapState, mapActions } from 'vuex'; | ||
@@ -47,4 +47,2 @@ import { DruxtBlocksBlockMixin } from 'druxt-blocks'; | ||
// | ||
/** | ||
@@ -59,3 +57,3 @@ * The `<DruxtBreadcrumb />` Vue.js component. | ||
mixins: [DruxtComponentMixin], | ||
extends: DruxtModule, | ||
@@ -87,10 +85,6 @@ /** | ||
await this.fetchCrumbs(); | ||
// Fetch theme component. | ||
await DruxtComponentMixin.fetch.call(this); | ||
await DruxtModule.fetch.call(this); | ||
}, | ||
/** | ||
* Vue.js Data object. | ||
* | ||
* @property {objects[]} crumbs - The Breadcrumbs. | ||
@@ -134,5 +128,6 @@ */ | ||
// Current route crumb. | ||
var crumbs = [{ | ||
text: this.route.label | ||
}]; | ||
var crumbs = []; | ||
if (this.route.label) { | ||
crumbs.push({ text: this.route.label }); | ||
} | ||
@@ -174,2 +169,30 @@ // If we are at the root of the site, stop here. | ||
this.crumbs = crumbs.reverse(); | ||
}, | ||
/** | ||
* Provides the scoped slots object for the Module render function. | ||
* | ||
* The `default` slot renders crumbs as as list of NuxtLink's. | ||
* | ||
* @return {ScopedSlots} The Scoped slots object. | ||
*/ | ||
getScopedSlots: function getScopedSlots() { | ||
var this$1 = this; | ||
// Build scoped slots for each field. | ||
var scopedSlots = {}; | ||
// Build default slot. | ||
scopedSlots.default = function () { return this$1.$createElement('ul', this$1.crumbs.map(function (crumb) { return this$1.$createElement('li', [ | ||
crumb.to | ||
? this$1.$createElement('NuxtLink', { props: { to: crumb.to }}, [crumb.text]) | ||
: crumb.text | ||
]); } | ||
)); }; | ||
if (this.$scopedSlots.default) { | ||
scopedSlots.default = function (attrs) { return this$1.$scopedSlots.default(Object.assign({}, this$1.$options.druxt.propsData(this$1), | ||
attrs)); }; | ||
} | ||
return scopedSlots | ||
}}, | ||
@@ -187,12 +210,10 @@ | ||
*/ | ||
druxt: function (ref) { | ||
var vm = ref.vm; | ||
druxt: { | ||
componentOptions: function (ref) { return [['default']]; }, | ||
propsData: function (ref) { | ||
var crumbs = ref.crumbs; | ||
return ({ | ||
componentOptions: [['default']], | ||
propsData: { | ||
crumbs: vm.crumbs | ||
} | ||
}); | ||
}, | ||
return ({ crumbs: crumbs }); | ||
} | ||
}, | ||
}; | ||
@@ -279,4 +300,2 @@ | ||
/* template */ | ||
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.$fetchState.pending)?_c(_vm.wrapper.component,_vm._b({tag:"component",class:_vm.wrapper.class,style:(_vm.wrapper.style)},'component',_vm.wrapper.propsData,false),[_c(_vm.component.is,_vm._b({tag:"component",scopedSlots:_vm._u([{key:"default",fn:function(){return [_vm._v("\n "+_vm._s(_vm.crumbs)+"\n ")]},proxy:true}],null,false,2189858211)},'component',_vm.component.propsData,false))],1):_vm._e()}; | ||
var __vue_staticRenderFns__ = []; | ||
@@ -290,3 +309,3 @@ /* style */ | ||
/* functional template */ | ||
var __vue_is_functional_template__ = false; | ||
var __vue_is_functional_template__ = undefined; | ||
/* style inject */ | ||
@@ -301,3 +320,3 @@ | ||
var __vue_component__ = /*#__PURE__*/normalizeComponent( | ||
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, | ||
{}, | ||
__vue_inject_styles__, | ||
@@ -346,4 +365,4 @@ __vue_script__, | ||
/* template */ | ||
var __vue_render__$1 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DruxtBreadcrumb')}; | ||
var __vue_staticRenderFns__$1 = []; | ||
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DruxtBreadcrumb')}; | ||
var __vue_staticRenderFns__ = []; | ||
@@ -367,3 +386,3 @@ /* style */ | ||
var __vue_component__$1 = /*#__PURE__*/normalizeComponent( | ||
{ render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 }, | ||
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, | ||
__vue_inject_styles__$1, | ||
@@ -370,0 +389,0 @@ __vue_script__$1, |
@@ -1,1 +0,1 @@ | ||
var DruxtBreadcrumb=function(t,e,r,n,o){"use strict";function s(t,e,r,n,o,s,i,u,a,c){"boolean"!=typeof i&&(a=u,u=i,i=!1);var d,p="function"==typeof r?r.options:r;if(t&&t.render&&(p.render=t.render,p.staticRenderFns=t.staticRenderFns,p._compiled=!0,o&&(p.functional=!0)),n&&(p._scopeId=n),s?(d=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,a(t)),t&&t._registeredComponents&&t._registeredComponents.add(s)},p._ssrRegister=d):e&&(d=i?function(t){e.call(this,c(t,this.$root.$options.shadowRoot))}:function(t){e.call(this,u(t))}),d)if(p.functional){var l=p.render;p.render=function(t,e){return d.call(e),l(t,e)}}else{var m=p.beforeCreate;p.beforeCreate=m?[].concat(m,d):[d]}return r}var i=s({render:function(){var t=this,e=t.$createElement,r=t._self._c||e;return t.$fetchState.pending?t._e():r(t.wrapper.component,t._b({tag:"component",class:t.wrapper.class,style:t.wrapper.style},"component",t.wrapper.propsData,!1),[r(t.component.is,t._b({tag:"component",scopedSlots:t._u([{key:"default",fn:function(){return[t._v("\n "+t._s(t.crumbs)+"\n ")]},proxy:!0}],null,!1,2189858211)},"component",t.component.propsData,!1))],1)},staticRenderFns:[]},undefined,{name:"DruxtBreadcrumb",mixins:[r.DruxtComponentMixin],props:{home:{type:Boolean,default:!0}},fetch:async function(){await this.fetchCrumbs(),await r.DruxtComponentMixin.fetch.call(this)},data:function(){return{crumbs:[]}},computed:Object.assign({},n.mapState({route:function(t){return t.druxtRouter.route},routes:function(t){return t.druxtRouter.routes}})),watch:{$route:async function(){await this.$fetch()}},methods:Object.assign({},{fetchCrumbs:async function(){if(this.route&&Object.keys(this.route).length&&("/"!==this.$route.path||this.home)){var t=[{text:this.route.label}];if("/"!==this.$route.path){var e=this.$route.path.split("/").filter(String);for(e.pop();e.length>0;){var r="/"+e.join("/"),n=void 0;try{n=await this.getRoute(r)}catch(t){n=!1}n.label&&t.push({to:r,text:n.label}),e.pop()}this.home&&t.push({to:"/",text:"Home"}),this.crumbs=t.reverse()}else this.crumbs=t}}},n.mapActions({getRoute:"druxtRouter/getRoute"})),druxt:function(t){return{componentOptions:[["default"]],propsData:{crumbs:t.vm.crumbs}}}},undefined,false,undefined,!1,void 0,void 0,void 0),u=s({render:function(){var t=this.$createElement;return(this._self._c||t)("DruxtBreadcrumb")},staticRenderFns:[]},undefined,{name:"DruxtBlockSystemBreadcrumbBlock",mixins:[o.DruxtBlocksBlockMixin]},undefined,false,undefined,!1,void 0,void 0,void 0),a=Object.freeze({__proto__:null,DruxtBreadcrumb:i,DruxtBlockSystemBreadcrumbBlock:u}),c={props:{crumbs:{type:Array,require:!0}}};return t.DruxtBlockSystemBreadcrumbBlock=u,t.DruxtBreadcrumb=i,t.DruxtBreadcrumbComponents=a,t.DruxtBreadcrumbMixin=c,t.default=function(t){if(void 0===this.options||!this.options.druxt)throw new TypeError("Druxt settings missing.");var r=this.options.druxt;r.breadcrumb=Object.assign({},{home:!0},r.breadcrumb),this.addPlugin({src:e.resolve(__dirname,"../nuxt/plugin.js"),fileName:"druxt-breadcrumb.js",options:r})},t}({},path,druxt,vuex,druxtBlocks); | ||
var DruxtBreadcrumb=function(t,e,r,n,o){"use strict";function u(t,e,r,n,o,u,i,s,a,c){"boolean"!=typeof i&&(a=s,s=i,i=!1);var d,l="function"==typeof r?r.options:r;if(t&&t.render&&(l.render=t.render,l.staticRenderFns=t.staticRenderFns,l._compiled=!0,o&&(l.functional=!0)),n&&(l._scopeId=n),u?(d=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),e&&e.call(this,a(t)),t&&t._registeredComponents&&t._registeredComponents.add(u)},l._ssrRegister=d):e&&(d=i?function(t){e.call(this,c(t,this.$root.$options.shadowRoot))}:function(t){e.call(this,s(t))}),d)if(l.functional){var f=l.render;l.render=function(t,e){return d.call(e),f(t,e)}}else{var h=l.beforeCreate;l.beforeCreate=h?[].concat(h,d):[d]}return r}var i=u({},undefined,{name:"DruxtBreadcrumb",extends:r.DruxtModule,props:{home:{type:Boolean,default:!0}},fetch:async function(){await this.fetchCrumbs(),await r.DruxtModule.fetch.call(this)},data:function(){return{crumbs:[]}},computed:Object.assign({},n.mapState({route:function(t){return t.druxtRouter.route},routes:function(t){return t.druxtRouter.routes}})),watch:{$route:async function(){await this.$fetch()}},methods:Object.assign({},{fetchCrumbs:async function(){if(this.route&&Object.keys(this.route).length&&("/"!==this.$route.path||this.home)){var t=[];if(this.route.label&&t.push({text:this.route.label}),"/"!==this.$route.path){var e=this.$route.path.split("/").filter(String);for(e.pop();e.length>0;){var r="/"+e.join("/"),n=void 0;try{n=await this.getRoute(r)}catch(t){n=!1}n.label&&t.push({to:r,text:n.label}),e.pop()}this.home&&t.push({to:"/",text:"Home"}),this.crumbs=t.reverse()}else this.crumbs=t}},getScopedSlots:function(){var t=this,e={default:function(){return t.$createElement("ul",t.crumbs.map((function(e){return t.$createElement("li",[e.to?t.$createElement("NuxtLink",{props:{to:e.to}},[e.text]):e.text])})))}};return this.$scopedSlots.default&&(e.default=function(e){return t.$scopedSlots.default(Object.assign({},t.$options.druxt.propsData(t),e))}),e}},n.mapActions({getRoute:"druxtRouter/getRoute"})),druxt:{componentOptions:function(t){return[["default"]]},propsData:function(t){return{crumbs:t.crumbs}}}},undefined,undefined,undefined,!1,void 0,void 0,void 0),s=u({render:function(){var t=this.$createElement;return(this._self._c||t)("DruxtBreadcrumb")},staticRenderFns:[]},undefined,{name:"DruxtBlockSystemBreadcrumbBlock",mixins:[o.DruxtBlocksBlockMixin]},undefined,false,undefined,!1,void 0,void 0,void 0),a=Object.freeze({__proto__:null,DruxtBreadcrumb:i,DruxtBlockSystemBreadcrumbBlock:s}),c={props:{crumbs:{type:Array,require:!0}}};return t.DruxtBlockSystemBreadcrumbBlock=s,t.DruxtBreadcrumb=i,t.DruxtBreadcrumbComponents=a,t.DruxtBreadcrumbMixin=c,t.default=function(t){if(void 0===this.options||!this.options.druxt)throw new TypeError("Druxt settings missing.");var r=this.options.druxt;r.breadcrumb=Object.assign({},{home:!0},r.breadcrumb),this.addPlugin({src:e.resolve(__dirname,"../nuxt/plugin.js"),fileName:"druxt-breadcrumb.js",options:r})},t}({},path,druxt,vuex,druxtBlocks); |
@@ -40,5 +40,3 @@ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var path=require('path'),druxt=require('druxt'),vuex=require('vuex'),druxtBlocks=require('druxt-blocks');/** | ||
}); | ||
};// | ||
/** | ||
};/** | ||
* The `<DruxtBreadcrumb />` Vue.js component. | ||
@@ -52,3 +50,3 @@ * | ||
mixins: [druxt.DruxtComponentMixin], | ||
extends: druxt.DruxtModule, | ||
@@ -80,10 +78,6 @@ /** | ||
await this.fetchCrumbs(); | ||
// Fetch theme component. | ||
await druxt.DruxtComponentMixin.fetch.call(this); | ||
await druxt.DruxtModule.fetch.call(this); | ||
}, | ||
/** | ||
* Vue.js Data object. | ||
* | ||
* @property {objects[]} crumbs - The Breadcrumbs. | ||
@@ -127,5 +121,6 @@ */ | ||
// Current route crumb. | ||
var crumbs = [{ | ||
text: this.route.label | ||
}]; | ||
var crumbs = []; | ||
if (this.route.label) { | ||
crumbs.push({ text: this.route.label }); | ||
} | ||
@@ -167,2 +162,30 @@ // If we are at the root of the site, stop here. | ||
this.crumbs = crumbs.reverse(); | ||
}, | ||
/** | ||
* Provides the scoped slots object for the Module render function. | ||
* | ||
* The `default` slot renders crumbs as as list of NuxtLink's. | ||
* | ||
* @return {ScopedSlots} The Scoped slots object. | ||
*/ | ||
getScopedSlots: function getScopedSlots() { | ||
var this$1 = this; | ||
// Build scoped slots for each field. | ||
var scopedSlots = {}; | ||
// Build default slot. | ||
scopedSlots.default = function () { return this$1.$createElement('ul', this$1.crumbs.map(function (crumb) { return this$1.$createElement('li', [ | ||
crumb.to | ||
? this$1.$createElement('NuxtLink', { props: { to: crumb.to }}, [crumb.text]) | ||
: crumb.text | ||
]); } | ||
)); }; | ||
if (this.$scopedSlots.default) { | ||
scopedSlots.default = function (attrs) { return this$1.$scopedSlots.default(Object.assign({}, this$1.$options.druxt.propsData(this$1), | ||
attrs)); }; | ||
} | ||
return scopedSlots | ||
}}, | ||
@@ -180,12 +203,10 @@ | ||
*/ | ||
druxt: function (ref) { | ||
var vm = ref.vm; | ||
druxt: { | ||
componentOptions: function (ref) { return [['default']]; }, | ||
propsData: function (ref) { | ||
var crumbs = ref.crumbs; | ||
return ({ | ||
componentOptions: [['default']], | ||
propsData: { | ||
crumbs: vm.crumbs | ||
} | ||
}); | ||
}, | ||
return ({ crumbs: crumbs }); | ||
} | ||
}, | ||
};function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) { | ||
@@ -268,4 +289,2 @@ if (typeof shadowMode !== 'boolean') { | ||
/* template */ | ||
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.$fetchState.pending)?_c(_vm.wrapper.component,_vm._b({tag:"component",class:_vm.wrapper.class,style:(_vm.wrapper.style)},'component',_vm.wrapper.propsData,false),[_c(_vm.component.is,_vm._b({tag:"component",scopedSlots:_vm._u([{key:"default",fn:function(){return [_vm._v("\n "+_vm._s(_vm.crumbs)+"\n ")]},proxy:true}],null,false,2189858211)},'component',_vm.component.propsData,false))],1):_vm._e()}; | ||
var __vue_staticRenderFns__ = []; | ||
@@ -277,5 +296,5 @@ /* style */ | ||
/* module identifier */ | ||
var __vue_module_identifier__ = "data-v-8983a4ae"; | ||
var __vue_module_identifier__ = "data-v-1e40a024"; | ||
/* functional template */ | ||
var __vue_is_functional_template__ = false; | ||
var __vue_is_functional_template__ = undefined; | ||
/* style inject */ | ||
@@ -290,3 +309,3 @@ | ||
var __vue_component__ = /*#__PURE__*/normalizeComponent( | ||
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, | ||
{}, | ||
__vue_inject_styles__, | ||
@@ -331,4 +350,4 @@ __vue_script__, | ||
/* template */ | ||
var __vue_render__$1 = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DruxtBreadcrumb')}; | ||
var __vue_staticRenderFns__$1 = []; | ||
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DruxtBreadcrumb')}; | ||
var __vue_staticRenderFns__ = []; | ||
@@ -352,3 +371,3 @@ /* style */ | ||
var __vue_component__$1 = /*#__PURE__*/normalizeComponent( | ||
{ render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 }, | ||
{ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, | ||
__vue_inject_styles__$1, | ||
@@ -355,0 +374,0 @@ __vue_script__$1, |
{ | ||
"name": "druxt-breadcrumb", | ||
"version": "0.7.2", | ||
"version": "0.8.0", | ||
"description": "Provides a Breadcrumb Vue component to be used within a Druxt (DRUpal nuXT) project.", | ||
@@ -16,3 +16,7 @@ "repository": { | ||
], | ||
"author": "Stuart Clark <stuart@realityloop.com> (realityloop.com)", | ||
"author": { | ||
"name": "Stuart Clark", | ||
"email": "stuart@realityloop.com", | ||
"url": "https://realityloop.com" | ||
}, | ||
"license": "MIT", | ||
@@ -48,5 +52,5 @@ "bugs": { | ||
"dependencies": { | ||
"codecov": "^3.8.1", | ||
"druxt": "^0.4.1", | ||
"druxt-blocks": "^0.8.0", | ||
"codecov": "^3.8.2", | ||
"druxt": "^0.6.0", | ||
"druxt-blocks": "^0.9.0", | ||
"druxt-router": "^0.18.0", | ||
@@ -53,0 +57,0 @@ "vuex": "^3.6.0" |
@@ -6,2 +6,3 @@ # DruxtJS Breadcrumb | ||
[![codecov](https://codecov.io/gh/druxt/druxt-breadcrumb/branch/develop/graph/badge.svg)](https://codecov.io/gh/druxt/druxt-breadcrumb) | ||
[![npm](https://badgen.net/npm/v/druxt-breadcrumb)](https://www.npmjs.com/package/druxt-breadcrumb) | ||
@@ -20,3 +21,3 @@ > Provides a Breadcrumb Vue.js component to be used within a Druxt (DRUpal nuXT) project. | ||
## Usage | ||
### Nuxt.js | ||
@@ -37,2 +38,34 @@ Add module to `nuxt.config.js` | ||
## Usage | ||
### DruxtBreadcrumb component | ||
The DruxtBreadcrumb component uses the Vue Router and DruxtRouter to build a list of crumbs. | ||
```vue | ||
<DruxtBreadcrumb /> | ||
``` | ||
The crumbs can be themed by providing a default scoped slot: | ||
```vue | ||
<DruxtBreadcrumb> | ||
<template #default="{ crumbs }"> | ||
{{ crumbs }} | ||
</template> | ||
</DruxtBreadcrumb> | ||
``` | ||
The DruxtBreadcrumb also provide a DruxtWrapper component for theming: | ||
```vue | ||
<!-- DruxtBreadcrumbDefault.vue --> | ||
<template> | ||
<div> | ||
<slot /> | ||
<div> | ||
</template> | ||
``` | ||
See the [DruxtBreadcrumb API documentation](https://breadcrumb.druxtjs.org/api/components/DruxtBreadcrumb.html) for more information. | ||
## Options | ||
@@ -42,7 +75,7 @@ | ||
These options are available to all Druxt modules. | ||
These options are available to all Druxt modules, in the `nuxt.config.js` file. | ||
| Option | Type | Required | Default | Description | | ||
| --- | --- | --- | --- | --- | | ||
| `axios` | `object` | No | `{}` | [Axios instance settings](https://github.com/axios/axios#axioscreateconfig). | | ||
| `baseUrl` | `string` | Yes | `null` | Base URL for the Drupal installation. | | ||
| `druxt.axios` | `object` | No | `{}` | [Axios instance settings](https://github.com/axios/axios#axioscreateconfig). | | ||
| `druxt.baseUrl` | `string` | Yes | `null` | Base URL for the Drupal installation. | |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
30666
744
78
+ Added@babel/helper-string-parser@7.25.7(transitive)
+ Added@babel/helper-validator-identifier@7.25.7(transitive)
+ Added@babel/parser@7.25.7(transitive)
+ Added@babel/types@7.25.7(transitive)
+ Addeddruxt@0.6.1(transitive)
+ Addeddruxt-blocks@0.9.2(transitive)
+ Addeddruxt-entity@0.14.2(transitive)
+ Addedscule@0.1.1(transitive)
- Removed@babel/helper-string-parser@7.24.8(transitive)
- Removed@babel/helper-validator-identifier@7.24.7(transitive)
- Removed@babel/parser@7.25.6(transitive)
- Removed@babel/types@7.25.6(transitive)
- Removeddruxt-blocks@0.8.1(transitive)
- Removeddruxt-entity@0.10.1(transitive)
Updatedcodecov@^3.8.2
Updateddruxt@^0.6.0
Updateddruxt-blocks@^0.9.0