Giter VIP home page Giter VIP logo

sog-web / ng-sortgrid Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kreuzerk/ng-sortgrid

0.0 1.0 0.0 7.13 MB

๐Ÿง A grid that allows you to sort all items via drag & drop. Items can be sorted in all directions (โ†•๏ธ and โ†”๏ธ). You can also select and sort multiple items at the same time by pressing ctrl and click on the item.

Home Page: https://kreuzerk.github.io/ng-sortgrid/

License: MIT License

JavaScript 2.75% TypeScript 82.94% HTML 10.60% CSS 3.72%

ng-sortgrid's Introduction

Travis build badge codecov angular9

Ng-sortgrid

Logo

Grid demo

Demo

Getting started

Download the module

npm i -s ng-sortgrid

Import the NgsgModule in your AppModule.

  import {NgsgModule} from 'ng-sortgrid'
  ...
  @NgModule({
    imports: [BrowserModule, NgsgModule],
    //...
  })  
  ...

Apply the directive

Loop over your elements with *ngFor. ๐Ÿ›Ž๏ธ the items needs to be an array. Alternate you can also use the async pipe to pass in your items.

Grid demo

Apply the ngSortgridItem directive

Grid demo

React on changes

In most cases you are interested in the new sort order. Often you want to store them in local storage or even send them to the backend. To do so the following two steps are needed in addition to the "Getting started" step.

Pass your items to the directive via the ngSortGridItems input.

Grid demo React on the 'sorted' output event. The sorted output event emits a NgsgOrderChange which contains the previousOrder and the currentOrder

Grid demo

Group sortgrids

In case you have more than one sortgriditem on the page you need to group the sortgriditems to avoid dropping drags from one group in another group. Pass in a unique name to the ngSortGridGroup input

Grid demo

Use the async pipe

You can also use the async pipe to display items

Grid demo

Style your items on different events

The ng-sortgrid adds different classes on different events to your items. You can either use those classes to style the appereance of your items on certain events or you can include the build in CSS from the ng-sortgrid library.

Integrate the build in CSS

To integrate the built in Stylesheet just import in in your angular.json.

    "styles": [
              "node_modules/ng-sortgrid/styles/ngsg.css",
            ],

Alternative you can provide custom styles for the different classes listed bellow

Class Description
ng-sg-placeholder This class is added to the placeholder item which previews where the item is inserted
ng-sg-dropped This class is added as soon after you drop an item. The class will be on the item for 500 milliseconds before it gets removed
ng-sg-selected This class is added when you press the CMD or the Ctrl Key and Click on an item. It indicates which items are selected for the multi drag&drop

Scrolling

The ng-sortgrid has a autoScroll flag which you can use to enable autoScroll. If you enable autoScroll the screen will start to scroll in the following scenario.

Grid demo

  • If you drag an element in the top 50px of the screen
  • If you drag an element in the bottom 50px of the screen

Custom scroll points

Sometimes its not enough to onyl scroll once you drag over the top view port border. Imagine that you have a fixed navbar at the top of your page. In this case you need to scroll once you drag an element over the navbar.

Scroll speed (default 50)

The scrollSpeed property accepts a number and allows you to specify the scrolling speed.

Check out the scroll demo

API

Inputs

Value Description Default
ngSortGridGroup: string Groups a grid - avoids that items from one grid can be dragged to another grid undefined
ngSortGridItems: any[] Sort grid items. Pass down a list of all your items. This list is needed to enable the sorting feature. undefined
autoScroll: boolean Flag to enable autoscrolling false
scrollPointTop: number Custom top scrollpoint in pixels if autoscroll is applied we start scrolling if we pass the top border
scrollPointBottom: number Custom bottom scrollpoint in pixels if autoscroll is applied we start scrolling if we pass the bottom border
scrollSpeed: number Scrollspeed, the higher the value, the higher we scroll. 50 - only applies if autoscrolling is on

Outputs

Value Description Default
sorted: EventEmitter<NgsgOrderChange Emits an event after we sorted the items, each event is of type NgsgOrderChange. The NgsgOrderChange contains the previousOrder and the currentOrder undefined

ng-sortgrid's People

Contributors

dependabot[bot] avatar kreuzerk avatar semantic-release-bot avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.