Issue #3251Opened January 28, 2021by RutujaBadbe0 reactions

How can I specify position of dropped element ?

Question

I want to specify the position of dragging element. for example, if I have a header block which no matter where you drag, it should be placed at the top of document. how should I do that?

Answers (3)

RutujaBadbeJanuary 29, 20210 reactions
Code SnippetTEXT
after dropping the header block into the canvas, I need it to go at top of any other component/block. currently, I am doing this. but it is not working. 

editor.on('canvas:drop',(DataTransfer, model)=> {
   if (model.is('header')) { 
      var index = 0;
      editor.getComponents().add(model, {at: index});
        }
})
artfFebruary 11, 20210 reactions

You can use draggable property to define (via CSS query strings) where the component could be placed but you can't specify the position. You can try to create a custom component as a container for components like the header and init always your templates with those containers. Then your header can use draggable property in this way: draggable: '[data-gjs-type="header-container"]',

RutujaBadbeFebruary 12, 20210 reactions
Code SnippetTEXT
@artf  thanks for the reply. I don't know if it is correct way but I did something and it worked for me. I am quite new at this and still learning from docs.

I did this- 

editor.on('canvas:drop',( model)=> {
   if (model.is('header')) {      //created custom component type header
      const wrapper = editor.getWrapper();
      const el = wrapper.find('header')[1];   //checking if header already exist
      if(el==undefined){
      var wrapperChildren = editor.DomComponents.getComponents();
       var index = 1;
      wrapperChildren.add({ tagName:'div', attributes:{id: 'header'}, components: [model] }, {at: index});
      }
      else{
         el.remove();
         alert('header already exist');
      }
        }
   
})

Thanks again!

Related Questions and Answers

Continue research with similar issue discussions.

Paid Plugins That Match This Issue

Curated by issue keywords and label relevance to help you ship faster.

View all plugins

Loading paid plugin recommendations...

Browse Plugin Categories

Jump directly to plugin category pages on the marketplace.