75 lines
2.1 KiB
Plaintext
75 lines
2.1 KiB
Plaintext
@using DevExpress.Blazor
|
|
|
|
<CascadingValue Value="this">
|
|
@if (ShowInfoPanel)
|
|
{
|
|
<DxSplitter Width="100%" CssClass="mg-grid-with-info-panel" Orientation="Orientation.Horizontal">
|
|
<Panes>
|
|
<DxSplitterPane>
|
|
@GridContent
|
|
</DxSplitterPane>
|
|
<DxSplitterPane Size="@InfoPanelSize" MinSize="0px" MaxSize="100%" AllowCollapse="true" CssClass="mg-info-panel-pane">
|
|
@if (ChildContent != null)
|
|
{
|
|
@ChildContent
|
|
}
|
|
else
|
|
{
|
|
<MgGridInfoPanel />
|
|
}
|
|
</DxSplitterPane>
|
|
</Panes>
|
|
</DxSplitter>
|
|
}
|
|
else
|
|
{
|
|
@GridContent
|
|
}
|
|
</CascadingValue>
|
|
|
|
@code {
|
|
private IInfoPanelBase? _infoPanelInstance;
|
|
|
|
/// <summary>
|
|
/// The grid content to display in the left pane
|
|
/// </summary>
|
|
[Parameter]
|
|
public RenderFragment? GridContent { get; set; }
|
|
|
|
/// <summary>
|
|
/// InfoPanel content (e.g., GridShippingDocumentInfoPanel) to display in the right pane.
|
|
/// If not set, the default MgGridInfoPanel is used.
|
|
/// </summary>
|
|
[Parameter]
|
|
public RenderFragment? ChildContent { get; set; }
|
|
|
|
/// <summary>
|
|
/// Initial size of the InfoPanel pane. Default is "400px".
|
|
/// </summary>
|
|
[Parameter]
|
|
public string InfoPanelSize { get; set; } = "400px";
|
|
|
|
/// <summary>
|
|
/// Whether to show the InfoPanel. Default is true.
|
|
/// </summary>
|
|
[Parameter]
|
|
public bool ShowInfoPanel { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Gets or sets the InfoPanel instance for grid-InfoPanel communication
|
|
/// </summary>
|
|
public IInfoPanelBase? InfoPanelInstance
|
|
{
|
|
get => _infoPanelInstance;
|
|
set => _infoPanelInstance = value;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Registers an InfoPanel instance (called by child InfoPanel components)
|
|
/// </summary>
|
|
public void RegisterInfoPanel(IInfoPanelBase infoPanel)
|
|
{
|
|
_infoPanelInstance = infoPanel;
|
|
}
|
|
}
|