name: List
attributes:
mode: [normal|group|tree]
fast: "boolean — virtual scrolling"
collapsible: "boolean — collapsible tree nodes"
auto-select: "boolean — clicked item id -> selectedItem"
auto-select-group: "boolean — clicked group id -> selectedGroup"
idfield: id
labelfield: label
summaryfield: summary
groupidfield: id
grouplabelfield: label
groupsummaryfield: summary
groupfield: group
parentfield: parent
state:
list: 'Array of item objects. Declarative form: `$.state.list="users"`.'
groups: 'Array of group objects when mode=group. Declarative form: `$.state.groups="groups"`.'
filter: String or object filter.
order: Field name, `-name`, or `name desc`.
selectedItem: Selected item id (written by auto-select).
selectedGroup: Selected group id (written by auto-select-group).
properties:
filterFunc: Custom item predicate.
orderFunc: Custom sorting comparator.
events:
change:
detail: selectedItem
itemclick:
detail: "{ item, index }"
groupclick:
detail: "{ item, index }"
slots:
item: Replace the complete item row.
item-actions: Render at the right side of every item row.
group-actions: Render at the right side of every group row.
rules:
- With fast, a custom item row must retain list-group-item and $onupdate.
- Use event.stopPropagation() for action controls that must not select the row.
- 'Non-default field mapping is declarative: `idfield="key" labelfield="title" summaryfield="desc"`.'
examples: |
data_shape:
item: "{ id, label, summary }"
group: "{ id, label, summary }"
tree_item: "{ id, label, summary, parent }"
tests:
- List.test.html