This page documents cross-component properties that are not tied to a specific domain.
Visibility and Access¶
| Property | How to set it in Python | YAML placement |
|---|---|---|
required_permissions |
component.set_required_permissions([...]) |
under component props |
show_if |
component.set_show_if(rule) |
under component props |
hide_if |
component.set_hide_if(rule) |
under component props |
See Visibility And Permissions for the full rule contract, binding examples, renderer notes, and nested-spec usage.
Interaction and Runtime¶
| Property | How to set it in Python | YAML placement |
|---|---|---|
action |
component.set_action("module.action", context={...}) |
action: {name: ..., context: {...}} |
onChangeAction + onChangeMode |
component.set_on_change_action("module.action", mode="local") |
onChangeAction, onChangeMode |
track_loading |
component.track_loading("module.action") |
track_loading |
collect_input_ids |
component.collect_input_ids("field_a", "field_b") |
collect_input_ids |
error |
component.set_error("...") |
error |
auto_refresh + on_refresh |
component.set_auto_refresh(20, "module.refresh") |
auto_refresh, on_refresh |
Capabilities API¶
| Method | Effect |
|---|---|
set_capabilities([...]) |
Replaces the exposed capabilities list |
allow("prop.set", ...) |
Adds capability entries |
deny("prop.set", ...) |
Denies capability entries |
mutable_value("value") |
Adds value.set + value.append |
mutable_collection("rows") |
Adds rows.set/append/remove/replace |
interactive() |
Adds visible.set + enabled.set |
Complete Example (Python)¶
import sdk
field = sdk.ui.TextField(
id="username",
label="Username",
value="",
placeholder="Type username",
)
field.set_required_permissions(["system.user.update"])
field.set_show_if({
"mode": "AND",
"conditions": [
{
"left": {"type": "store", "scope": "page", "path": "/can_edit"},
"op": "==",
"right": True,
}
],
})
field.set_hide_if({
"mode": "OR",
"conditions": [
{
"left": {"type": "store", "scope": "page", "path": "/is_archived"},
"op": "==",
"right": True,
}
],
})
field.set_on_change_action("users.filter", mode="search")
field.track_loading("users.filter")
field.allow("value.set", "visible.set", "enabled.set")Complete Example (YAML)¶
- kind: TextField
id: username
label: "Username"
value: ""
placeholder: "Type username"
required_permissions: ["system.user.update"]
show_if:
mode: AND
conditions:
- left:
type: store
scope: page
path: /can_edit
op: "=="
right: true
hide_if:
mode: OR
conditions:
- left:
type: store
scope: page
path: /is_archived
op: "=="
right: true
onChangeAction:
name: users.filter
context:
source: users_table
onChangeMode: search
track_loading: users.filter
capabilities:
- value.set
- visible.set
- enabled.set