Skip to content

Commit cfd1bfc

Browse files
committed
Readme updated and code refactored.
1 parent 3479e87 commit cfd1bfc

File tree

3 files changed

+47
-43
lines changed

3 files changed

+47
-43
lines changed

README.md

+12-5
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,21 @@ render{
2323
getPositions={this.getFloatingComponentPosition}
2424
dragItemId={'floating-component-id'}
2525
dragId={'draggable-area-id'}
26+
draggingType="horizontal"
2627
>
27-
<div id="floating-component-id"
28-
<div id="draggable-area-id">
29-
Header
28+
<div id="floating-component-id"
29+
<div id="draggable-area-id">
30+
Header
31+
</div>
3032
</div>
31-
</div>
33+
</CustomDrag>
3234
);
3335
}
3436
35-
</CustomDrag>
3637
```
38+
39+
# Props
40+
1. getPositions --> Methods to get positions. (Optional)
41+
2. dragItemId --> Id for the draggable component. (Required)
42+
3. dragId --> Id for the div inside draggable component,user can drag and drop the draggable component by clicking and dragging this area. (Required)
43+
4. draggingType --> horizontal/vertical (optional), if this value is not provided, it will behave random movement.

build/index.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.js

+34-37
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ class CustomDrag extends Component {
77
constructor(props) {
88
super(props);
99
this.state = {
10-
pos1: 0,
11-
pos2: 0,
12-
pos3: 0,
13-
pos4: 0,
10+
position1: 0,
11+
position2: 0,
12+
position3: 0,
13+
position4: 0,
1414
top: 0,
1515
left: 0,
1616
};
@@ -20,71 +20,68 @@ class CustomDrag extends Component {
2020
let { dragId, dragItemId } = this.props;
2121
if (dragId !== undefined && dragId !== '' && dragId !== null &&
2222
dragItemId !== undefined && dragItemId !== '' && dragItemId !== null) {
23-
let elmnt = document.getElementById(`${dragItemId}`);
23+
let element = document.getElementById(`${dragItemId}`);
2424
let dragIdElement = document.getElementById(`${dragId}`);
25-
if (elmnt && dragIdElement) {
26-
this.dragElement(elmnt, dragIdElement);
25+
if (element && dragIdElement) {
26+
this.dragElement(element, dragIdElement);
2727
}
2828
}
2929
}
30-
dragElement = (elmnt, dragIdElement) => {
31-
if (dragIdElement && elmnt) {
30+
dragElement = (element, dragIdElement) => {
31+
if (dragIdElement && element) {
3232
/* if present, the header is where you move the DIV from:*/
33-
dragIdElement.onmousedown = (e) => this.dragMouseDown(e, elmnt);
33+
dragIdElement.onmousedown = (e) => this.dragMouseDown(e, element);
3434
}
3535
}
3636

37-
dragMouseDown = (e, elmnt) => {
38-
let { pos1, pos2, pos3, pos4 } = this.state;
37+
dragMouseDown = (e, element) => {
38+
let { position1, position2, position3, position4 } = this.state;
3939
e = e || window.event;
4040
e.preventDefault();
4141
// get the mouse cursor position at startup:
42-
pos3 = e.clientX;
43-
pos4 = e.clientY;
42+
position3 = e.clientX;
43+
position4 = e.clientY;
4444
document.onmouseup = this.closeDragElement;
4545
// call a function whenever the cursor moves:
46-
document.onmousemove = (e) => this.elementDrag(e, elmnt);
47-
this.setState({ pos1, pos2, pos3, pos4 });
46+
document.onmousemove = (e) => this.elementDrag(e, element);
47+
this.setState({ position1, position2, position3, position4 });
4848
}
4949

50-
elementDrag = (e, elmnt) => {
51-
let { pos1, pos2, pos3, pos4 } = this.state;
50+
elementDrag = (e, element) => {
51+
let { position1, position2, position3, position4 } = this.state;
5252
e = e || window.event;
5353
e.preventDefault();
5454
// calculate the new cursor position:
55-
pos1 = pos3 - e.clientX;
56-
pos2 = pos4 - e.clientY;
57-
pos3 = e.clientX;
58-
pos4 = e.clientY;
55+
position1 = position3 - e.clientX;
56+
position2 = position4 - e.clientY;
57+
position3 = e.clientX;
58+
position4 = e.clientY;
5959
// set the element's new position:
60-
let offsetTop = elmnt.offsetTop;
61-
let offsetLeft = elmnt.offsetLeft;
62-
if (offsetTop < 0) {
63-
offsetTop = 0;
64-
}
65-
if (offsetLeft < 0) {
66-
offsetLeft = 0;
67-
}
68-
let top = (offsetTop - pos2),
69-
left = (offsetLeft - pos1);
60+
let offsetTop = element.offsetTop;
61+
let offsetLeft = element.offsetLeft;
62+
offsetTop = Math.max(offsetTop,0);
63+
offsetLeft = Math.max(offsetLeft,0);
64+
65+
let top = (offsetTop - position2),
66+
left = (offsetLeft - position1);
7067
let position = {};
7168
let { draggingType } = this.props;
7269
switch (draggingType) {
7370
case HORIZONTAL:
7471
position = { top: null, left };
75-
elmnt.style.left = (offsetLeft - pos1) + 'px';
72+
element.style.left = (offsetLeft - position1) + 'px';
7673
break;
7774
case VERTICAL:
7875
position = { top, left: null };
79-
elmnt.style.top = (offsetTop - pos2) + 'px';
76+
element.style.top = (offsetTop - position2) + 'px';
8077
break;
8178
default:
8279
position = { top, left };
83-
elmnt.style.top = (offsetTop - pos2) + 'px';
84-
elmnt.style.left = (offsetLeft - pos1) + 'px';
80+
element.style.top = (offsetTop - position2) + 'px';
81+
element.style.left = (offsetLeft - position1) + 'px';
8582
break;
8683
}
87-
this.setState({ pos1, pos2, pos3, pos4, top, left });
84+
this.setState({ position1, position2, position3, position4, top, left });
8885
this.props.getPositions(position)
8986
}
9087

0 commit comments

Comments
 (0)