Isso está relacionado ao # 87, mas é mais técnico. As fontes de arrastar aninhadas atualmente serão ativadas juntas. Este é um comportamento muito, muito errado. A fonte de arrastar filho deve _sempre_ impedir a ativação do pai.
Mas não é tão simples quanto parece com o back-end HTML5.
Tentei adicionar e.stopPropagation()
em dragstart
manipulador, mas há outro problema. Suponha que List
e Card
sejam fontes de arrasto, Card
estão dentro de List
. Suponha que Card
tenha canDrag(): false
. Não podemos chamar stopPropagation()
neste caso, porque isso impediria o evento de chegar ao pai.
Ok, vamos adicionar if (DragOperationStore.isDragging()) return;
ao manipulador de dragstart
. Mas há outro problema: embora o evento agora tenha alcançado o pai, se você realmente arrastar, o navegador usará o destino original (filho) como visualização do arrasto.
Isso provavelmente pode ser resolvido usando this.getDOMNode()
explicitamente como dragPreview
se não for especificado em beginDrag
, de modo que a visualização do arrasto seja garantida como o alvo atual. Eu não tentei ainda. De qualquer forma, isso não parece ser um problema complexo e está à disposição!
Certamente, precisamos de algumas restrições no dragPreview
Como o quê?
Corrigido em 0.9.2.
Demonstração ao vivo: http://gaearon.github.io/react-dnd/#/nesting -sources
Existe uma solução para parar de chamar o pai quando a função canDrag
retornar false
?
Comentários muito úteis
Existe uma solução para parar de chamar o pai quando a função
canDrag
retornarfalse
?