1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-13 18:32:41 +01:00
phorge-phorge/webroot/rsrc/js/core
epriestley fce0109822 When dragging nodes, clone them
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.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T5240

Differential Revision: https://secure.phabricator.com/D15160
2016-02-01 18:48:19 -08:00
..
behavior-active-nav.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-audio-source.js Implement macros as audio sources 2013-09-27 16:02:02 -07:00
behavior-autofocus.js Move js/application/core/ one level up 2013-04-23 10:56:46 -07:00
behavior-choose-control.js Allow installs to customize project icons 2016-01-08 14:01:53 -08:00
behavior-crop.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-dark-console.js Quicksand - fix project board page and quicksand 2015-04-28 14:51:49 -07:00
behavior-device.js Don't mutate DOM on touch-originated cursor events in Differential 2016-01-29 06:55:41 -08:00
behavior-drag-and-drop-textarea.js Don't select {F...} text after adding it to textareas 2015-12-22 08:21:06 -08:00
behavior-error-log.js Let JSHint know that the show_details function is an exported global 2014-12-30 02:51:36 -08:00
behavior-fancy-datepicker.js Fix start in fancy datepicker calendar 2015-11-05 07:07:38 -08:00
behavior-file-tree.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-form.js Apply some linter auto-fixes 2014-08-02 19:03:02 +10:00
behavior-gesture.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-global-drag-and-drop.js Quicksand and global drag and drop - install quicksand listener on event only 2015-05-06 12:59:09 -07:00
behavior-high-security-warning.js Quicksand - make things work properly with high security mode 2015-04-23 16:37:56 -07:00
behavior-history-install.js Move js/application/core/ one level up 2013-04-23 10:56:46 -07:00
behavior-hovercard.js Keep hovercards mostly on screen 2015-12-24 12:18:41 -08:00
behavior-keyboard-pager.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-keyboard-shortcuts.js Move js/application/core/ one level up 2013-04-23 10:56:46 -07:00
behavior-lightbox-attachments.js Catch undefinied title attribute in lightbox 2014-12-23 09:28:57 -08:00
behavior-line-linker.js Minor JavaScript fix 2014-12-30 02:50:32 -08:00
behavior-more.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-object-selector.js Include object url in object selector selection 2014-11-03 08:20:15 -08:00
behavior-oncopy.js Change double quotes to single quotes in JavaScript. 2014-06-24 03:35:39 +10:00
behavior-phabricator-nav.js [Redesign] Fix filetree view in Differential 2015-05-28 11:32:17 -07:00
behavior-phabricator-remarkup-assist.js Add a basic remarkup typeahead for users and projects 2016-01-15 09:11:46 -08:00
behavior-refresh-csrf.js When logged-out users hit a "Login Required" dialog, try to choose a better "next" URI 2015-12-17 08:30:03 -08:00
behavior-remarkup-preview.js Support field previews in EditEngine 2015-12-27 08:17:18 -08:00
behavior-reorder-applications.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-reveal-content.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-scrollbar.js Make scrolling happen relative to the main content frame 2015-01-25 08:42:40 -08:00
behavior-search-typeahead.js Show repositories in global autocomplete dropdown 2016-01-11 09:32:23 -08:00
behavior-select-on-click.js Remove unused JavaScript variables. 2014-06-24 03:27:47 +10:00
behavior-time-typeahead.js Date controls should respect user time preferences 2015-06-15 10:11:10 -07:00
behavior-toggle-class.js Quicksand - fix toggle behavior to work with quicksand 2015-05-04 14:38:50 -07:00
behavior-tokenizer.js Move js/application/core/ one level up 2013-04-23 10:56:46 -07:00
behavior-tooltip.js Move project icon editing into "Edit Details" 2014-06-26 09:41:07 -07:00
behavior-watch-anchor.js Fix anchor-clicking scroll positions 2015-01-28 08:26:10 -08:00
behavior-workflow.js Provide a global router for Ajax requests 2014-05-05 10:57:42 -07:00
Busy.js Make busy indicator durable column aware 2015-04-01 20:10:32 -07:00
DragAndDropFileUpload.js Fix missing willUpload hook for drag-and-drop chunked upload 2015-09-08 16:20:58 -07:00
DraggableList.js When dragging nodes, clone them 2016-02-01 18:48:19 -08:00
FileUpload.js Support HTML5 / Javascript chunked file uploads 2015-03-13 11:30:36 -07:00
Hovercard.js Fix hovercard behavior for multiple copies of the same object 2015-12-24 13:24:00 -08:00
KeyboardShortcut.js Move js/application/core/ one level up 2013-04-23 10:56:46 -07:00
KeyboardShortcutManager.js Make scrolling happen relative to the main content frame 2015-01-25 08:42:40 -08:00
MultirowRowManager.js Clean up Multirow Manager UI 2014-11-17 14:06:05 -08:00
Notification.js Desktop Notification support 2015-06-22 13:11:37 -07:00
phtize.js Use JsShrink if jsxmin is not available 2013-05-18 17:04:22 -07:00
Prefab.js Fix blur and sort behavior for autocomplete 2016-01-15 09:33:15 -08:00
ShapedRequest.js Provide a global router for Ajax requests 2014-05-05 10:57:42 -07:00
TextAreaUtils.js Don't select {F...} text after adding it to textareas 2015-12-22 08:21:06 -08:00
Title.js Don't revert Conpherence page titles when updating notifications 2015-04-02 13:41:48 -07:00
ToolTip.js Use single quotes in JavaScript files 2015-01-20 08:53:47 +11:00