RMN.Blazor.DragDrop
2.1.0
dotnet add package RMN.Blazor.DragDrop --version 2.1.0
NuGet\Install-Package RMN.Blazor.DragDrop -Version 2.1.0
<PackageReference Include="RMN.Blazor.DragDrop" Version="2.1.0" />
paket add RMN.Blazor.DragDrop --version 2.1.0
#r "nuget: RMN.Blazor.DragDrop, 2.1.0"
// Install RMN.Blazor.DragDrop as a Cake Addin #addin nuget:?package=RMN.Blazor.DragDrop&version=2.1.0 // Install RMN.Blazor.DragDrop as a Cake Tool #tool nuget:?package=RMN.Blazor.DragDrop&version=2.1.0
Blazor.DragDrop
This component provides simple and user-friendly drag and drop functionality for Blazor applications.
Features
- Drag and drop items within a list, both horizontally and vertically.
- Drag and drop items between multiple lists. (Coming soon)
- Choose any HTML element to serve as the parent.
- Use a drag handle to drag items only by the handle.
- Fully customizable item template.
- Animated movement of items.
- Support for both desktop and mobile devices.
- And more...
How to set up
Install the RMN.Blazor.DragDrop NuGet package in your project.
Add the component namespace to your
_Imports.razor
file:
@using RMN.Blazor.DragDrop
- Add SortableJS:
<script src="https://cdn.jsdelivr.net/npm/sortablejs@latest/Sortable.min.js"></script>
API
Parameters
Name | Type | Default | Description |
---|---|---|---|
Items | List<TItem> | [ ] | List of items. |
OrderPropertyName | String | "" | Item's order property to update after reordering the list. |
RootElement | String | "div" | Element that will serve as the parent. |
Id | String | Guid | Id for the parent element. |
Class | String | "" | CSS classes for the parent element. |
Style | String | "" | Inline styles for the parent element. |
DragHandleClass | String | "" | CSS class for the drag handle. |
UndraggableItemClass | String | "" | CSS class for undraggable items. |
AllowDragging | Boolean | true | Enables or disables dragging of all items. |
AllowReorder | Boolean | true | Enables or disables reordering the list. |
Context | String | context | Parameter name for the list items. |
Events
OnUpdate
: The method to be called after reordering the list.
Examples
Basic example
<DragDropList Items="Items" Context="item">
<p>@item.Name</p>
</DragDropList>
Advanced example 1
<DragDropList Items="Items"
RootElement="ul"
DragHandleClass="drag-handle"
Context="item"
OnUpdate="OnListUpdate">
<li>
<i class="fa-solid fa-grip-vertical drag-handle"></i>
<span>@item.Name</span>
</li>
</DragDropList>
Advanced example 2
<DragDropList Items="Items.OrderBy(x => x.Order).ToList()"
OrderPropertyName="Order"
RootElement="tbody"
UndraggableItemClass="undraggable-item"
Context="item"
OnUpdate="OnListUpdate">
<tr class="@(item.Disabled ? "undraggable-item" : null)">
<td>@item.Name</td>
</tr>
</DragDropList>
For updating the order property of your items after reordering the list, you have 2 options:
Specify the order property name as shown in the example above.
Update manually:
public async Task OnListUpdate()
{
Items.ForEach(x => x.Order = Items.IndexOf(x));
// Saving to database or something else
}
Styling
For styling the item that is being dragged, use the class selector .dragging-item
.
License
Project is licensed under the MIT license.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net5.0
- Microsoft.AspNetCore.Components.Web (>= 5.0.0)
-
net6.0
- Microsoft.AspNetCore.Components.Web (>= 6.0.0)
-
net7.0
- Microsoft.AspNetCore.Components.Web (>= 7.0.0)
-
net8.0
- Microsoft.AspNetCore.Components.Web (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version 2.1.0
NEW FEATURES:
- "ItemTemplate" is no longer necessary:
You can now safely remove "ItemTemplate", and everything will still work as before.
OTHER CHANGES:
- Updated documentation.