Moving panels in Angular Dashboard layout component
18 Nov 20185 minutes to read
In addition to drag-and-drop interactions, panels can be moved and repositioned programmatically within the Dashboard Layout. This is achieved using the movePanel method. The method is invoked as follows,
movePanel(id, row, col)Where,
-
id- ID of the panel to be moved. -
row- New row position for the panel. -
col- New column position for the panel.
Each time a panel’s position is changed (either programmatically or through UI interaction), the Dashboard Layout’s change event is triggered.
The following sample demonstrates how to move a panel programmatically to a new position in the Dashboard Layout’s created event.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { DashboardLayoutModule } from '@syncfusion/ej2-angular-layouts'
import { Component, ViewEncapsulation, ViewChild } from '@angular/core';
import { DashboardLayoutComponent } from '@syncfusion/ej2-angular-layouts';
@Component({
imports: [DashboardLayoutModule],
standalone: true,
selector: 'app-root',
template: `
<div class="control-section">
<ejs-dashboardlayout id='defaultLayout' #defaultLayout [columns]='columns' [cellSpacing]='cellSpacing' [panels]='panels'
(created)="onCreated($this)" (change)="onChange($this)">
</ejs-dashboardlayout>
</div>`,
encapsulation: ViewEncapsulation.None
})
export class AppComponent {
@ViewChild('defaultLayout') dashboardLayout?: DashboardLayoutComponent;
public cellSpacing: number[] = [10, 10];
public columns: number = 5;
public panels: any = [
{ 'sizeX': 1, 'sizeY': 1, 'row': 0, 'col': 0, content: '<div class="content">0</div>' },
{ 'sizeX': 3, 'sizeY': 2, 'row': 0, 'col': 1, content: '<div class="content">1</div>' },
{ 'sizeX': 1, 'sizeY': 3, 'row': 0, 'col': 4, content: '<div class="content">2</div>' },
{ 'sizeX': 1, 'sizeY': 1, 'row': 1, 'col': 0, content: '<div class="content">3</div>' },
{ 'sizeX': 2, 'sizeY': 1, 'row': 2, 'col': 0, content: '<div class="content">4</div>' },
{ 'sizeX': 1, 'sizeY': 1, 'row': 2, 'col': 2, content: '<div class="content">5</div>' },
{ 'sizeX': 1, 'sizeY': 1, 'row': 2, 'col': 3, content: '<div class="content">6</div>' },
];
$this: any;
//Dashboard Layout's created event function
onCreated(args: any) {
// movePanel("id", row, col)
this.dashboardLayout?.movePanel("layout_0", 1, 0);
}
//Dashboard Layout's change event function
onChange(args: any) {
console.log("Change event triggered");
}
}@import "node_modules/@syncfusion/ej2-base/styles/material3.css";
@import 'node_modules/@syncfusion/ej2-angular-base/styles/material3.css';
@import 'node_modules/@syncfusion/ej2-angular-layouts/styles/material3.css';
.control-section {
margin: 0 auto;
width: 500px;
}
#defaultLayout {
padding: 10px;
}
#defaultLayout .e-panel .e-panel-container {
vertical-align: middle;
font-weight: 600;
font-size: 20px;
text-align: center;
}
.content {
line-height: 90px;
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Refer to our Angular Dashboard Layout feature tour page for its groundbreaking feature representations. Also explore our Angular Dashboard Layout example to learn how to present and manipulate data.