angular-gridster2
Angularjs 1.x version Demo
Install
npm install angular-gridster2@1.x --save
Then import the following in your HTML:
<link rel="stylesheet" href="node_modules/angular-gridster2/dist/gridster.css"/>
<script src="node_modules/angular-gridster2/dist/gridster.js"></script>
Include 'angular-gridster2' as a dependency of your module like this:
var module = angular.module("app", ["angular-gridster2"]);
Usage
Default usage:
<gridster options="vm.options">
<gridster-item item="item" ng-repeat="item in vm.dashboard"></gridster-item>
</gridster>
Expects a scope setup(options object is optional):
var vm = this;
vm.options = {
gridType: 'fit',
itemChangeCallback: itemChange,
margin: 10,
outerMargin: true,
draggable: {
enabled: true,
stop: eventStop
},
resizable: {
enabled: true,
stop: eventStop
}
};
vm.dashboard = [
{cols: 2, rows: 1, y: 0, x: 0},
{cols: 2, rows: 2, y: 0, x: 2},
{cols: 1, rows: 1, y: 0, x: 4},
{cols: 1, rows: 1, y: 0, x: 5},
{cols: 2, rows: 1, y: 1, x: 0},
{cols: 1, rows: 1, y: 1, x: 4},
{cols: 1, rows: 2, y: 1, x: 5},
{cols: 1, rows: 3, y: 2, x: 0},
{cols: 2, rows: 1, y: 2, x: 1},
{cols: 1, rows: 1, y: 2, x: 3},
{cols: 1, rows: 1, y: 3, x: 4, initCallback: function(item){}}
];
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.
Default Grid Options:
import {GridsterConfig} from './gridsterConfig.interface';
export const GridsterConfigService: GridsterConfig = {
gridType: 'fit',
fixedColWidth: 250,
fixedRowHeight: 250,
keepFixedHeightInMobile: false,
compactType: 'none',
mobileBreakpoint: 640,
minCols: 1,
maxCols: 100,
minRows: 1,
maxRows: 100,
defaultItemCols: 1,
defaultItemRows: 1,
maxItemCols: 50,
maxItemRows: 50,
minItemCols: 1,
minItemRows: 1,
margin: 10,
outerMargin: true,
scrollSensitivity: 10,
scrollSpeed: 20,
initCallback: undefined,
itemChangeCallback: undefined,
itemResizeCallback: undefined,
itemInitCallback: undefined,
enableEmptyCellClickDrag: false,
emptyCellClickCallback: undefined,
emptyCellDropCallback: undefined,
draggable: {
enabled: false,
ignoreContentClass: 'gridster-item-content',
ignoreContent: false,
dragHandleClass: 'drag-handler',
stop: undefined,
start: undefined
},
resizable: {
enabled: false,
handles: {
s: true,
e: true,
n: true,
w: true,
se: true,
ne: true,
sw: true,
nw: true
},
stop: undefined,
start: undefined
},
swap: true,
pushItems: false,
displayGrid: 'onDrag&Resize',
disableWindowResize: false
};
Gridster options api
this.options.api.resize();
this.options.api.optionsChanged();
this.options.api.getNextPossiblePosition(item: GridsterItem);
Gridster item options:
export interface GridsterItem {
x?: number;
y?: number;
rows?: number;
cols?: number;
initCallback?: Function;
dragEnabled?: boolean;
resizeEnabled?: boolean;
maxItemRows?: number;
minItemRows?: number;
maxItemCols?: number;
minItemCols?: number;
}
Gridster Item Events
broadcasts 'gridster-item-change'
// triggered when a item cols,rows, x ,y changed
broadcasts 'gridster-item-resize'
// triggered when a item width/height changed
Note: When a item changes cols/rows both events get triggered
Via Constant
You can also override the default configuration by modifying the gridsterConfig
constant
angular.module('app').run(['gridsterConfig', function(GridsterConfig) {
GridsterConfig.gridType = 'fit';
}]);
Contributing
Install dependencies
npm install
Please respect the formatting in .editorconfig and .eslintrc
Gulp task
gulp serve
License
The MIT License
Copyright (c) 2017 Tiberiu Zuld