Skip to content

Commit 1a9e41d

Browse files
committed
Add .ts files
1 parent 51b6fe9 commit 1a9e41d

File tree

8 files changed

+183
-6
lines changed

8 files changed

+183
-6
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ npm-debug.log
44
# OS generated files
55
Thumbs.db
66
.DS_Store
7-
# Ignored files
8-
*.ts
9-
!*.d.ts
107
#Visual Files
118
bin
129
obj

.npmignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Node generated files
2+
node_modules
3+
npm-debug.log
4+
# OS generated files
5+
Thumbs.db
6+
.DS_Store
7+
# Ignored files
8+
*.ts
9+
!*.d.ts
10+
#Visual Files
11+
bin
12+
obj
13+
Properties
14+
*.config
15+
*.csproj
16+
*.user
17+
18+
gulpfile.js

ng2-gridstack.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './src/gridstack.component';
2+
export * from './src/gridstack.item.directive';

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ng2-gridstack",
3-
"version": "0.1.10",
3+
"version": "0.1.11",
44
"description": "A gridstack component for Angular2",
55
"main": "index.js",
66
"scripts": {

src/gridstack.component.js

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/gridstack.component.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/gridstack.component.ts

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import { Component, EventEmitter, OnInit, Input, Output, ElementRef, Renderer } from '@angular/core';
2+
declare var $: any; // JQuery
3+
declare var _: any; // lodash
4+
5+
6+
@Component({
7+
selector: 'gridStack',
8+
templateUrl: 'gridstack.component.html'
9+
})
10+
11+
export class GridStackComponent{
12+
13+
@Input() w: number;
14+
@Input() animate: boolean;
15+
@Input() buttonClass: string = "";
16+
@Input() allowEditing: boolean = false;
17+
@Input() options: any[];
18+
@Output() addFunction = new EventEmitter<boolean>();
19+
@Output() saveFunction = new EventEmitter<any>();
20+
@Output() deleteFunction = new EventEmitter<boolean>();
21+
@Output() deleteCardFunc = new EventEmitter<number>();
22+
@Input() items: any[];
23+
private isStart = true;
24+
private editing = false;
25+
26+
constructor(private el: ElementRef,
27+
private renderer: Renderer) {
28+
}
29+
30+
ngAfterViewInit() {
31+
let nativeElement = this.el.nativeElement;
32+
33+
$(nativeElement).find(".grid-stack").gridstack(this.options);
34+
35+
}
36+
37+
onItemClick()
38+
{
39+
var grid = $('.grid-stack').data('gridstack');
40+
var element = $(event.target);
41+
if (element.hasClass("grid-stack-item-content")) {
42+
if (!element.hasClass("selected-item")) {
43+
$(".grid-stack-item-content").removeClass("selected-item");
44+
element.addClass("selected-item");
45+
$(".card-management").show();
46+
if (this.allowEditing)
47+
{
48+
this.editing = true;
49+
element.attr("contenteditable", "true");
50+
$('.grid-stack').data('gridstack').disable();
51+
}
52+
}
53+
else {
54+
element.removeClass("selected-item");
55+
$(".card-management").hide();
56+
$('.grid-stack').data('gridstack').enable();
57+
element.attr("contenteditable", "false");
58+
this.editing = false;
59+
}
60+
}
61+
}
62+
63+
addItem() {
64+
if (this.addFunction) {
65+
this.addFunction.emit();
66+
}
67+
}
68+
69+
deletePanel() {
70+
if (this.deleteFunction) {
71+
this.deleteFunction.emit();
72+
}
73+
}
74+
75+
deleteCard() {
76+
var selected = $(this.el.nativeElement).find(".selected-item").parent();
77+
if (this.deleteCardFunc) {
78+
this.deleteCardFunc.emit(selected.attr("data-custom-id"));
79+
$('.grid-stack').data('gridstack').removeWidget(selected);
80+
$(".grid-stack-item-content").removeClass("selected-item");
81+
$(".card-management").hide();
82+
}
83+
}
84+
85+
savePanel() {
86+
if (this.saveFunction) {
87+
//Get cards from view
88+
var jsonItems = _.map($('.grid-stack .grid-stack-item:visible'), function (el) {
89+
el = $(el);
90+
var node = el.data('_gridstack_node');
91+
return {
92+
customid: el.attr('data-custom-id'),
93+
x: node.x,
94+
y: node.y,
95+
width: node.width,
96+
height: node.height,
97+
content: el[0].firstChild.outerText
98+
};
99+
});
100+
this.saveFunction.emit(jsonItems);
101+
}
102+
}
103+
}

src/gridstack.item.directive.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { Directive, ElementRef, Input, Renderer, OnInit } from '@angular/core';
2+
declare var $: any; // JQuery
3+
4+
@Directive({
5+
selector: '[gridStackItem]'
6+
})
7+
8+
export class GridStackItemDirective {
9+
@Input() x: number;
10+
@Input() y: number;
11+
@Input() w: number;
12+
@Input() h: number;
13+
@Input() customid: string;
14+
@Input() content: string;
15+
16+
@Input() minWidth: number;
17+
@Input() canResize: boolean;
18+
19+
private toMake = true;
20+
21+
constructor(
22+
private el: ElementRef,
23+
private renderer: Renderer
24+
) {
25+
renderer.setElementAttribute(el.nativeElement, "class", "grid-stack-item");
26+
}
27+
28+
ngAfterViewInit() {
29+
let renderer = this.renderer;
30+
let nativeElement = this.el.nativeElement;
31+
let cannotResize: string = this.canResize ? "yes" : "no";
32+
33+
let elementText: string = '<div class="grid-stack-item-content">' + (this.content ? this.content : nativeElement.innerHTML) + '</div>';
34+
// TODO: Find the Angular(tm) way to do this ...
35+
nativeElement.innerHTML = elementText;
36+
37+
renderer.setElementAttribute(nativeElement, "data-gs-x", String(this.x));
38+
renderer.setElementAttribute(nativeElement, "data-gs-y", String(this.y));
39+
renderer.setElementAttribute(nativeElement, "data-gs-width", String(this.w));
40+
renderer.setElementAttribute(nativeElement, "data-gs-height", String(this.h));
41+
if (this.customid) {
42+
renderer.setElementAttribute(nativeElement, "data-custom-id", String(this.customid));
43+
}
44+
if (this.minWidth) {
45+
renderer.setElementAttribute(nativeElement, "data-gs-min-width", String(this.minWidth));
46+
}
47+
if (cannotResize == "yes") {
48+
renderer.setElementAttribute(nativeElement, "data-gs-no-resize", cannotResize);
49+
}
50+
51+
var parent = $(this.el.nativeElement).parent();
52+
var grid = parent.data('gridstack');
53+
if (grid && this.toMake) {
54+
grid.makeWidget(this.el.nativeElement);
55+
this.toMake = false;
56+
}
57+
}
58+
}

0 commit comments

Comments
 (0)