Issue #2486Opened January 2, 2020by andrewryan190612 reactions

How do I add a trait to all existing component types?

Question

I want to go through all existing component types and add a trait to the model-> defaults and can't figure out how to do this. According to the documentation, I should be able to (in my plugin):

// now - traits that should be on every component - base characteristics that we want to apply
  domComponents.getTypes().map(type => {

    domComponents.addType(type.id, {

      model: {
        defaults: {

          traits: [
            {
              label: 'Allow editing in pages',
              name: 'allow_editing_in_pages',
              type: 'checkbox'
            }
          ]
        }
      }

    })
  });

But this overrides the traits array, which removes the existing traits, which isn't what I want. My next step was to try to get the old traits and concat them with my new ones - but I can't figure out how to pull the default traits for each type in order to do this.

How can I append a trait to all (or some) component types?

Answers (1)

pouyamiralayiJanuary 3, 202012 reactions

@andrewryan1906 for pulling the default traits:

domComponents.getType(type.id).model.prototype.defaults.traits

so your traits definition would be like below:

traits: [
    ...domComponents.getType(type.id).model.prototype.defaults.traits,
    {
        label: 'Allow editing in pages',
        name: 'allow_editing_in_pages',
        type: 'checkbox'
    }
]

cheers!

Related Questions and Answers

Continue research with similar issue discussions.

Paid Plugins That Match This Issue

Curated by issue keywords and label relevance to help you ship faster.

View all plugins

Loading paid plugin recommendations...

Browse Plugin Categories

Jump directly to plugin category pages on the marketplace.