Skip to content

Commit e7a124c

Browse files
Interfaces for Drag and Drop events
1 parent 51c4277 commit e7a124c

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

app.css

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ button:active {
9191
box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.26);
9292
padding: 1rem;
9393
margin: 1rem;
94+
background: white;
9495
}
9596

9697
.projects li h2 {

index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
</form>
2828
</template>
2929
<template id="single-project">
30-
<li>
30+
<li draggable="true">
3131
<h2></h2>
3232
<h3></h3>
3333
<p></p>

src/app.ts

+29-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
// Drag & Drop interfaces
2+
interface Draggable {
3+
dragStartHandler(event: DragEvent): void;
4+
dragEndHandler(event: DragEvent): void;
5+
}
6+
7+
interface DragTarget {
8+
dragOverHandler(event: DragEvent): void;
9+
dropHandler(event: DragEvent): void;
10+
dragLeaveHandler(event: DragEvent): void;
11+
}
12+
113
// Project Type
214
enum ProjectStatus {
315
Active,
@@ -160,7 +172,10 @@ abstract class Component<T extends HTMLElement, U extends HTMLElement> {
160172
}
161173

162174
//Project Item Class
163-
class ProjectItem extends Component<HTMLUListElement, HTMLLIElement> {
175+
class ProjectItem
176+
extends Component<HTMLUListElement, HTMLLIElement>
177+
implements Draggable
178+
{
164179
private project: Project;
165180

166181
get persons() {
@@ -179,7 +194,19 @@ class ProjectItem extends Component<HTMLUListElement, HTMLLIElement> {
179194
this.renderContent();
180195
}
181196

182-
configure(): void {}
197+
@AutoBind
198+
dragStartHandler(event: DragEvent): void {
199+
console.log(event);
200+
}
201+
202+
dragEndHandler(_: DragEvent): void {
203+
console.log("drag end");
204+
}
205+
206+
configure(): void {
207+
this.element.addEventListener("dragstart", this.dragStartHandler);
208+
this.element.addEventListener("dragend", this.dragEndHandler);
209+
}
183210

184211
renderContent(): void {
185212
this.element.querySelector("h2")!.textContent = this.project.title;

0 commit comments

Comments
 (0)