Skip to content

Commit 497fde3

Browse files
Merge branch 'development' into EJ2-910313-update-ug
2 parents b2493b8 + 6818122 commit 497fde3

24 files changed

+741
-164
lines changed

blazor-toc.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2804,6 +2804,7 @@
28042804
<li> <a href="/blazor/file-manager/multiple-file-selection">Multiple File Selection</a></li>
28052805
<li> <a href="/blazor/file-manager/drag-and-drop">Drag and Drop</a></li>
28062806
<li> <a href="/blazor/file-manager/virtualization">Virtualization</a></li>
2807+
<li> <a href="/blazor/file-manager/pagination">Pagination</a></li>
28072808
<li> <a href="/blazor/file-manager/accessibility">Accessibility</a></li>
28082809
<li>How To
28092810
<ul>

blazor/circular-gauge/how-to/place-gauge-inside-other-components.md

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,22 @@ documentation: ug
99

1010
# Render Circular Gauge component inside other components
1111

12-
The Circular Gauge can be rendered within components such as the Dashboard Layout, Tabs, Dialog, and others. In general, the Circular Gauge component renders before other components, so a boolean variable ((i.e. boolean flag) is used to determine when to begin rendering the Circular Gauge component.
12+
The Circular Gauge can be rendered within components such as the Dashboard Layout, Tabs, Dialog, and others. In general, the Circular Gauge component renders before other components, so a boolean variable (i.e. boolean flag) is used to determine when to begin rendering the Circular Gauge component.
1313

1414
## Circular Gauge component inside Dashboard Layout
1515

16-
When the Circular Gauge component renders within a panel of the Dashboard Layout component, its rendering begins concurrently with the Dashboard Layout component's rendering. As a result, the size of the Circular Gauge component will not be proper. To properly render the Circular Gauge component, a boolean variable (i.e. **IsInitialRender**) must be created and it is used to determine the Circular Gauge component's rendering. The boolean variable is set to **false** by default, so the Circular Gauge component will not be rendered initially. When the Dashboard Layout component is rendered, its [Created](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Layouts.DashboardLayoutEvents.html#Syncfusion_Blazor_Layouts_DashboardLayoutEvents_Created) event is fired, and the boolean variable (i.e. **IsInitialRender**) in this event must be changed to **true** to initiate the render of the Circular Gauge component.
16+
When the Circular Gauge component renders within a panel of the Dashboard Layout component, its rendering begins concurrently with the Dashboard Layout component's rendering. As a result, the size of the Circular Gauge component will not be proper. To properly render the Circular Gauge component, a boolean variable (i.e. **IsInitialRender**) must be created and it is used to determine the Circular Gauge component's rendering. The boolean variable is set to **false** by default, so the Circular Gauge component will not be rendered initially. When the Dashboard Layout component is rendered, its [Created](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Layouts.DashboardLayoutEvents.html#Syncfusion_Blazor_Layouts_DashboardLayoutEvents_Created) event is fired. Within this event, the `Task.Yield()` method should be called, and the boolean variable (i.e. **IsInitialRender**) should be set to **true** to initiate the rendering of the Circular Gauge component. This ensures that the Dashboard Layout component is fully rendered before the Circular Gauge component begins rendering.
1717

18-
When you drag and resize the Dashboard Layout's panel, the Circular Gauge component is not notified, so the Circular Gauge is not properly rendered within the panel. To avoid this scenario, the Circular Gauge component's [RefreshAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.CircularGauge.SfCircularGauge.html#Syncfusion_Blazor_CircularGauge_SfCircularGauge_RefreshAsync) method must be called in the Dashboard Layout's [Resizing](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Layouts.DashboardLayoutEvents.html#Syncfusion_Blazor_Layouts_DashboardLayoutEvents_Resizing) and [OnResizeStop](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Layouts.DashboardLayoutEvents.html#Syncfusion_Blazor_Layouts_DashboardLayoutEvents_OnResizeStop) events. Because the panel size of the Dashboard Layout is determined after a delay, a 100 millisecond delay must be provided before refreshing the Circular Gauge component.
19-
20-
On window resizing, the Circular Gauge component is not notified, so the Circular Gauge is not properly rendered within the panel. To avoid this scenario, the Dashboard Layout component's [RefreshAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Layouts.SfDashboardLayout.html#Syncfusion_Blazor_Layouts_SfDashboardLayout_RefreshAsync) and the Circular Gauge component's [RefreshAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.CircularGauge.SfCircularGauge.html#Syncfusion_Blazor_CircularGauge_SfCircularGauge_RefreshAsync) method must be called in the Dashboard Layout's [OnWindowResize](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Layouts.DashboardLayoutEvents.html#Syncfusion_Blazor_Layouts_DashboardLayoutEvents_OnWindowResize) events.
18+
When you drag and resize the Dashboard Layout panel or resize the window, the Circular Gauge component is not notified and thus may not render properly within the panel. To address this, call the Circular Gauge component's [RefreshAsync](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.CircularGauge.SfCircularGauge.html#Syncfusion_Blazor_CircularGauge_SfCircularGauge_RefreshAsync) method within the Dashboard Layout's [Resizing](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Layouts.DashboardLayoutEvents.html#Syncfusion_Blazor_Layouts_DashboardLayoutEvents_Resizing) and [OnWindowResize](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Layouts.DashboardLayoutEvents.html#Syncfusion_Blazor_Layouts_DashboardLayoutEvents_OnWindowResize) events. Additionally, apply a 500-millisecond delay using a timer to refresh the Circular Gauge components after resizing is complete.
2119

2220
```cshtml
2321
2422
@using Syncfusion.Blazor.CircularGauge
2523
@using Syncfusion.Blazor.Layouts
2624
@using Syncfusion.Blazor.Inputs
2725
28-
<SfDashboardLayout ID="DashBoard" @ref="DashboardLayout" AllowResizing="true" AllowFloating="true" CellSpacing="@CellSpacing" Columns="20">
29-
<DashboardLayoutEvents Created="Created" OnResizeStop="@ResizingHandler" OnWindowResize="@ResizingWindow" Resizing="ResizingHandler"></DashboardLayoutEvents>
26+
<SfDashboardLayout ID="DashBoard" AllowResizing="true" AllowFloating="true" CellSpacing="@CellSpacing" Columns="20">
27+
<DashboardLayoutEvents Created="Created" OnWindowResize="@ResizingWindow" Resizing="@ResizingWindow"></DashboardLayoutEvents>
3028
<DashboardLayoutPanels>
3129
<DashboardLayoutPanel Id="LayoutOne" Row="0" Col="5" SizeX="5" SizeY="7">
3230
<HeaderTemplate><div> Circular Gauge </div></HeaderTemplate>
@@ -110,7 +108,7 @@ On window resizing, the Circular Gauge component is not notified, so the Circula
110108
</CircularGaugePointer>
111109
</CircularGaugePointers>
112110
<CircularGaugeAnnotations>
113-
<CircularGaugeAnnotation Radius="0%" Angle="0" ZIndex="1">
111+
<CircularGaugeAnnotation Radius="30%" Angle="90" ZIndex="1">
114112
<ContentTemplate>
115113
<div class="annotationText">60/100</div>
116114
</ContentTemplate>
@@ -138,40 +136,39 @@ On window resizing, the Circular Gauge component is not notified, so the Circula
138136
SfCircularGauge GaugeOne;
139137
SfCircularGauge GaugeTwo;
140138
SfCircularGauge GaugeThree;
141-
SfDashboardLayout DashboardLayout;
139+
private Timer _resizeTimer;
142140
143141
public bool IsInitialRender { get; set; }
144142
public double[] CellSpacing = { 10, 10 };
145143
146144
public async void Created(Object args)
147145
{
146+
await Task.Yield();
148147
IsInitialRender = true;
149148
}
150149
151150
public async Task ResizingWindow(ResizeArgs args)
152151
{
153-
await DashboardLayout.RefreshAsync();
152+
if (_resizeTimer != null)
153+
{
154+
_resizeTimer.Dispose();
155+
}
156+
_resizeTimer = new Timer(async _ =>
157+
{
158+
await InvokeAsync(() =>
159+
{
160+
RefreshComponents();
161+
});
162+
}, null, 500, Timeout.Infinite);
163+
}
164+
165+
private async Task RefreshComponents()
166+
{
167+
await Task.Yield();
154168
await GaugeOne.RefreshAsync();
155169
await GaugeTwo.RefreshAsync();
156170
await GaugeThree.RefreshAsync();
157171
}
158-
159-
public async Task ResizingHandler(ResizeArgs args)
160-
{
161-
if (args.Id == "LayoutOne")
162-
{
163-
await Task.Delay(100);
164-
GaugeOne.RefreshAsync();
165-
} else if (args.Id == "LayoutTwo")
166-
{
167-
await Task.Delay(100);
168-
GaugeTwo.RefreshAsync();
169-
} else if (args.Id == "LayoutThree")
170-
{
171-
await Task.Delay(100);
172-
GaugeThree.RefreshAsync();
173-
}
174-
}
175172
}
176173
177174
```
@@ -323,7 +320,7 @@ When the Circular Gauge component renders within the Tab component, its renderin
323320

324321
## Circular Gauge component inside Dialog
325322

326-
When the Circular Gauge component renders within the Dialog component, its rendering begins concurrently with the Dialog component's rendering. As a result, the size of the Circular Gauge component will not be proper. To properly render the Circular Gauge component, a boolean variable (i.e. **IsInitialRender**) must be created and it is used to determine the Circular Gauge component's rendering. The boolean variable is set to **false** by default, so the Circular Gauge component will not be rendered initially. When the Dialog component is being opened, its [OnOpen](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Popups.DialogEvents.html#Syncfusion_Blazor_Popups_DialogEvents_OnOpen) event is fired, and the boolean variable (i.e. **IsInitialRender**) in this event must be changed to **true** to initiate the render of the Circular Gauge component. When the Dialog component is closed, its [Closed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Popups.DialogEvents.html#Syncfusion_Blazor_Popups_DialogEvents_Closed) event is fired, and the boolean variable (i.e. **IsInitialRender**) in this event must be changed to **false**.
323+
When the Circular Gauge component renders within the Dialog component, its rendering begins concurrently with the Dialog component's rendering. As a result, the size of the Circular Gauge component will not be proper. To properly render the Circular Gauge component, a boolean variable (i.e. **IsInitialRender**) must be created and it is used to determine the Circular Gauge component's rendering. The boolean variable is set to **false** by default, so the Circular Gauge component will not be rendered initially. When the Dialog component is being opened, its [Opened](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Popups.DialogEvents.html#Syncfusion_Blazor_Popups_DialogEvents_Opened) event is fired, and the boolean variable (i.e. **IsInitialRender**) must be set to **true** to initiate the render of the Circular Gauge component. When the Dialog component is closed, its [Closed](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Popups.DialogEvents.html#Syncfusion_Blazor_Popups_DialogEvents_Closed) event is triggered, and the boolean variable (i.e. **IsInitialRender**) in this event must be changed to false.
327324

328325
When you drag and resize the Dialog component, the Circular Gauge component is not notified, so the Circular Gauge is not properly rendered within the Dialog. To avoid this scenario, the Circular Gauge component's `RefreshAsync` method must be called in the Dialog's [Resizing](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Popups.DialogEvents.html#Syncfusion_Blazor_Popups_DialogEvents_Resizing) and [OnResizeStop](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.Popups.DialogEvents.html#Syncfusion_Blazor_Popups_DialogEvents_OnResizeStop) events. Because the size of the Dialog is determined after a delay, a 100 millisecond delay must be provided before refreshing the Circular Gauge component.
329326

@@ -340,7 +337,7 @@ When you drag and resize the Dialog component, the Circular Gauge component is n
340337
}
341338
</div>
342339
<SfDialog ResizeHandles="@DialogResizeDirections" AllowDragging="true" Height="400px" Width="400px" EnableResize="true" ShowCloseIcon="true" @bind-Visible="Visibility">
343-
<DialogEvents OnResizeStop="@OnResizeStopHandler" Resizing="OnResizeStopHandler" OnOpen="@DialogOpen" Closed="@DialogClose"></DialogEvents>
340+
<DialogEvents OnResizeStop="@OnResizeStopHandler" Resizing="OnResizeStopHandler" Opened="@DialogOpen" Closed="@DialogClose"></DialogEvents>
344341
<DialogTemplates>
345342
<Header>Circular Gauge</Header>
346343
<Content>
@@ -390,7 +387,7 @@ When you drag and resize the Dialog component, the Circular Gauge component is n
390387
Gauge.RefreshAsync();
391388
}
392389
393-
private void DialogOpen(Object args)
390+
public void DialogOpen(Object args)
394391
{
395392
this.ShowButton = false;
396393
IsInitialRender = true;
29.2 KB
Loading
33.4 KB
Loading
32.6 KB
Loading
35.8 KB
Loading
32.3 KB
Loading
39.5 KB
Loading

blazor/file-manager/multiple-file-selection.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,29 @@ For example, in the following example, selection is prevented for the **Music**
101101
102102
```
103103

104+
## Range Selection
105+
106+
The File Manager supports for selecting files and folders in specific ranges through mouse drag as like File Explorer. This is particularly useful in scenarios where users need to select a large group of files quickly without manually clicking each one.
107+
108+
### Enabling Range Selection
109+
110+
To enable range selection, you need to set the [EnableRangeSelection](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.FileManager.SfFileManager-1.html#Syncfusion_Blazor_FileManager_SfFileManager_1_EnableRangeSelection) property to `true` and ensure that multi-selection is allowed using the [AllowMultiSelection](https://help.syncfusion.com/cr/blazor/Syncfusion.Blazor.FileManager.SfFileManager-1.html#Syncfusion_Blazor_FileManager_SfFileManager_1_AllowMultiSelection) property.
111+
112+
````cshtml
113+
@using Syncfusion.Blazor.FileManager;
114+
<div class="control-section">
115+
<div class="control_wrapper">
116+
<SfFileManager @ref="File" TValue="FileManagerDirectoryContent" AllowMultiSelection="true" EnableRangeSelection="true">
117+
<FileManagerAjaxSettings Url="https://amazons3.azurewebsites.net/api/AmazonS3Provider/AmazonS3Fileoperations"
118+
UploadUrl="https://amazons3.azurewebsites.net/api/AmazonS3Provider/AmazonS3Upload"
119+
DownloadUrl="https://amazons3.azurewebsites.net/api/AmazonS3Provider/AmazonS3Download"
120+
GetImageUrl="https://amazons3.azurewebsites.net/api/AmazonS3Provider/AmazonS3GetImage">
121+
</FileManagerAjaxSettings>
122+
</SfFileManager>
123+
</div>
124+
</div>
125+
````
126+
104127
## Events
105128

106129
The Blazor FileManager component includes FileSelection and FileSelected events which are triggered during file selection and after a file has been selected, respectively. These events can be bound to the FileManager using the **FileManagerEvents**, which requires the **TValue** to be provided.

0 commit comments

Comments
 (0)