Skip to content
menu

DruxtMenu

View source on GitHub

Modules

DruxtMenu

The DruxtMenu component renders a Drupal menu using either the default Drupal content menus, or the full menu via the JSON:API Menu Items module.

Typedefs

ComponentOptions : Array.<array>

Provides the available naming options for the Wrapper component.

ModuleSettings : object

Provides settings for the Menu module, via the nuxt.config.js druxt.menu or the Wrapper component druxt object.

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

DruxtMenu

The DruxtMenu component renders a Drupal menu using either the default Drupal content menus, or the full menu via the JSON:API Menu Items module.

Example

<DruxtMenu name="main" />

Example (DruxtMenu Wrapper component boilerplate)

<template>
  <DruxtDebug :json="items" />
</template>

<script>
import { DruxtMenuMixin } from 'druxt-menu'
export default {
  mixins: [DruxtMenuMixin]
}

Example (DruxtMenu with template injection)

<DruxtMenu>
  <template #default="{ items }">
    <!-- Do whatever you want here -->
    <DruxtDebug :json="items" />
  </template>
</DruxtMenu>

.getMenuItems([entity], [position])

Recursively gets required menu items from the Vuex store.

Kind: instance method of DruxtMenu

ParamTypeDescription
[entity]objectCurrent menu item entity.
[position]numberCurrent position in the menu tree,

.props

Kind: static property of DruxtMenu


.depth : number

The depth of the menu items to render.

Kind: static property of props
Default: 0
Example

<DruxtMenu :depth="1" />

.itemClass : string

Class(es) to apply to the menu items.

Kind: static property of props


.itemComponent : string

Component or element to render the menu items.

Kind: static property of props
Default: "li"


.maxDepth : number

The maximum depth of the menu tree data to load.

Kind: static property of props
Example

<DruxtMenu :max-depth="4" />

.minDepth : number

The minimum depth of the menu tree.

Kind: static property of props
Default: 0
Example

<DruxtMenu :min-depth="2" />

.name : string

The name of the menu to load and render.

Kind: static property of props
Default: "main"
Example

<DruxtMenu name="main" />

.parentId : string

The menu parent ID to use as the root of the menu.

Kind: static property of props
Example

<DruxtMenu parent-id="views_view:views.recipes.page_1" />

.parentClass : string

Class(es) to apply to parent menu items.

Kind: static property of props


.parentComponent : string

Component or element to render parent menu items.

Kind: static property of props
Default: "li"


.parentWrapperClass : string

Class(es) to apply to a wrapper around parent menu items.

Kind: static property of props


.parentWrapperComponent : string

Component or element to render a wrapper around parent menu items.

Kind: static property of props
Default: "ul"


.langcode : string

The resource langcode.

Kind: static property of props
Default: "undefined"
Example

<DruxtMenu 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

<DruxtMenu 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

<DruxtMenu
  :wrapper="{
    component: 'MyWrapper',
    class: 'wrapper',
    propsData: { foo: 'bar' }
  }"
/>

.items : Array.<object>

The Menu items.

Kind: static property of props


.computed

Kind: static property of DruxtMenu


.items : Array.<objects>

Deprecated: in druxt-menu:0.11.0 and is removed from druxt-menu:1.0.0. Use the model property (v-model) instead.

The processed Menu items.

Kind: static property of computed
See: https://druxtjs.org/modules/menu/deprecations


.trail : Array.<string>

The active route trail.

Kind: static property of computed


.watch

Kind: static property of DruxtMenu


.entities()

Updates menu when available Entities change.

Kind: static method of watch


.druxt

DruxtModule settings.

Kind: static property of DruxtMenu


.template

Druxt development template tool configuration.

Kind: static property of druxt


.componentOptions(context) ⇒ ComponentOptions

Provides the available component naming options for the Druxt Wrapper.

Kind: static method of druxt

ParamTypeDescription
contextobjectThe module component ViewModel.

.fetchData()

Builds and executes the JSON:API query, loading the menu items into the druxtMenu Vuex store.

Kind: static method of druxt


.propsData(context) ⇒ PropsData

Provides propsData for the DruxtWrapper.

Kind: static method of druxt

ParamTypeDescription
contextobjectThe module component ViewModel.

.settings()

Component settings.

Kind: static method of druxt


.slots() ⇒ ScopedSlots

Provides the scoped slots object for the Module render function.

Adds a default slot that will render the menu tree using the DruxtMenuItem component.

Kind: static method of druxt
Returns: ScopedSlots - The Scoped slots object.
Example (DruxtMenuName.vue)

<template>
  <div>
    <slot />
  </div>
</template>

.error()

Sets the component to render a DruxtDebug error message.

Kind: instance method of DruxtMenu


.getModuleComponents() ⇒ Components

Get list of module wrapper components.

Kind: instance method of DruxtMenu


.getModulePropsData() ⇒ object

Get module propsData via modules druxt.propsData() callback.

Kind: instance method of DruxtMenu
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 DruxtMenu


.getWrapperData(component) ⇒ WrapperData

Get wrapper component data.

Kind: instance method of DruxtMenu

ParamTypeDescription
componentstringThe Wrapper component name.

.methods

Kind: static property of DruxtMenu


.data()

Kind: static method of DruxtMenu
Properties

NameTypeDescription
componentComponentDataThe wrapper component and propsData to be rendered.
modelobjectThe model object.

.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 DruxtMenu
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 DruxtMenu
Returns: string - The current language code.


ComponentOptions : Array.<array>

Provides the available naming options for the Wrapper component.

Kind: global typedef
Example

[
  'DruxtMenu[Name][Langcode]',
  'DruxtMenu[Name]',
  'DruxtMenu[Default][Langcode]',
  'DruxtMenu[Default]',
]

Example (Main menu (default))

[
  'DruxtMenuMainEn',
  'DruxtMenuMain',
  'DruxtMenuDefaultEn',
  'DruxtMenuDefault',
]

ModuleSettings : object

Provides settings for the Menu module, via the nuxt.config.js druxt.menu or the Wrapper component druxt object.

Kind: global typedef

ParamTypeDescription
fieldsArray.<string>An array of fields to filter all JSON:API Menu queries.
requiredOnlybooleanWhether to automatically filter to module defined minimum required fields.

Example

{
  fields: [],
  requiredOnly: true,
}

Example

<script>
export default {
  druxt: {
    query: {
      fields: ['description', 'options']
      requiredOnly: false,
    },
  }
}

PropsData : object

Provides propsData for use in the Wrapper component.

Kind: global typedef

ParamTypeDescription
itemsArray.<object>The Menu items structured data.
valueArray.<object>The Menu items structured data.

Example

{
  items: [
    {
      children: [],
      entity: {},
    },
  ],
  value: [
    {
      children: [],
      entity: {},
    },
  ],
}

ScopedSlots : object

Provides scoped slots for use in the Wrapper component.

Kind: global typedef

ParamTypeDescription
defaultfunctionAll menu items using the DruxtMenuItem component

Example (DruxtMenuName.vue)

<template>
  <div>
    <slot />
  </div>
</template>

Components : Array.<object>

Kind: global typedef
Properties

NameTypeDescription
globalbooleanComponent global registration state.
namestringThe component name.
partsArray.<string>The component naming parts.

Example

[{
  global: true,
  pascal: 'DruxtTestModuleWrapper',
  parts: ['Wrapper'],
}]

ComponentData : object

Kind: global typedef
Properties

NameTypeDefaultDescription
$attrsobjectpropsData not registered by the Wrapper component.
isstring"DruxtWrapper"The Wrapper component name.
optionsArray.<string>The Wrapper component options.
propsobjectpropsData registered by the Wrapper component.
propsDataobjectThe component propsData object.
settingsobjectDruxt 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

NameTypeDescription
druxtobjectDruxt settings object for use by Druxt module.
propsobjectRegistered props oject.

Example

{
  druxt: { fooBar: true },
  props: {
    foo: {
      type: String,
      default: '',
    }
  }
}