mirror of
https://github.com/teamcapybara/capybara.git
synced 2022-11-09 12:08:07 -05:00
Drop modifiers shouldn't be held down at drag start
This commit is contained in:
parent
fa520a5c6a
commit
e62a194a68
3 changed files with 30 additions and 9 deletions
|
@ -160,6 +160,14 @@ class Capybara::Selenium::Node
|
||||||
var targetRect = target.getBoundingClientRect();
|
var targetRect = target.getBoundingClientRect();
|
||||||
var sourceCenter = rectCenter(source.getBoundingClientRect());
|
var sourceCenter = rectCenter(source.getBoundingClientRect());
|
||||||
|
|
||||||
|
for (var i = 0; i < drop_modifier_keys.length; i++) {
|
||||||
|
key = drop_modifier_keys[i];
|
||||||
|
if (key == "control"){
|
||||||
|
key = "ctrl"
|
||||||
|
}
|
||||||
|
opts[key + 'Key'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
// fire 2 dragover events to simulate dragging with a direction
|
// fire 2 dragover events to simulate dragging with a direction
|
||||||
var entryPoint = pointOnRect(sourceCenter, targetRect)
|
var entryPoint = pointOnRect(sourceCenter, targetRect)
|
||||||
var dragOverOpts = Object.assign({clientX: entryPoint.x, clientY: entryPoint.y}, opts);
|
var dragOverOpts = Object.assign({clientX: entryPoint.x, clientY: entryPoint.y}, opts);
|
||||||
|
@ -198,14 +206,6 @@ class Capybara::Selenium::Node
|
||||||
var dt = new DataTransfer();
|
var dt = new DataTransfer();
|
||||||
var opts = { cancelable: true, bubbles: true, dataTransfer: dt };
|
var opts = { cancelable: true, bubbles: true, dataTransfer: dt };
|
||||||
|
|
||||||
for (var i = 0; i < drop_modifier_keys.length; i++) {
|
|
||||||
key = drop_modifier_keys[i];
|
|
||||||
if (key == "control"){
|
|
||||||
key = "ctrl"
|
|
||||||
}
|
|
||||||
opts[key + 'Key'] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (source && !source.draggable) {
|
while (source && !source.draggable) {
|
||||||
source = source.parentElement;
|
source = source.parentElement;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,18 @@
|
||||||
var activeRequests = 0;
|
var activeRequests = 0;
|
||||||
$(function() {
|
$(function() {
|
||||||
$('#change').text('I changed it');
|
$('#change').text('I changed it');
|
||||||
$('#drag, #drag_scroll, #drag_link').draggable();
|
$('#drag, #drag_scroll, #drag_link').draggable({
|
||||||
|
start: function(event, ui){
|
||||||
|
$(document.body).append(
|
||||||
|
"<div class='drag_start'>Dragged!" +
|
||||||
|
(event.altKey ? "-alt" : "") +
|
||||||
|
(event.ctrlKey ? "-ctrl" : "") +
|
||||||
|
(event.metaKey ? "-meta" : "") +
|
||||||
|
(event.shiftKey ? "-shift" : "") +
|
||||||
|
"</div>"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
$('#drop, #drop_scroll').droppable({
|
$('#drop, #drop_scroll').droppable({
|
||||||
tolerance: 'touch',
|
tolerance: 'touch',
|
||||||
drop: function(event, ui) {
|
drop: function(event, ui) {
|
||||||
|
@ -16,6 +27,14 @@ $(function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$('#drag_html5, #drag_html5_scroll').on('dragstart', function(ev){
|
$('#drag_html5, #drag_html5_scroll').on('dragstart', function(ev){
|
||||||
|
$(document.body).append(
|
||||||
|
"<div class='drag_start'>HTML5 Dragged!" +
|
||||||
|
(event.altKey ? "-alt" : "") +
|
||||||
|
(event.ctrlKey ? "-ctrl" : "") +
|
||||||
|
(event.metaKey ? "-meta" : "") +
|
||||||
|
(event.shiftKey ? "-shift" : "") +
|
||||||
|
"</div>"
|
||||||
|
);
|
||||||
ev.originalEvent.dataTransfer.setData("text", ev.target.id);
|
ev.originalEvent.dataTransfer.setData("text", ev.target.id);
|
||||||
});
|
});
|
||||||
$('#drag_html5, #drag_html5_scroll').on('dragend', function(ev){
|
$('#drag_html5, #drag_html5_scroll').on('dragend', function(ev){
|
||||||
|
|
|
@ -481,6 +481,7 @@ Capybara::SpecHelper.spec 'node' do
|
||||||
target = @session.find('//div[@id="drop"]')
|
target = @session.find('//div[@id="drop"]')
|
||||||
|
|
||||||
element.drag_to(target, drop_modifiers: modifier_key)
|
element.drag_to(target, drop_modifiers: modifier_key)
|
||||||
|
expect(@session).to have_css("div.drag_start", exact_text: 'Dragged!')
|
||||||
expect(@session).to have_xpath("//div[contains(., 'Dropped!-#{modifier_key}')]")
|
expect(@session).to have_xpath("//div[contains(., 'Dropped!-#{modifier_key}')]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -609,6 +610,7 @@ Capybara::SpecHelper.spec 'node' do
|
||||||
|
|
||||||
element.drag_to(target, drop_modifiers: modifier_key)
|
element.drag_to(target, drop_modifiers: modifier_key)
|
||||||
|
|
||||||
|
expect(@session).to have_css('div.drag_start', exact_text: 'HTML5 Dragged!')
|
||||||
expect(@session).to have_xpath("//div[contains(., 'HTML5 Dropped string: text/plain drag_html5-#{modifier_key}')]")
|
expect(@session).to have_xpath("//div[contains(., 'HTML5 Dropped string: text/plain drag_html5-#{modifier_key}')]")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue