0.9.4 • Published 5 years ago

@sergioblanco86/ngx-nestable v0.9.4

Weekly downloads
2
License
MIT
Repository
-
Last release
5 years ago

ngx-nestable modified

Nestable list for Angular4 and beyond. This is a Angular adaptation of Jquery Nestable library. Demo This version has been modified to fit special necesities. The nested property 'children' has been chaged for 'properties'. Once you run NPM INSTALL then go to node_modules/ng-packagr, delete de node_modules folder, open package.json and remove all the ^ and ~ and then run NPM INSTALL here. There's an issue with this package.

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, 'properties': [
        { 'id': 3 },
        { 'id': 4 },
        {
          'expanded': false,
          'id': 5, 'properties': [
            { '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.properties && row.item.properties.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

License

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

Acknowledgments

0.9.4

5 years ago

0.9.3

5 years ago

0.9.2

5 years ago

0.9.1

5 years ago