ProductPromotion
Logo

Angular.JS

made by https://0x3d.site

GitHub - skutam/angular-drag-drop-layout: Angular Drag Drop Layout is a lightweight, dependency-free Angular library for creating highly customizable, responsive grid layouts with drag-and-drop functionality. Built with Angular 18 and utilizing Angular Signals, this library provides a seamless and optimized experience for building dynamic and interactive layouts.
Angular Drag Drop Layout is a lightweight, dependency-free Angular library for creating highly customizable, responsive grid layouts with drag-and-drop functionality. Built with Angular 18 and util...
Visit Site

GitHub - skutam/angular-drag-drop-layout: Angular Drag Drop Layout is a lightweight, dependency-free Angular library for creating highly customizable, responsive grid layouts with drag-and-drop functionality. Built with Angular 18 and utilizing Angular Signals, this library provides a seamless and optimized experience for building dynamic and interactive layouts.

GitHub - skutam/angular-drag-drop-layout: Angular Drag Drop Layout is a lightweight, dependency-free Angular library for creating highly customizable, responsive grid layouts with drag-and-drop functionality. Built with Angular 18 and utilizing Angular Signals, this library provides a seamless and optimized experience for building dynamic and interactive layouts.

Angular drag drop layout

NPM Downloads GitHub Issues or Pull Requests GitHub Issues or Pull Requests NPM License

Angular Drag Drop Layout is a lightweight, dependency-free Angular library for creating highly customizable, responsive grid layouts with drag-and-drop functionality. Built with Angular 18 and utilizing Angular Signals, this library provides a seamless and optimized experience for building dynamic and interactive layouts.

View Demo

Features

  • No External Dependencies: Pure Angular solution with no additional dependencies.
  • Optimized Performance: Built with Angular 18 and Angular Signals for efficient change detection and rendering.
  • Responsive Grid Layout: Flexible CSS grid-based layout that adapts to various screen sizes.
  • Draggable Items: Easily move items within the grid or between multiple grids.
  • Drag and Drop Between Grids: Supports dragging items from one grid to another with ease.
  • Custom Drag Handles: Assign custom drag handles to control draggable areas within items.

Installation

npm install @skutam/drag-drop-layout

Usage

  1. Import the DragDropLayoutModule in your module.
import { DragDropLayoutModule } from '@skutam/drag-drop-layout';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    DragDropLayoutModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})

export class AppModule { }
  1. Use the ddl-grid and ddl-item components in your template.

<div class="drag-items" ddlDragItems [grids]="[grid]">
  <div ddlDragItem
       class="drag-item"
       [draggable]="true"
       [disabled]="i == 1"
       [width]="2"
       [height]="2"
       [dragData]="i"
       *ngFor="let dragItem of dragItems; let i = index">{{dragItem}}</div>
</div>

<ddl-grid [columns]="columns" #grid class="grid"
          [rows]="rows"
          [colGap]="colGap"
          [rowGap]="rowGap"
          (itemDropped)="itemDropped($event)"
          [(items)]="items">
  <ddl-item *ngFor="let item of items; trackBy: itemTrackBy" [resizeTypes]="resizeTypes">
    <div class="item-info">{{item.id}} [{{item.x}},{{item.y}}] ({{item.width}},{{item.height}})</div>
    <span class="item-info-data">{{item.data}}</span>
    <div ddlDragHandle class="drag-handle">Handle</div>
  </ddl-item>
</ddl-grid>
  1. Define the grid and items in your component.
import { Component } from '@angular/core';
import { Item, ResizeType, GridItemDroppedEvent } from '@skutam/drag-drop-layout';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  public columns = 12;
  public rows: number = 4;
  public colGap: number = 20;
  public rowGap: number = 20;

  public items: Item[] = [
    new Item(null, 6, 2, 2, 2, 'Item 0 | TOP'),
    new Item(null, 2, 2, 2, 1, 'Item 1 | TOP'),
    new Item(null, 11, 3, 1, 2, 'Item 2 | TOP'),
  ];

  public resizeTypes: ResizeType[] = ['bottom-right', 'right', 'top-left', 'left', 'bottom-left', 'top', 'bottom', 'top-right'];
  public dragItems: string[] = ['Item 1', 'Item 2', 'Item 3'];

  public itemDropped(event: GridItemDroppedEvent): void {
    console.log(event);
  }

  protected readonly itemTrackBy = itemTrackBy;
  protected readonly RESIZE_TYPES: ResizeType[] = ['top-left', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left'];
}

Development

  1. Clone the repository
git clone [email protected]:skutam/angular-drag-drop-layout.git
cd angular-drag-drop-layout
  1. Install the dependencies
npm install
  1. Start the watch mode for the library
npm run watch:lib
  1. Serve the demo application
npm run serve:client

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory