dees-dashboardgrid
<dees-dashboardgrid>
renders a configurable dashboard layout with draggable and resizable tiles. The component is now grouped in its own folder alongside supporting utilities and styles.
Key Features
- Pointer-driven drag and resize interactions with keyboard fallbacks (arrow keys to move,
Shift
+ arrows to resize).
- Collision-aware placement that swaps compatible tiles or displaces blocking tiles into the next free slot.
- Context menu (right-click on a tile header) that exposes destructive actions such as tile removal via
dees-contextmenu
.
- Layout persistence helpers via
getLayout()
, setLayout(...)
, and the layout-change
event.
- Responsive presets through the
layouts
map and applyBreakpointLayout(...)
helper to hydrate per-breakpoint arrangements.
Public API Highlights
Property |
Description |
widgets |
Array of tile descriptors (DashboardWidget ). |
columns |
Number of grid columns. |
layouts |
Optional record of named layout definitions. |
activeBreakpoint |
Name of the currently applied breakpoint layout. |
editable |
Toggles drag/resize affordances. |
Method |
Description |
addWidget(widget, autoPosition?) |
Adds a tile, optionally auto-placing it into the next free slot. |
removeWidget(id) |
Removes a tile and emits widget-remove . |
applyBreakpointLayout(name) |
Applies a layout from the layouts map. |
getLayout() / setLayout(layout) |
Retrieve or apply persisted layouts. |
compact(direction?) |
Densifies the grid vertically (default) or horizontally. |
Event |
Detail payload |
widget-move |
{ widget, displaced, swappedWith } |
widget-resize |
{ widget, displaced, swappedWith } |
widget-remove |
{ widget } |
layout-change |
{ layout } |
Usage Notes
- Right-click a tile header to open the contextual menu and delete the tile.
- When resizing, blocking tiles will automatically reflow into free space once the interaction completes.
- Listen to
layout-change
to persist layouts to storage; rehydrate using setLayout
or the layouts
map.
- For responsive dashboards, populate
grid.layouts = { base: [...], mobile: [...] }
and call applyBreakpointLayout
based on your own breakpoint logic (see the co-located demo for an example).
Demo
The updated dees-dashboardgrid.demo.ts
showcases live breakpoint switching, layout persistence, and the context menu. Run the demo gallery to explore the interactions end-to-end.