Files
phabricator/webroot/rsrc/js/application/search/behavior-reorder-profile-menu-items.js
epriestley 1c5167dc74 Allow profile menu items to be reordered
Summary: Ref T10054. Allows users to drag menu items to reorder them.

Test Plan: Reordered a project menu.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T10054

Differential Revision: https://secure.phabricator.com/D15011
2016-01-13 11:45:57 -08:00

42 lines
1022 B
JavaScript

/**
* @provides javelin-behavior-reorder-profile-menu-items
* @requires javelin-behavior
* javelin-stratcom
* javelin-workflow
* javelin-dom
* phabricator-draggable-list
*/
JX.behavior('reorder-profile-menu-items', function(config) {
var root = JX.$(config.listID);
var list = new JX.DraggableList('profile-menu-item', root)
.setFindItemsHandler(function() {
return JX.DOM.scry(root, 'li', 'profile-menu-item');
});
list.listen('didDrop', function(node) {
var nodes = list.findItems();
var order = [];
var key;
for (var ii = 0; ii < nodes.length; ii++) {
key = JX.Stratcom.getData(nodes[ii]).key;
if (key) {
order.push(key);
}
}
list.lock();
JX.DOM.alterClass(node, 'drag-sending', true);
new JX.Workflow(config.orderURI, {order: order.join()})
.setHandler(function() {
JX.DOM.alterClass(node, 'drag-sending', false);
list.unlock();
})
.start();
});
});