DruxtBlockRegion
View source on GitHubModules
- DruxtBlockRegion
The DruxtBlockRegion component renders visible blocks based on region and theme.
All blocks, including those not visible, are provided as slots for the Druxt Wrapper component.
Typedefs
- ComponentOptions :
Array.<array> Provides the available naming options for the Wrapper component.
- PropsData :
object Provides propsData for use in the Wrapper component.
- ScopedSlots :
object Provides scoped slots for use in the Wrapper component.
- Components :
Array.<object> - ComponentData :
object - WrapperData :
object
DruxtBlockRegion
The DruxtBlockRegion component renders visible blocks based on region and theme.
All blocks, including those not visible, are provided as slots for the Druxt Wrapper component.
Example
<DruxtBlockRegion name="header" theme="umami" />
Example (DruxtBlockRegion Wrapper component boilerplate)
<template>
<DruxtDebug :json="blocks" />
</template>
<script>
import { DruxtBlocksRegionMixin } from 'druxt-blocks'
export default {
mixins: [DruxtBlocksRegionMixin]
}
Example (DruxtBlockRegion with template injection)
<DruxtBlock id="umami_branding">
<template #default="{ block }">
<!-- Do whatever you want here -->
<DruxtDebug :json="block" />
</template>
</DruxtBlock>
- DruxtBlockRegion
.isVisible(block) ⇒ boolean
Checks if a given block should be visible.
Uses Request Path visibility details if available with the DruxtRouter.
Kind: instance method of DruxtBlockRegion
| Param | Type | Description |
|---|---|---|
| block | object | The Block entity object. |
.props
Kind: static property of DruxtBlockRegion
.name : string
The Block regions machine name.
Kind: static property of props
Default: "content"
Example
<DruxtBlockRegion name="header" :theme="theme" />
.theme : string
A Drupal theme machine name.
Kind: static property of props
Required:
Example
<DruxtBlockRegion theme="umami" />
.langcode : string
The resource langcode.
Kind: static property of props
Default: "undefined"
Example
<DruxtBlockRegion langcode="en" />
.v-model : mixed
The module component model value.
Used to bypass the Drupal JSON:API fetch, setting the module data directly.
Kind: static property of props
Default: null
Example
<DruxtBlockRegion v-model="{ foo: bar }" />
.wrapper : (boolean | object)
The wrapper component configuration.
Used to set the wrapper component, class, style and propsData.
Kind: static property of props
Default: () => undefined
Example
<DruxtBlockRegion
:wrapper="{
component: 'MyWrapper',
class: 'wrapper',
propsData: { foo: 'bar' }
}"
/>
.blocks : Array.<objects>
The Block JSON:API resources.
Kind: static property of props
Required:
.computed
Kind: static property of DruxtBlockRegion
.route : object
The current Route from the DruxtRouter vuex store.
Kind: static property of computed
.druxt
DruxtModule configuration.
Kind: static property of DruxtBlockRegion
.template
Druxt development template tool configuration.
Kind: static property of druxt
.componentOptions(context) ⇒ ComponentOptions
Provides the available component naming options for the DruxtWrapper.
Kind: static method of druxt
| Param | Type | Description |
|---|---|---|
| context | object | The module component ViewModel. |
.fetchConfig()
Fetches all blocks by region and theme.
Kind: static method of druxt
.propsData(context) ⇒ PropsData
Provides propsData for the DruxtWrapper.
Kind: static method of druxt
| Param | Type | Description |
|---|---|---|
| context | object | The module component ViewModel. |
.slots() ⇒ ScopedSlots
Provides the scoped slots object for the Module render function.
A scoped slot is provided for each block in the region, regardless of visibility.
The default slot will render all blocks, filtered by route visibility.
Kind: static method of druxt
Returns: ScopedSlots - The Scoped slots object.
Example (DruxtBlockRegionName.vue)
<template>
<div v-if="default">
<slot />
</div>
<div v-else>
<slot name="umami_branding" />
</div>
</template>
.data()
Kind: static method of DruxtBlockRegion
Properties
| Name | Type | Description |
|---|---|---|
| blocks | Array.<objects> | The Block JSON:API resources. |
.error()
Sets the component to render a DruxtDebug error message.
Kind: instance method of DruxtBlockRegion
.getModuleComponents() ⇒ Components
Get list of module wrapper components.
Kind: instance method of DruxtBlockRegion
.getModulePropsData() ⇒ object
Get module propsData via modules druxt.propsData() callback.
Kind: instance method of DruxtBlockRegion
Example
{
bar: 'foo',
foo: 'bar',
}
.getScopedSlots() ⇒ object
Gets a Druxt modules scoped slots, and if there's no default slots, provides a develop mode debug default or passes through to a default template.
Kind: instance method of DruxtBlockRegion
.getWrapperData(component) ⇒ WrapperData
Get wrapper component data.
Kind: instance method of DruxtBlockRegion
| Param | Type | Description |
|---|---|---|
| component | string | The Wrapper component name. |
.methods
Kind: static property of DruxtBlockRegion
.fetch()
Loads the Druxt module data and applies a wrapper component as required.
Important: If your component has an existing fetch method, you must manually invoke
the DruxtModule.fetch() hook.
Kind: static method of DruxtBlockRegion
Example (Manually invoking DruxtModule.fetch().)
import DruxtModule from 'druxt/dist/components/DruxtModule.vue'
export default {
name: 'DruxtTestModule',
extends: DruxtModule,
async fetch() {
await DruxtModule.fetch.call(this)
}
druxt: {
componentOptions: () => ([['wrapper']]),
propsData: (ctx) => ({
bar: ctx.bar,
foo: ctx.foo,
}),
}
}
.lang() ⇒ string
The current language code: the langcode prop if set, otherwise the
route's langcode metadata.
Used by Druxt modules to fetch the correct resource translation.
Kind: static method of DruxtBlockRegion
Returns: string - The current language code.
ComponentOptions : Array.<array>
Provides the available naming options for the Wrapper component.
Kind: global typedef
Example
[
'DruxtBlockRegion[Name][Theme][Langcode]',
'DruxtBlockRegion[Name][Theme]',
'DruxtBlockRegion[Name][Langcode]',
'DruxtBlockRegion[Name]',
'DruxtBlockRegion[Default][Langcode]',
'DruxtBlockRegion[Default]',
]
Example (Banner top - Umami)
[
'DruxtBlockRegionBannerTopUmamiEn',
'DruxtBlockRegionBannerTopUmami',
'DruxtBlockRegionBannerTopEn',
'DruxtBlockRegionBannerTop',
'DruxtBlockRegionDefaultEn',
'DruxtBlockRegionDefault',
]
PropsData : object
Provides propsData for use in the Wrapper component.
Kind: global typedef
| Param | Type | Description |
|---|---|---|
| blocks | Array.<object> | The Block JSON:API resources. |
| name | string | The Block regions machine name. |
| theme | string | A Drupal theme machine name. |
Example
{
blocks: [{
attributes: {},
id: '59104acd-88e1-43c3-bd5f-35800f206394',
links: {},
relationships: {},
type: 'block--block',
}],
name: 'banner_top,
theme: 'umami',
}
ScopedSlots : object
Provides scoped slots for use in the Wrapper component.
Kind: global typedef
| Param | Type | Description |
|---|---|---|
| [drupal_internal__id] | function | Slot per block. |
| default | function | All blocks, filtered by route visibility. |
Example (DruxtBlockRegionName.vue)
<template>
<div v-if="default">
<slot />
</div>
<div v-else>
<slot name="umami_branding" />
</div>
</template>
Components : Array.<object>
Kind: global typedef
Properties
| Name | Type | Description |
|---|---|---|
| global | boolean | Component global registration state. |
| name | string | The component name. |
| parts | Array.<string> | The component naming parts. |
Example
[{
global: true,
pascal: 'DruxtTestModuleWrapper',
parts: ['Wrapper'],
}]
ComponentData : object
Kind: global typedef
Properties
| Name | Type | Default | Description |
|---|---|---|---|
| $attrs | object | propsData not registered by the Wrapper component. | |
| is | string | "DruxtWrapper" | The Wrapper component name. |
| options | Array.<string> | The Wrapper component options. | |
| props | object | propsData registered by the Wrapper component. | |
| propsData | object | The component propsData object. | |
| settings | object | Druxt settings object provided by the Wrapper component. |
Example
{
$attrs: { bar: 'foo' },
is: 'DruxtTestModuleWrapper',
options: [
'DruxtTestModuleWrapper',
],
props: { foo: 'bar' },
propsData: {
bar: 'foo',
foo: 'bar',
},
settings: { fooBar: true },
}
WrapperData : object
Kind: global typedef
Properties
| Name | Type | Description |
|---|---|---|
| druxt | object | Druxt settings object for use by Druxt module. |
| props | object | Registered props oject. |
Example
{
druxt: { fooBar: true },
props: {
foo: {
type: String,
default: '',
}
}
}