Portal Community

Tree Hierarchy

The App Tree displays the full structure of the app in a collapsible/expandable tree:

App (root)
├── AppPage: Leads
│   ├── Pane: header
│   │   ├── Widget: page-title (Text)
│   │   └── Widget: add-lead-btn (Button)
│   └── Pane: main
│       └── Widget: leads-grid (DataGrid)
├── AppPage: Lead Detail  (/leads/:id)
│   ├── Pane: header
│   │   ├── Widget: lead-name (Text)
│   │   └── Widget: back-btn (Button)
│   └── Pane: detail-tabs (Tabs)
│       ├── Pane: info-tab
│       │   └── Widget: lead-form (Form)
│       └── Pane: activity-tab
│           └── Widget: activity-timeline (Timeline)
└── AppPage: Settings
    └── Pane: main
        └── Widget: settings-form (Form)

Navigation and Selection

Context Menu Actions

Right-click any node in the App Tree for context-specific actions:

Node TypeAvailable Actions
App (root)Add Page, App Settings, Publish, Export
AppPageAdd Pane, Rename, Duplicate, Set as Home, Delete
PaneAdd Widget, Rename, Duplicate, Set as Modal, Delete
WidgetRename, Duplicate, Move to Pane, Delete, Open Custom JS

Drag to Reorder

You can drag nodes within the App Tree to reorder or reparent them:

Drag Scope

Dragging respects the hierarchy: a Widget can only be dragged to another Pane, not directly to an AppPage or the App root. Attempting an invalid drop will show a "not allowed" cursor and cancel the operation.

Search in App Tree

For large apps with many pages and widgets, use the search box at the top of the App Tree panel. Type any part of a widget ID or page name to filter the tree to matching nodes.

Tree Icons and Badges

Icon / BadgeMeaning
Page iconAppPage node
Grid iconPane with grid layout
Flex iconPane with flex layout
Modal badgePane configured as a modal overlay
HiddenWidget has a visibleTo restriction
JSWidget has Custom JS attached
ErrorWidget has a configuration error (hover for details)