11using Microsoft . AspNetCore . Components ;
22using Microsoft . JSInterop ;
33using MudBlazor ;
4+ using MudBlazor . Services ;
45using MudBlazor . Utilities ;
56using MudExtensions . Utilities ;
67
@@ -9,10 +10,10 @@ namespace MudExtensions
910 /// <summary>
1011 /// Signature pad component.
1112 /// </summary>
12- public partial class MudSignaturePad : ComponentBase , IAsyncDisposable
13+ public partial class MudSignaturePad : ComponentBase , IBrowserViewportObserver , IAsyncDisposable
1314 {
1415 /// <summary>
15- ///
16+ /// Constructor for MudSignaturePad.
1617 /// </summary>
1718 public MudSignaturePad ( )
1819 {
@@ -23,6 +24,7 @@ public MudSignaturePad()
2324 ///
2425 /// </summary>
2526 protected string CanvasContainerClassname => new CssBuilder ( )
27+ . AddClass ( "mud-signature-pad-container" )
2628 . AddClass ( CanvasContainerClass )
2729 . Build ( ) ;
2830
@@ -67,7 +69,7 @@ record JsOptionsStructRecord(decimal LineWidth, string LineCap, string LineJoin,
6769 public SignaturePadLocalizedStrings LocalizedStrings { get ; set ; } = new ( ) ;
6870
6971 /// <summary>
70- ///
72+ /// Options for the signature pad.
7173 /// </summary>
7274 [ Parameter ]
7375 public SignaturePadOptions Options { get ; set ; } = new SignaturePadOptions ( ) ;
@@ -79,13 +81,13 @@ record JsOptionsStructRecord(decimal LineWidth, string LineCap, string LineJoin,
7981 public string ? ToolbarClass { get ; set ; }
8082
8183 /// <summary>
82- ///
84+ /// Style for the toolbar.
8385 /// </summary>
8486 [ Parameter ]
8587 public string ? ToolbarStyle { get ; set ; }
8688
8789 /// <summary>
88- ///
90+ /// Outer class for the component.
8991 /// </summary>
9092 [ Parameter ]
9193 public string ? OuterClass { get ; set ; }
@@ -107,16 +109,16 @@ record JsOptionsStructRecord(decimal LineWidth, string LineCap, string LineJoin,
107109 /// </summary>
108110 [ Parameter ]
109111 public string ? CanvasContainerStyle { get ; set ; } =
110- "height: 100%;width: 100%; box-shadow: rgb(204, 219, 232) 3px 3px 6px 0px inset, rgba(255, 255, 255, 0.5) -3px -3px 6px 1px inset;" ;
112+ "height: 100%;width: 100%; display: block; box-shadow: rgb(204, 219, 232) 3px 3px 6px 0px inset, rgba(255, 255, 255, 0.5) -3px -3px 6px 1px inset;" ;
111113
112114 /// <summary>
113- ///
115+ /// Shows the eraser toggle button.
114116 /// </summary>
115117 [ Parameter ]
116118 public bool ShowClear { get ; set ; } = true ;
117119
118120 /// <summary>
119- ///
121+ ///
120122 /// </summary>
121123 [ Parameter ]
122124 public bool ShowLineWidth { get ; set ; } = true ;
@@ -128,7 +130,7 @@ record JsOptionsStructRecord(decimal LineWidth, string LineCap, string LineJoin,
128130 public bool ShowStrokeStyle { get ; set ; } = true ;
129131
130132 /// <summary>
131- ///
133+ ///
132134 /// </summary>
133135 [ Parameter ]
134136 public bool ShowDownload { get ; set ; } = true ;
@@ -155,7 +157,7 @@ record JsOptionsStructRecord(decimal LineWidth, string LineCap, string LineJoin,
155157 ///
156158 /// </summary>
157159 [ Parameter ]
158- public Variant Variant { get ; set ; }
160+ public Variant Variant { get ; set ; } = MudGlobal . InputDefaults . Variant ;
159161
160162 /// <summary>
161163 ///
@@ -178,8 +180,9 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
178180 {
179181 if ( firstRender )
180182 {
181- await JsRuntime . InvokeVoidAsync ( "mudSignaturePad.addPad" , _dotnetObjectRef , _reference ,
182- JsOptionsStruct ) ;
183+ await JsRuntime . InvokeVoidAsync ( "mudSignaturePad.addPad" , _dotnetObjectRef , _reference , JsOptionsStruct ) ;
184+ await BrowserViewportService . SubscribeAsync ( this , fireImmediately : true ) ;
185+
183186 if ( Value . Length > 0 )
184187 {
185188 await PushImageUpdateToJsRuntime ( ) ;
@@ -250,11 +253,13 @@ public async ValueTask DisposeAsync()
250253 try
251254 {
252255 await JsRuntime . InvokeVoidAsync ( "mudSignaturePad.disposePad" , _reference ) ;
256+ await BrowserViewportService . UnsubscribeAsync ( this ) ;
253257 }
254258 catch
255259 {
256260 //ignore
257261 }
262+ _dotnetObjectRef ? . Dispose ( ) ;
258263 }
259264
260265 /// <summary>
@@ -276,5 +281,25 @@ public async Task SignatureDataChangedAsync()
276281
277282 await ValueChanged . InvokeAsync ( Value ) ;
278283 }
284+
285+ Guid IBrowserViewportObserver . Id { get ; } = Guid . NewGuid ( ) ;
286+
287+ ResizeOptions IBrowserViewportObserver . ResizeOptions { get ; } = new ( )
288+ {
289+ ReportRate = 200 ,
290+ NotifyOnBreakpointOnly = false
291+ } ;
292+
293+ /// <summary>
294+ ///
295+ /// </summary>
296+ /// <param name="args"></param>
297+ /// <returns></returns>
298+ public async Task NotifyBrowserViewportChangeAsync ( BrowserViewportEventArgs args )
299+ {
300+ await JsRuntime . InvokeVoidAsync ( "mudSignaturePad.setCanvasSize" , _reference ) ;
301+ }
302+
279303 }
304+
280305}
0 commit comments