Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop 2.0.0

dotnet add package Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop --version 2.0.0
                    
NuGet\Install-Package Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop -Version 2.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop --version 2.0.0
                    
#r "nuget: Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop, 2.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop&version=2.0.0
                    
Install as a Cake Tool

Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop

Native HTML5 drag-and-drop and keyboard reordering for the Umbraco 17/18 backoffice Content tree.

  • Three-zone drop targets per row: above sibling / into as child / below sibling
  • Optimistic same-parent reorder — instant visual feedback, rolled back on API error
  • Full cross-parent move (reparent) support
  • Move-in-progress spinner on the node being moved
  • Keyboard-accessible reordering (ARIA "grab & place") — WCAG 2.2 AA, with screen-reader announcements
  • Hover-to-expand collapsed branches mid-drag
  • Cycle guard against dropping a node into its own descendants

Pure App_Plugins package — no C# code, no Startup configuration. Drops in via NuGet and lights up the moment the assembly is referenced.

Demo

Drag-and-drop reordering in the Umbraco content tree, with a move-in-progress spinner and keyboard grab & place

Install

dotnet add package Esatto.Umbraco.Backoffice.ContentTreeDragAndDrop

Restart the site / hard-refresh the backoffice. The drag-and-drop activates automatically on the Content section.

Keyboard reordering

Fully keyboard-operable, as an accessible alternative to dragging (WCAG 2.2 AA):

Key Action
Space Grab the focused node / drop it at the chosen position
↑ / ↓ Move the insertion point between rows
Nest into the highlighted node (as a child)
Pop out to the parent level
Esc Cancel the move

Each step is announced via an aria-live region for screen-reader users. (Enter keeps its normal "open node" behaviour when no node is grabbed.)

How it works (one-paragraph version)

The script patches Element.prototype.attachShadow at module load to observe every shadow root created in the backoffice from then on, plus walks the existing DOM once at startup. When it sees an <umb-tree-item entitytype="document">, it marks it draggable and lets a single hidden Lit element (mounted inside <umb-app> so it can consume UMB_NOTIFICATION_CONTEXT / UMB_ACTION_EVENT_CONTEXT) handle the drag events at the document level in the capture phase. Same-parent reorder mutates the DOM optimistically and calls DocumentService.putDocumentSort; cross-parent moves call putDocumentByIdMove then dispatch UmbRequestReloadChildrenOfEntityEvent to refresh both branches.

Compatibility

Umbraco Status
17.x Verified
18.x Verified

Earlier versions of Umbraco use a different tree-item DOM shape and Management API surface — not supported.

License

MIT.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 223 6/22/2026
1.0.2 152 6/15/2026
1.0.1 112 6/14/2026
1.0.0 114 6/13/2026