⚡ One runtime · 10 built-in themes · Deep interaction demo
A full TreeListView product playground.
This standalone page is designed for two jobs: a polished online demo for potential customers, and a practical product playground for internal testers. It uses only bm-treelistview.js, a normal HTML page, and the component’s public properties, methods and events.
What this page proves
10 Built-in themes selected through the theme property.
3 Realistic demo datasets for commerce, finance and delivery teams.
Guided Scenario walkthroughs, event log, state snapshot and friendly controls.
1 file Host this as one HTML page beside bm-treelistview.js.
Guided demo scenarios
Switch datasets to show how the same component can handle different business screens without rewriting the UI.
Commerce operations Catalogues, suppliers, stock health, revenue and product actions.
Finance structures Business units, cost centres, controls, risk and monthly values.
Project delivery Programmes, epics, workstreams, ownership, health and milestones.
Large dataset Hundreds of rows for filtering, scrolling, virtual rendering and export checks.
Guided exploration checklist
Use these suggested checks while exploring realistic customer and product-team journeys.
Theme pass Try all built-in themes plus the Custom theme button.
Keyboard pass Use ↑ ↓ ← → Home End Enter Space and * inside the grid.
Column pass Hide/show Supplier, Region, Margin, Notes and Actions.
Lazy-load pass Expand the “Future Launch Lines” or “Pending Initiatives” branch.
Export pass Filter the grid, then export visible rows as CSV.
Reset checklist
Mark all passed
Northwind Commerce Operations
Product hierarchy, suppliers, stock health, revenue, row-level actions, lazy loading, filtering and export.
Send demo feedback
Demo scenario
Commerce operations
Finance structures
Project delivery
Large dataset
Visual theme
Light
Dark
Ocean
Forest
Sunset
Grape
Slate
Executive
Amber
Neon
Custom host theme
Density
Comfortable density
Compact density
Spacious density
Selection
Checkbox selection
Single selection
Multiple selection
No selection
Quick actions
Tree mode
List mode
Expand all
Collapse all
Select highlight row
Clear selection
Export CSV
Theme gallery
Optional: compare all built-in themes as buttons
Light
Dark
Ocean
Forest
Sunset
Grape
Slate
Executive
Amber
Neon
Custom theme
Feature switches
Turn component capabilities on/off for deeper exploration
Filter bar
Selection count
Zebra rows
Hover shadow
Component shadow
Sorting
Column resize
Context menu event
Tabbable actions
Expand on row click
Frozen tree column
Virtualize
Columns, state and diagnostics
Useful for evaluators who want to test the API surface
Toggle supplier/owner
Toggle region
Toggle margin
Toggle notes
Toggle actions
Reset widths
Filter risks
Clear filter
Snapshot state
Restore state
Test loading
Test error
Clear status
Event feed: Waiting for demo initialisation…
Keyboard: ↑ ↓ ← → Home End Enter Space *
Live metrics
Scenario Commerce
Theme Dark
Visible rows 0
Selected 0
Event log
No events yet.
State snapshot
Click “Snapshot state” to inspect the component state.
Plain HTML usage
The demo intentionally uses direct HTML integration so customers can see the smallest possible adoption path.
<script src="./bm-treelistview.js"></script>
<bm-treelistview
id="tree"
theme="dark"
mode="tree"
selection-mode="checkbox"
show-filter="true"
show-footer="true">
</bm-treelistview>
await tree.setData(columns, items);
Features covered
This page exercises the main public surface: properties, methods, events, column metadata, cell kinds, row actions, lazy loading and CSS custom properties.
Themes Density Selection Sorting Filtering Lazy load CSV export ARIA/keyboard State Custom CSS
Custom theme override
The Custom theme button applies a host CSS class and overrides --tlv-* variables. Built-in themes use theme="..."; custom branding uses host CSS.
bm-treelistview.custom-demo-theme {
--tlv-header-bg: linear-gradient(135deg, #7c2d12, #9f1239);
--tlv-node-bg: #fffaf0;
--tlv-node-bg-alt: #ffedd5;
--tlv-node-hover-bg: #fed7aa;
--tlv-node-selected-bg: #fdba74;
--tlv-focus-ring: #f97316;
}