Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3902,6 +3902,11 @@
This event is fired when the user starts dragging an element.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.FluentDragContainer`1.OnDragEnd">
<summary>
This event is fired when the drag operation ends (such as releasing a mouse button or hitting the Esc key).
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.FluentDragContainer`1.OnDragEnter">
<summary>
This event is fired when a dragged element enters a valid drop target.
Expand Down Expand Up @@ -3986,6 +3991,11 @@
This event is fired when the user starts dragging an element.
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.FluentDropZone`1.OnDragEnd">
<summary>
This event is fired when the drag operation ends (such as releasing a mouse button or hitting the Esc key).
</summary>
</member>
<member name="P:Microsoft.FluentUI.AspNetCore.Components.FluentDropZone`1.OnDragEnter">
<summary>
This event is fired when a dragged element enters a valid drop target.
Expand All @@ -4012,6 +4022,9 @@
<member name="M:Microsoft.FluentUI.AspNetCore.Components.FluentDropZone`1.OnDragStartHandler(Microsoft.AspNetCore.Components.Web.DragEventArgs)">
<summary />
</member>
<member name="M:Microsoft.FluentUI.AspNetCore.Components.FluentDropZone`1.OnDragEndHandler(Microsoft.AspNetCore.Components.Web.DragEventArgs)">
<summary />
</member>
<member name="M:Microsoft.FluentUI.AspNetCore.Components.FluentDropZone`1.OnDragEnterHandler(Microsoft.AspNetCore.Components.Web.DragEventArgs)">
<summary />
</member>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<FluentDragContainer TItem="string"
<FluentDragContainer TItem="string"
OnDragEnd="@(e => DemoLogger.WriteLine($"{e.Source.Id} drag ended"))"
OnDragEnter="@(e => DemoLogger.WriteLine($"{e.Source.Id} is entered in {e.Target.Id}"))"
OnDragLeave="@(e => DemoLogger.WriteLine($"{e.Source.Id} has left {e.Target.Id}"))"
OnDropEnd="@(e => DemoLogger.WriteLine($"{e.Source.Id} dropped in {e.Target.Id}"))">
Expand All @@ -14,4 +15,4 @@
</div>
</FluentDropZone>
</FluentStack>
</FluentDragContainer>
</FluentDragContainer>
6 changes: 6 additions & 0 deletions src/Core/Components/Drag/FluentDragContainer.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ public partial class FluentDragContainer<TItem> : FluentComponentBase
[Parameter]
public Action<FluentDragEventArgs<TItem>>? OnDragStart { get; set; }

/// <summary>
/// This event is fired when the drag operation ends (such as releasing a mouse button or hitting the Esc key).
/// </summary>
[Parameter]
public Action<FluentDragEventArgs<TItem>>? OnDragEnd { get; set; }

/// <summary>
/// This event is fired when a dragged element enters a valid drop target.
/// </summary>
Expand Down
5 changes: 3 additions & 2 deletions src/Core/Components/Drag/FluentDropZone.razor
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@namespace Microsoft.FluentUI.AspNetCore.Components
@namespace Microsoft.FluentUI.AspNetCore.Components
@inherits FluentComponentBase

@typeparam TItem
Expand All @@ -14,6 +14,7 @@
@ondragenter:preventDefault="@Droppable"
@ondragleave=@OnDragLeaveHandler
@ondragleave:preventDefault="@Droppable"
@ondragend=@OnDragEndHandler
@ondrop=@OnDropHandler @ondrop:preventDefault>
@ChildContent
</div>
</div>
25 changes: 25 additions & 0 deletions src/Core/Components/Drag/FluentDropZone.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ public partial class FluentDropZone<TItem> : FluentComponentBase
[Parameter]
public Action<FluentDragEventArgs<TItem>>? OnDragStart { get; set; }

/// <summary>
/// This event is fired when the drag operation ends (such as releasing a mouse button or hitting the Esc key).
/// </summary>
[Parameter]
public Action<FluentDragEventArgs<TItem>>? OnDragEnd { get; set; }

/// <summary>
/// This event is fired when a dragged element enters a valid drop target.
/// </summary>
Expand Down Expand Up @@ -100,6 +106,25 @@ private void OnDragStartHandler(DragEventArgs e)
}
}

/// <summary />
private void OnDragEndHandler(DragEventArgs e)
{
if (!Draggable)
{
return;
}

if (OnDragEnd != null)
{
OnDragEnd(new FluentDragEventArgs<TItem>(this, this));
}

if (Container.OnDragEnd != null)
{
Container.OnDragEnd(new FluentDragEventArgs<TItem>(this, this));
}
}

/// <summary />
private void OnDragEnterHandler(DragEventArgs e)
{
Expand Down
3 changes: 3 additions & 0 deletions tests/Core/Drag/FluentDragTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public void FluentDrag_SimpleTest()
var cut = ctx.RenderComponent<FluentDragContainer<int>>(parameters =>
{
parameters.Add(p => p.OnDragStart, (e) => { });
parameters.Add(p => p.OnDragEnd, (e) => { });
parameters.Add(p => p.OnDragEnter, (e) => { });
parameters.Add(p => p.OnDragOver, (e) => { });
parameters.Add(p => p.OnDragLeave, (e) => { });
Expand All @@ -27,6 +28,7 @@ public void FluentDrag_SimpleTest()
zone.AddChildContent("Item 1");

zone.Add(p => p.OnDragStart, (e) => { });
zone.Add(p => p.OnDragEnd, (e) => { });
zone.Add(p => p.OnDragEnter, (e) => { });
zone.Add(p => p.OnDragOver, (e) => { });
zone.Add(p => p.OnDragLeave, (e) => { });
Expand All @@ -40,6 +42,7 @@ public void FluentDrag_SimpleTest()
zone.AddChildContent("Item 2");

zone.Add(p => p.OnDragStart, (e) => { });
zone.Add(p => p.OnDragEnd, (e) => { });
zone.Add(p => p.OnDragEnter, (e) => { });
zone.Add(p => p.OnDragOver, (e) => { });
zone.Add(p => p.OnDragLeave, (e) => { });
Expand Down