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>
Initialize a simple dashboard:
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}
];
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:
var GridsterConfigService = {
gridType: 'fit',
fixedColWidth: 250,
fixedRowHeight: 250,
keepFixedHeightInMobile: false,
keepFixedWidthInMobile: 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,
minItemArea: 1,
maxItemArea: 2500,
margin: 10,
outerMargin: true,
scrollSensitivity: 10,
scrollSpeed: 20,
initCallback: undefined,
itemChangeCallback: undefined,
itemResizeCallback: undefined,
itemInitCallback: undefined,
enableEmptyCellClick: false,
enableEmptyCellContextMenu: false,
enableEmptyCellDrop: false,
enableEmptyCellDrag: false,
emptyCellClickCallback: undefined,
emptyCellContextMenuCallback: undefined,
emptyCellDropCallback: undefined,
emptyCellDragCallback: undefined,
emptyCellDragMaxCols: 50,
emptyCellDragMaxRows: 50,
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,
pushResizeItems: 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;
minItemArea?: number;
maxItemArea?: 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