Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ngx-nestable

Package Overview
Dependencies
Maintainers
4
Versions
29
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-nestable

Nestable list with drag and drop for Angular

  • 0.9.4
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
1K
decreased by-8.86%
Maintainers
4
Weekly downloads
 
Created
Source

Angular Nestable List

ngx-nestable

Nestable list for Angular4 and beyond. This is a Angular adaptation of Jquery Nestable library. Demo

Features

  • Drag and Drop
  • Sorting
  • Events (drag, drop, over, out) // TODO
  • Nesting
  • Touch support // TODO

Instalation

npm i ngx-nestable --save

Implementation

app.module.ts

import { NestableModule } from 'ngx-nestable';

@NgModule({
  imports: [NestableModule],
  bootstrap: [AppComponent]
})
export class AppModule {}

app.component.ts

  public options = {
    fixedDepth: true
  } as NestableSettings;
  public list = [
    { 'id': 1 },
    {
      'expanded': true,
      'id': 2, 'children': [
        { 'id': 3 },
        { 'id': 4 },
        {
          'expanded': false,
          'id': 5, 'children': [
            { 'id': 6 },
            { 'id': 7 },
            { 'id': 8 }
          ]
        },
        { 'id': 9 },
        { 'id': 10 }
      ]
    },
    { 'id': 11 }
  ];

app.html

  <ngx-nestable [(list)]="list" [options]="options" [template]="itemTemplate">
  </ngx-nestable>
  
  <ng-template #itemTemplate let-row>
    <button mat-icon-button [ngxNestableDragHandle]="row">
      <mat-icon>drag_handle</mat-icon>
    </button>
    
    <button mat-icon-button *ngIf="row.item.children && row.item.children.length; else empty_item" [ngxNestableExpandCollapse]="row">
      <mat-icon>{{row.item.$$expanded ? 'keyboard_arrow_down' : 'keyboard_arrow_right'}}
      </mat-icon>
    </button>
    
    <div>Item: {{row.item.id}}</div>
  </ng-template>

  <ng-template #empty_item>
    <span style="width: 40px"></span>
  </ng-template>

API

Inputs

NameTypeDefaultDescirption
listArrayItems which will be displayed in tree
templateTemplateRefHTML template for tree item. Inside this template you can place directives (ngxNestableDragHandle and ngxNestableExpandCollapse). That will describe the custom look and position of these elements. Otherwise, the default functions are applied.
options
NameTypeDefaultDescirption
fixedDepthbooleanfalseConstaint items to keep their initial depth
maxDepthnumber5Maximum nested depth
thresholdnumber20Distance in px after which horizontal movement (nesting) is applied. Also gives padding to the tree.
disableDragbooleanfalseDisable/enable drag event
templateTemplateRefHTML template for tree item. Inside this template you can place directives (ngxNestableDragHandle and ngxNestableExpandCollapse). That will describe the custom look and position of these elements, otherwise the default functions are applied.

Outputs

NameTypeDescirption
dragvoidEmits event when item drag is started
dropvoidEmits event when item is dropped
disclosurevoidEmits event when item expand/collapse state is changed

Authors

  • Petar Markov - Initial work - Speculees
  • Mihajlo Grubjesic - Initial work - Comi89
  • Zlatomir Darabuc - Initial work - zlaayaa

Thank you

  • Bernardo Peña updates and fixes

License

This project is licensed under the MIT License - see the LICENSE.md file for details

Acknowledgments

Keywords

FAQs

Package last updated on 07 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc