Core plugins
To extend the potential of micro-lc, Mia-Platform created some configurable plugins called core plugins.
These plugins are open source and can be deployed using the console with low effort.
microlc-element-composer
This plugin is publicly available on GitHub and
can be used to compose the UI of your page, with the precondition that each piece has been made as custom-elements.
The layout can be composed using rows and columns: it will be adaptive thanks to the flex layout.
In addition to the properties that you can configure for each custom-element,
the plugin always injects the 3 following properties:
eventBus: an RxJS's Subject used as communication channel between components;currentUser: an object which may represent the session currently authenticated user;headers: an object made of standard/custom HTTP headers, which may propagate cookies and other helpful settings to manage frontend HTTP calls.
type
- type: string;
 - enum: 
row,column,element; - required: 
true; - description: type of object to render.
 
tag
  This property is mandatory only for element type.
- type: string;
 - required: 
false; - description: tag of the custom element to render.
 
url
  This property is considered only for element type.
- type: string;
 - required: 
false; - description: URL of the entry point used to register and boot the custom element.
 
attributes
- type: object;
 - required: 
false; - description: attributes injection for the DOM element.
 
properties
- type: object;
 - required: 
false; - description: properties injection for the DOM element.
 
busDiscriminator
  This property is considered only for element type.
- type: string;
 - required: 
false; - description: Event bus discriminator, used to create a dedicated communication channel.
By default, is injected the general communication channel. 
content
- type: object;
 - required: 
false; - description: the definition of the children components. This field makes this structure recursive.
 
Structure example
{
  "type": "row",
  "content": [{
    "type": "column",
    "attributes": {
      "style": "width: 89%",
    },
    "content": [{
      "type": "element",
      "tag": "button",
      "url": "https://your-host.com/your/component/entry.js",
      "properties": {
        "property-a": "value-a"
      }
    }]
  }]
}