Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- var dndApp = angular.module('dndApp',[]);
- dndApp.directive('dndDraggable', function() {
- return {
- // A = attribute, E = Element, C = Class and M = HTML Comment
- restrict:'A',
- link: function(scope, element, attrs,controller) {
- var helper = attrs.helper;
- if(helper==undefined){
- helper='original';
- }
- element.draggable({
- revert:false,
- helper:'clone',
- drag:function (event, ui) {
- $(this).addClass("drag-active");
- $(this).closest(element).addClass("drag-active");
- },
- stop:function (event, ui) {
- $(this).removeClass("drag-active").closest(element).removeClass("drag-active");
- var droppedEl = angular.element(ui.droppable);
- //console.log(droppedEl);
- }
- });
- }
- }
- });
- dndApp.directive('dndDroppableIframe', function($compile) {
- return {
- restrict: 'A',
- link: function(scope,element,attrs){
- if (element.prop('tagName') !== 'IFRAME') { return; }
- element.ready(function () {
- var $parent = element.closest('.iframe-holder');
- var $fakeDiv = $parent.find('.droppable-fake').attr('dnd-droppable', '');
- var parentTop = $parent.offset().top;
- var parentLeft = $parent.offset().left;
- var css = $.extend({}, element[0].getBoundingClientRect());
- css.position = 'absolute';
- css.right = null;
- css.bottom = null;
- css.top = css.top - parentTop;
- css.left = css.left - parentLeft;
- $fakeDiv.css(css)
- $compile($fakeDiv)(scope);
- });
- }
- }
- });
- dndApp.directive('dndDroppable', function($compile) {
- return {
- restrict: 'A',
- link: function(scope,element,attrs,controller){
- var greedy = attrs.greedy;
- var ifr = element.closest('.iframe-holder').find('iframe');
- var ifrBody = ifr.contents().find('body');
- var dropDiv = ifrBody.find("#droppable-div")
- if(greedy==undefined){greedy=true;}
- //console.log("inside-droppable");
- //console.log(element);
- element.droppable({
- activeClass:"drop-active",
- greedy:greedy,
- hoverClass:"drop-hover",
- drop:function (event, ui) {
- var rawHtml = angular.element(ui.draggable).data('raw');
- var draggedEl = angular.element(ui.draggable); //.parent();
- var droppedEl = angular.element(dropDiv);
- console.log(droppedEl);
- if(rawHtml == undefined){
- rawHtml = $(draggedEl)[0].outerHTML;
- }
- //console.log("dropped El is next");
- //console.log(droppedEl);
- $compile(rawHtml)(scope).appendTo(droppedEl);
- if(angular.element(ui.draggable).data('helper')==undefined){
- $(draggedEl).remove();
- }
- }
- });
- }
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement