Problem/Motivation
Large menus (100+) items with various nesting levels are very difficult to manage via drag and drop.
e.g. re-ordering can freeze the UI rendering for 10+ seconds.
I found #1972462: Redesign drag and drop interactions, and nested menu items, for all devices that aims to tackle the whole interaction for all devices.
#2742371: Drag and drop interfaces can break either browsers or exceed PHP server limits for forms and #1565704: Core Web UI interfaces can go over php's max_input_vars also become a problem with large menus.
Proposed resolution
There is https://www.drupal.org/project/bigmenu for D7, with an initial D8 port at https://github.com/becw/bigmenu.
Arguably this should be tackled in core as it is not uncommon to have large menus that are managed by non-technical users that rely on the drag and drop functionality.
At the very least, it should be possible to collapse the menus to a certain level and change how weights are calculated post drop.
Remaining tasks
TBD
User interface changes
TBD
API changes
N/A?
Data model changes
N/A
Comments
Comment #2
cilefen commentedComment #3
droplet commentedIE/EDGE, right?
#2876224: Make Drupal.tableDrag.restripeTable 10x faster
Comment #4
zerolab commentedI see this behaviour in latest Chrome/FF.
But #2867451: Improve tabledrag.js performance sounds related
Comment #5
droplet commentedCan I have more details on the menu trees? Started from 100 is too little for Chrome.
(I agreed a redesign is required but we still need some quick tweaks for now if we can.)
Comment #6
zerolab commentedHi droplet,
You are right, 100 items are easily handled by Chrome. In this case it is 1243 items. You can see the behaviour at https://youtu.be/rZXbKzavlxQ
Will give https://www.drupal.org/files/issues/improve-tabledrag-performance.patch / https://www.drupal.org/files/issues/tabledrag_js_reduce-1571814-34.patch a try and see if it improves anything.
Comment #18
smustgrave commentedThank you for creating this issue to improve Drupal.
We are working to decide if this task is still relevant to a currently supported version of Drupal. There hasn't been any discussion here for over 8 years which suggests that this has either been implemented or is no longer relevant. Your thoughts on this will allow a decision to be made.
Since we need more information to move forward with this issue, the status is now Postponed (maintainer needs more info). If we don't receive additional information to help with the issue, it may be closed after three months.
Thanks!