Skip to content

Commit 1d5a782

Browse files
Merge pull request #45 from WiseTechGlobal/M71/WI00761833/Updates-for-Blazor-Diagrams-mouse-configuration
WI00761833 - Updates for Blazor Diagrams mouse configuration
2 parents 5082e89 + 09f824d commit 1d5a782

File tree

5 files changed

+28
-1
lines changed

5 files changed

+28
-1
lines changed

site/Site/Pages/Documentation/Diagram/Behaviors.razor

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,20 @@ Diagram.UnregisterBehavior<SelectionBehavior>();
114114
Diagram.RegisterBehavior(new MySelectionBehavior(Diagram));
115115
</code></pre>
116116

117+
<h2>Configure behaviors for different actions on input</h2>
118+
119+
You can configure a behavior to perform different actions for an input. Such as scrolling a diagram on mouse wheel instead of zooming in and out.
120+
This can be done using the <code>BehaviorOptions</code>. See the below example.
121+
122+
<h3>Scrolling a diagram on mouse wheel</h3>
123+
124+
<p>To scroll a diagram using the mouse wheel set the <code>DiagramWheelBehavior</code> property of <code>BehaviorOptions</code> to use <code>ScrollBehavior</code>.</p>
125+
126+
<pre><code class="language-cs">
127+
_diagram.BehaviorOptions.DiagramWheelBehavior = _diagram.GetBehavior&lt;ScrollBehavior&gt;();
128+
</code></pre>
129+
130+
117131
<NavigationButtons PreviousLink="/documentation/diagram"
118132
PreviousTitle="Overview"
119133
NextTitle="Ordering"

src/Blazor.Diagrams/Components/DiagramCanvas.razor.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Threading.Tasks;
3+
using Blazor.Diagrams.Core.Behaviors;
34
using Blazor.Diagrams.Core.Geometry;
45
using Blazor.Diagrams.Extensions;
56
using Microsoft.AspNetCore.Components;
@@ -64,6 +65,10 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
6465
{
6566
BlazorDiagram.SetContainer(await JSRuntime.GetBoundingClientRect(elementReference));
6667
await JSRuntime.ObserveResizes(elementReference, _reference!);
68+
if (BlazorDiagram.BehaviorOptions.DiagramWheelBehavior is ScrollBehavior)
69+
{
70+
await JSRuntime.AddDefaultPreventingForWheelHandler(elementReference);
71+
}
6772
}
6873
}
6974

src/Blazor.Diagrams/Extensions/JSRuntimeExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,9 @@ public static async Task UnobserveResizes(this IJSRuntime jsRuntime, ElementRefe
3030
{
3131
await jsRuntime.InvokeVoidAsync("ZBlazorDiagrams.unobserve", element, element.Id);
3232
}
33+
34+
public static async Task AddDefaultPreventingForWheelHandler(this IJSRuntime jsRuntime, ElementReference element)
35+
{
36+
await jsRuntime.InvokeVoidAsync("ZBlazorDiagrams.addDefaultPreventingHandler", element, "wheel");
37+
}
3338
}

src/Blazor.Diagrams/wwwroot/script.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ var s = {
4545
}
4646
delete s.tracked[id];
4747
delete s.canvases[id];
48+
},
49+
addDefaultPreventingHandler: (element, eventName) => {
50+
element.addEventListener(eventName, e => e.preventDefault(), { passive: false });
4851
}
4952
};
5053
window.ZBlazorDiagrams = s;

src/Blazor.Diagrams/wwwroot/script.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)