Product Promotion
0x5a.live
for different kinds of informations and explorations.
GitHub - tiberiuzuld/angular-gridster2: Angular gridster 2
Angular gridster 2. Contribute to tiberiuzuld/angular-gridster2 development by creating an account on GitHub.
Visit SiteGitHub - tiberiuzuld/angular-gridster2: Angular gridster 2
Angular gridster 2. Contribute to tiberiuzuld/angular-gridster2 development by creating an account on GitHub.
Powered by 0x5a.live 💗
angular-gridster2
Angular implementation of angular-gridster Demo
Requires Angular 18.x
For other Angular versions check the other branches.
Browser support
What Angular supports here
Install
npm install angular-gridster2 --save
How to use
import {Component} from '@angular/core';
import {GridsterComponent, GridsterItemComponent} from 'angular-gridster2';
@Component({
standalone: true,
imports: [GridsterComponent, GridsterItemComponent],
...
})
<gridster [options]="options">
@for (item of dashboard; track item) {
<gridster-item [item]="item">
<!-- your content here -->
</gridster-item>
}
</gridster>
Initialize a simple dashboard:
import { GridsterConfig, GridsterItem } from 'angular-gridster2';
options: GridsterConfig;
dashboard: Array<GridsterItem>;
static itemChange(item, itemComponent) {
console.info('itemChanged', item, itemComponent);
}
static itemResize(item, itemComponent) {
console.info('itemResized', item, itemComponent);
}
ngOnInit() {
this.options = {
itemChangeCallback: AppComponent.itemChange,
itemResizeCallback: AppComponent.itemResize,
};
this.dashboard = [
{cols: 2, rows: 1, y: 0, x: 0},
{cols: 2, rows: 2, y: 0, x: 2}
];
}
changedOptions() {
this.options.api.optionsChanged();
}
removeItem(item) {
this.dashboard.splice(this.dashboard.indexOf(item), 1);
}
addItem() {
this.dashboard.push({});
}
Note: The gridster will take all the available space from the parent. It will not size depending on content. The parent of the component needs to have a size.
Having iFrame in widgets content
iFrames can interfere with drag/resize of widgets. For a workaround please read this issue #233
Interact with content without dragging
Option 1 (without text selection):
<gridster-item>
<div (mousedown)="$event.stopPropagation()" (touchstart)="$event.stopPropagation()">Some content to click without dragging the widget</div>
<div class="item-buttons">
<button class="drag-handler">
<md-icon>open_with</md-icon>
</button>
<button class="remove-button" (click)="removeItem($event, item)" (touchstart)="removeItem($event, item)">
<md-icon>clear</md-icon>
</button>
</div>
</gridster-item>
Option 2 (with text selection):
<gridster-item>
<div class="gridster-item-content">Some content to select and click without dragging the widget</div>
<div class="item-buttons">
<button class="drag-handler">
<md-icon>open_with</md-icon>
</button>
<button class="remove-button" (click)="removeItem($event, item)" (touchstart)="removeItem($event, item)">
<md-icon>clear</md-icon>
</button>
</div>
</gridster-item>
Contributors here
License
The MIT License
Copyright (c) 2024 Tiberiu Zuld
Angular Resources
are all listed below.
Learn how to build apps with modern reactive and declarative code
resource
~/modernangular.com
resource
Ultimate Angular™ - Learn Everything You Need To Master Angular
resource
~/ultimatecourses.com
resource
angular | Software Development » Web Development » Javascript | Gumroad
resource
~/gumroad.com
resource
GitHub - Jaspero/ng-slider: A light slider with no external dependencies
resource
~/github.com
resource
AG Grid: High-Performance React Grid, Angular Grid, JavaScript Grid
resource
~/www.ag-grid.com
resource
GitHub - fundsaccess/angular-iban: IBAN directives and pipes for Angular
resource
~/github.com
resource
GitHub - ngneat/reactive-forms: (Angular Reactive) Forms with Benefits 😉
resource
~/github.com
resource
GitHub - iamguid/ngx-mf: Bind your model types to angular FormGroup type
resource
~/github.com
resource
Made with ❤️
to provide different kinds of informations and resources.