Skip to content

Drupal Display Mode-powered Entity, Form and Field Druxt components.

DruxtEntity

View source on GitHub

DruxtEntity

The DruxtEntity component renders a Drupal Content Entity by JSON:API resource type, UUID, view mode and schema type.

Fields are rendered as DruxtField components, based on the Drupal display mode configuration.

See

Example

<DruxtEntity
  type="node--article"
  :uuid="uuid"
  mode="teaser"
/>

Example (DruxtEntity with v-model)

<template>
  <DruxtEntity v-model="model" type="node--article" :uuid="uuid" />
</template>

<script>
export default {
  data: () => ({ model: undefined }),
}
</script>

Example (DruxtEntity Wrapper component boilerplate)

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

<script>
import { DruxtEntityMixin } from 'druxt-entity'
export default {
  mixins: [DruxtEntityMixin]
}
</script>

Example (DruxtEntity default slot (template injection))

<DruxtEntity type="" uuid="">
  <template #default="{ entity }">
    <!-- Do whatever you want here -->
    <DruxtDebug :json="entity" />
  </template>
</DruxtEntity>

.getQuery(settings) ⇒ boolean | object

Builds the query for the JSON:API request.

Kind: instance method of DruxtEntity
Returns: boolean | object - The DrupalJsonApiParams query object.

ParamTypeDescription
settingsModuleSettingsThe merged module and component settings object.

.isEmpty(value) ⇒ boolean

Checks if an Entity field is empty.

Kind: instance method of DruxtEntity
Returns: boolean - true if the field value is empty.

ParamTypeDescription
value*Field value.

.error(err, [context])

Sets the component to render a DruxtDebug error message.

Kind: instance method of DruxtEntity

ParamTypeDescription
errobjectThe error object.
[context]objectError context; carries the wrapper component data where the failure knows it.

.getModuleComponents() ⇒ Components

Get list of module wrapper components.

Kind: instance method of DruxtEntity


.getModulePropsData(wrapperProps) ⇒ object

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

Kind: instance method of DruxtEntity

ParamTypeDescription
wrapperPropsobjectProps registered by the Wrapper component.

Example

{
  $attrs: { entity: {}, fields: {}, langcode: 'en', schema: {} },
  props: { value: {} },
  propsData: { entity: {}, fields: {}, langcode: 'en', schema: {}, value: {} },
}

.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 DruxtEntity


.getWrapperData(component) ⇒ WrapperData

Get wrapper component data.

Kind: instance method of DruxtEntity

ParamTypeDescription
componentstringThe Wrapper component name.

.props

Kind: static property of DruxtEntity


.mode : string

Drupal display mode.

Kind: static property of props
Default: "default"


.settings : ModuleSettings

Module settings object.

Kind: static property of props
Default: {}


.schemaType : 'view' | 'form'

Drupal display schema type, 'view' or 'form'.

Kind: static property of props


.type : string

JSON:API resource type.

Kind: static property of props


.uuid : boolean | string

Entity UUID.

Kind: static property of props
Default: false


.langcode : string

The resource langcode.

Kind: static property of props
Example

@lang vue
<DruxtEntity langcode="en" />

.v-model : mixed

The Vue.js v-model binding for the module.

Setting a value provides the module data directly, so the Drupal JSON:API fetch is skipped.

Kind: static property of props
Default:
Example

@lang vue
<template>
  <DruxtEntity v-model="model" />
</template>

<script>
export default {
  data: () => ({ model: { foo: 'bar' } })
}
</script>

.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

<DruxtEntity
  :wrapper="{
    component: 'BCard',
    class: 'article-card',
    propsData: { noBody: true }
  }"
/>

.computed

Kind: static property of DruxtEntity


.entity ⇒ object

The Entity object.

Kind: static property of computed
Returns: object - A copy of the entity model, containing the JSON:API attributes, relationships and included resource data.

ParamTypeDescription
vmobjectThe component ViewModel.
vm.modelobjectThe model object.

.fields ⇒ object

Entity fields based on Display mode.

Kind: static property of computed
Returns: object - Field objects keyed by field ID, each containing the field's schema, value, errors and relationship status.

ParamTypeDescription
vmobjectThe component ViewModel.
vm.errorsArray.<object>Form submission response errors, if any.
vm.isEmptyfunctionChecks if an Entity field is empty.
vm.langstringThe current language code.
vm.modelobjectThe model object.
vm.schemaobjectThe DruxtSchema object.
vm.schemaType'view' | 'form'Drupal display schema type, 'view' or 'form'.

.druxt

DruxtModule settings

Kind: static property of DruxtEntity


.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.
context.modestringThe Drupal display mode.
context.schemaobjectThe DruxtSchema object.
context.schemaType'view' | 'form'Drupal display schema type, 'view' or 'form'.
context.typestringThe JSON:API resource type.

.fetchConfig()

Fetches the Druxt schema object.

Kind: static method of druxt


.fetchData(settings)

Fetches the content entity JSON:API resource.

Kind: static method of druxt

ParamTypeDescription
settingsobjectThe module settings object, including the resource query configuration.

.propsData(context) ⇒ PropsData

Provides propsData for the DruxtWrapper.

Kind: static method of druxt

ParamTypeDescription
contextobjectThe module component ViewModel.
context.fieldsobjectEntity fields based on the display mode.
context.modelobjectThe model object.
context.schemaobjectThe DruxtSchema object.

.settings(context, wrapperSettings) ⇒ object

Component settings.

Kind: static method of druxt
Returns: object - The merged module settings.

ParamTypeDescription
contextobjectThe module component ViewModel.
wrapperSettingsobjectSettings provided by the Wrapper component.

.slots(h) ⇒ ScopedSlots

Provides the scoped slots object for the Module render function.

A scoped slot is provided for each field being rendered, as per the current display mode.

Additionally, the default slot will render all fields as per the Drupal display mode configuration.

Kind: static method of druxt
Returns: ScopedSlots - The Scoped slots object.

ParamTypeDescription
hfunctionThe Vue createElement function.

Example (DruxtEntityResourceType.vue)

<template>
  <div>
    <slot name="content" />
    <slot :name="field_name" />
  </div>
</template>

.data(vm)

Provides the reactive entity model and display schema state.

Kind: static method of DruxtEntity

ParamTypeDescription
vmobjectThe component ViewModel.
vm.typestringThe JSON:API resource type.
vm.valueobjectThe Vue.js v-model value. If set, it provides the entity data directly and the JSON:API fetch is skipped.

Properties

NameTypeDescription
modelobjectThe model object.
schemaobjectThe DruxtSchema object.

.methods

Kind: static property of DruxtEntity


.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 DruxtEntity
Example (Manually invoking DruxtModule.fetch().)

import DruxtModule from 'druxt/components/DruxtModule.vue'
export default {
  name: 'DruxtCustomModule',
  extends: DruxtModule,
  async fetch() {
    await DruxtModule.fetch.call(this)
  },
  druxt: {
    componentOptions: () => ([['Default']]),
    propsData: ({ model }) => ({ value: model }),
  }
}

.lang(vm) ⇒ 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 DruxtEntity
Returns: string - The current language code.

ParamTypeDescription
vmobjectThe component ViewModel.
vm.langcodestringThe langcode prop.
vm.$routeobjectThe current route.

ComponentOptions : Array.<array>

Provides the available naming options for the Wrapper component.

Kind: global typedef
See: Component resolution
Example

[
  'DruxtEntity[ResourceType][DisplayMode][SchemaType][Langcode]',
  'DruxtEntity[ResourceType][DisplayMode][SchemaType]',
  'DruxtEntity[EntityType][DisplayMode][SchemaType][Langcode]',
  'DruxtEntity[EntityType][DisplayMode][SchemaType]',
  'DruxtEntity[ResourceType][DisplayMode][Langcode]',
  'DruxtEntity[ResourceType][DisplayMode]',
  'DruxtEntity[EntityType][DisplayMode][Langcode]',
  'DruxtEntity[EntityType][DisplayMode]',
  'DruxtEntity[ResourceType][Langcode]',
  'DruxtEntity[ResourceType]',
  'DruxtEntity[EntityType][Langcode]',
  'DruxtEntity[EntityType]',
  'DruxtEntity[DisplayMode][Langcode]',
  'DruxtEntity[DisplayMode]',
]

Example (Article Node (default))

[
  'DruxtEntityNodeArticleDefaultViewEn',
  'DruxtEntityNodeArticleDefaultView',
  'DruxtEntityNodeDefaultViewEn',
  'DruxtEntityNodeDefaultView',
  'DruxtEntityNodeArticleDefaultEn',
  'DruxtEntityNodeArticleDefault',
  'DruxtEntityNodeDefaultEn',
  'DruxtEntityNodeDefault',
  'DruxtEntityNodeArticleEn',
  'DruxtEntityNodeArticle',
  'DruxtEntityNodeEn',
  'DruxtEntityNode',
  'DruxtEntityDefaultEn',
  'DruxtEntityDefault',
]

ModuleSettings : object

Provides settings for the Entity module, via the nuxt.config.js druxt.entity, the Wrapper component druxt object or the DruxtEntity component settings property.

Kind: global typedef

ParamTypeDescription
queryobjectEntity query settings:
query.bypassCacheboolean | functionWhether to pull the data from the Vuex store or from the JSON:API.
query.fieldsArray.<string> | Array.<array>An array or arrays of fields to filter from the JSON:API Resources.
query.includeArray.<string>An array of relationships to include alongside the JSON:API Resource.
query.schemabooleanWhether to automatically detect fields to filter, per the Display mode.

Example (DruxtEntity Wrapper component)

<script>
export default {
  druxt: {
    query: {
      bypassCache: ({ $store }) => $store.$auth.loggedIn,
      fields: [['title'], ['user--user', ['display_name']]],
      include: ['uid'],
      schema: true,
    },
  },
}
</script>

Example (DruxtEntity component with settings)

<template>
  <DruxtEntity
    type="node--article"
    :uuid="uuid"
    :settings="{
      query: {
        bypassCache: true,
        fields: [['title'], ['user--user', ['display_name']]],
        include: ['uid'],
        schema: true,
      }
    }"
  />
</template>

PropsData : object

Provides property data for use in the Wrapper component.

Kind: global typedef

ParamTypeDescription
entityobjectThe Drupal Entity JSON:API resource data.
fieldsobjectDrupal Entity Fields data.
schemaobjectDruxtJS Schema object.
valueobjectThe Entity value.

Example

{
  entity: {
    attributes: {},
    id: '43118086-cca5-4c62-b11e-f1d870050ebd',
    links: {},
    relationships: {},
    type: 'node--article',
  },
  fields: {
    body: {},
    field_media_image: {},
    field_tags: {},
  },
  schema: {
    config: {},
    fields: {},
    groups: {},
    id: 'node--article--default--view',
    resourceType: 'node--article',
  },
  value: {},
}

ScopedSlots : object

Provides scoped slots for use in the Wrapper component.

Kind: global typedef

ParamTypeDescription
*functionSlot per field.
defaultfunctionAll fields per Display mode.

Example (DruxtEntityResourceType.vue)

<template>
  <div>
    <slot name="content" />
    <slot :name="field_name" />
  </div>
</template>

Inherited type definitions

Inherited from DruxtModule: ComponentData, Components, WrapperData.