Page MenuHomePhabricator

When dragging nodes, clone them
ClosedPublic

Authored by epriestley on Feb 2 2016, 1:04 AM.
Tags
None
Referenced Files
F14056979: D15160.diff
Sat, Nov 16, 11:51 PM
F14038855: D15160.id36601.diff
Mon, Nov 11, 2:29 AM
F14038527: D15160.id.diff
Mon, Nov 11, 12:11 AM
F14035545: D15160.diff
Sun, Nov 10, 6:25 AM
F14035500: D15160.diff
Sun, Nov 10, 6:13 AM
F14026538: D15160.diff
Fri, Nov 8, 1:30 AM
F14006846: D15160.diff
Mon, Oct 28, 6:54 PM
F14000268: D15160.diff
Thu, Oct 24, 8:35 PM
Subscribers
None

Details

Summary

Ref T5240. Currently, when dragging nodes, we leave them where they are in the document and apply "position: relative;" so we can move them around on screen.

  • Pros: All the CSS still works.
  • Cons: Can't drag them outside the nearest containing element with "overflow: hidden;", many subtle positioning bugs with scrollable containers.

Instead, this diff leaves the thing we're dragging exactly where it is, clones it, and drags the clone instead.

  • Pros: You can drag it anywhere. Seems to fix all the scrolling container problems.
  • Cons: CSS which depends on a container class no longer works.

The CSS thing is bad, but doesn't seem too unreasonable to fix. Basically, we just need to put some phui-this-is-a-workboard-card class on the cards, and use that to style them instead of phui-workboard-view, and then do something similar for draggable lists.

Although we no longer need to drag cards to tabs with the current design, I think there's a reasonable chance we'll revisit that later. The current design also calls for scrollable columns, but there would be no way to drag cards outside of their current column with the current approach.

NOTE: This does not attempt to fix the CSS, so dragging is pretty rough, since the "clone" loses a number of container classes and thus a number of rules. I'll clean up the CSS in the next change.
Test Plan
  • Dragged stuff around on task lists, workboards, and sort lists (e.g., pinned applications) in Safari, Firefox and Chrome.
  • Scrolled window and containers (workboards) during drag.
  • Dragged stuff out of the workboard.
  • Dragged stuff offscreen.
  • CSS is funky, but I can no longer find any positioning or layout issues in any browser.

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

epriestley retitled this revision from to When dragging nodes, clone them.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: chad.
chad edited edge metadata.
This revision is now accepted and ready to land.Feb 2 2016, 1:22 AM

I'll do a pass on the CSS to get it "not obviously broken" before I land this, you might want to tweak it afterward since there are a few new, uh, "design opportunities" (e.g., we now leave a ghost behind while dragging instead of just an empty space).

This revision was automatically updated to reflect the committed changes.