Templates

Whenever you add a new No-Code Component to Config.components the end-users can start adding its instances to a canvas. It's done via a template picker that is displayed after user clicks on a plus button or a blue placeholder.

The template picker shows a list of templates allowed in this particular slot (defined by a schema property of type component or component-collection). Under the hood each template is represented by a very simple object:

{
    id: "template_1", // unique id
    label: "My Super Template", // label displayed in UI (optional)
    thumbnail: thumbnail_url // URL to the thumbnail image (optional)
    entry: { ... } // no-code entry
}

All the available templates are stored in a Config.templates array.

When you add a new component to Config.components and don't specify any templates for this component, Easyblocks will create a single default template and set all the values to the default ones. Whenever you specify at least a one template in Config.templates for your component, the default template will be gone.

Working with templates

The best way to work with templates is as follows:

  1. Add a default template of your component to the canvas. Beware, it usually looks very bad.

  2. Use Easyblocks Editor to make it look good.

  3. Click 5 times on a header bar (it unlocks "developer mode").

  4. Select your component instance, click "Copy entry" at the bottom of the sidebar. You just copied the No-Code Entry of your new component.

  5. Add a new template to the Config.templates and paste the entry to the entry property of your template.

The best way to understand how it all works is too see the video:

Template picker types

There are 3 built-in template picker widgets available in Easyblocks:

  • large - 2 cards in a row, good for sections

  • large-3 - 3 cards in a row, good for cards

  • compact (default) - good for smaller items like stack elements, buttons, etc.

The picker widget can be set as a part of component or component-collection schema property:

const componentDefinition = {
  // ...
  schema: [
    // ...
    {
      prop: "Card1",
      type: "component",
      required: false,
      picker: "large-3", // picker property allows for changing picker widget
    },
  ],
};

Last updated