@collection
The @collection decorator can be used in a ConditionBlock to mark a property that is a reference to a Collection.Item of a Collection.Provider that is defined in a related NodeBlock. For example, let's say you have a dropdown block that has a collection of dropdown options and a condition block that verifies if a certain option from that dropdown is selected. The option you want to verify in the ConditionBlock originates from the dropdown Collection.Provider in the NodeBlock. This decorator helps to specify this connection.
When this decorator is applied to a property, the property automatically becomes part of the form definition. This means you don't need to apply the @definition decorator that is normally used to indicate that a property is part of the form definition.
Decorator type
Property ℹ️
Applies to
Decorator signature
@collection(reference: string, mode?: "rw" | "r" | "w")
Decorator parameters
| Name | Type | Optional | Description |
|---|---|---|---|
reference | string | No | Specifies the property name of the Collection.Provider in the NodeBlock prefixed with a # |
mode | "rw" | "r" | "w" | Yes | Specifies the operation mode for the property in the form definition. It can be one of the following values: - rw: Reads and writes the property from/to the definition (this is the default mode);- r: Only reads the property from the definition;- w: Only writes the property to the definition. |
Example
import { tripetto, affects, collection, ConditionBlock } from "@tripetto/builder";
@tripetto({
type: "condition",
identifier: "dropdown-condition",
context: DropdownBlock,
label: "Dropdown condition",
icon: "data:image/svg+xml;base64,PHN2ZyAvPg=="
})
class DropdownConditionBlock extends ConditionBlock {
// In this example there is a `NodeBlock` with the name `DropdownBlock`. It has
// a property `options` which is a collection of `DropdownOption` instances.
@collection("#options")
@affects("#name")
option: DropdownOption | undefined;
get name() {
return this.option ? this.option.name : "Nothing selected";
}
}