Skip to content

Instantly share code, notes, and snippets.

@timmyomahony
Last active April 24, 2018 10:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timmyomahony/b10980daf90397d82def9881e9e33962 to your computer and use it in GitHub Desktop.
Save timmyomahony/b10980daf90397d82def9881e9e33962 to your computer and use it in GitHub Desktop.
Draggable Ember Component
import Ember from 'ember';
export default Ember.Component.extend({
classNames: ['drag-box'],
attributeBindings: ['draggable'],
draggable: true,
x: 0,
y: 0,
positionChanged: Ember.observer('x', 'y', function(){
this.$().css({
left: `${this.get('x')}px`,
top: `${this.get('y')}px`,
});
}),
dragStart(e) {
var x = parseInt(this.$().css('left')) - e.originalEvent.clientX;
var y = parseInt(this.$().css('top')) - e.originalEvent.clientY;
e.originalEvent.dataTransfer.setData("position", `${x},${y}`);
},
windowDrop(e) {
var xy = e.dataTransfer.getData("position").split(',');
this.setProperties({
x: `${e.originalEvent.clientX + parseInt(xy[0])}`,
y: `${e.originalEvent.clientY + parseInt(xy[1])}`,
});
},
windowDragOver(e) {
e.originalEvent.preventDefault();
},
didRender() {
var self = this;
$(document)
.on('drop', $.proxy(self.windowDrop, self))
.on('dragover', $.proxy(self.windowDragOver, self));
},
didDestroyElement() {
$(document)
.off('drop')
.off('dragover');
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
body {
margin: 12px 16px;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12pt;
}
h1 {
position: absolute;
height: 1.4rem;
top: 50%;
margin-top: -.7rem;
font-size: 1.4rem;
line-height: 1.4rem;
width: 100%;
text-align: center;
}
.drag-box {
background-color: black;
border-radius: 3px;
cursor: move;
color: white;
height: 5rem;
left: 0;
position: absolute;
top: 0;
width: 5rem;
}
.drag-box p {
font-size: 1rem;
line-height: 1rem;
text-align: center;
margin: -.5rem 0 0 0;
position: absolute;
top: 50%;
width: 100%;
}
<h1>Drag the box!</h1>
{{drag-box}}
{
"version": "0.8.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.5.1",
"ember-data": "2.5.2",
"ember-template-compiler": "2.5.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment