Embedding web components¶
In this section, we will explain how to change such that each cell in a column is rendered as a web component.
The TableComponent interface¶
Each cell in the table view has a value. When you render a cell as a web component, the value that should be shown in that cell is sent in to the web component instead. This means that the web component that you want to render must have a value
prop defined.
The TableComponent interface contains documentation about all properties that are available (not just value). We recommend that you study that for more information.
We recommend that every component that you create for using in the table view implements this interface.
Example component¶
We will use a custom component called lwc-number-emoji
for this example. The web component will render a flower emoji if value > threshold
See implementation below:
import { Component, Prop } from '@stencil/core';
import { TableComponent } from '@limetech/lime-elements';
@Component({
tag: 'lwc-number-emoji',
shadow: true,
})
export class NumberEmoji implements TableComponent {
@Prop()
public value: number;
@Prop()
public threshold: number = 50;
render() {
return this.value > this.threshold ? '🌻': '⛈️';
}
}
Lime Admin configuration¶
You configure web components for the table view in Lime Admin.
- Open the view editor in Lime Admin.
- Select the table view for a limetype that has a probability property, for instance
business
. - Click on the
Probability
property and edit the fieldName
under the component section. Writelwc-number-emoji
. (See screenshot below) - Click save
Now you should see the table view for business being rendered as this:
Instead of this:
Additional properties¶
You can also set additional attributes on a web component by adding a json object to the Properties field in the component section. If you for instance want to change the value of the threshold in the lwc-number-emoji
component, you can write the following:
{
"threshold": 25
}