diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index d9e7de776b5..b7f5fa4a195 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@  - 9.5.10 + 9.5.11-beta01 diff --git a/src/BootstrapBlazor/Components/Dialog/Dialog.razor b/src/BootstrapBlazor/Components/Dialog/Dialog.razor index 749452aa414..3b10c1d9111 100644 --- a/src/BootstrapBlazor/Components/Dialog/Dialog.razor +++ b/src/BootstrapBlazor/Components/Dialog/Dialog.razor @@ -2,7 +2,7 @@ @inherits BootstrapComponentBase + OnShownAsync="@_onShownAsync" OnCloseAsync="@_onCloseAsync" class="@ClassString"> @for (var index = 0; index < DialogParameters.Keys.Count; index++) { @RenderDialog(index, DialogParameters.Keys.ElementAt(index)) diff --git a/src/BootstrapBlazor/Components/Dialog/Dialog.razor.cs b/src/BootstrapBlazor/Components/Dialog/Dialog.razor.cs index 69d1dc445fa..efca43cdadc 100644 --- a/src/BootstrapBlazor/Components/Dialog/Dialog.razor.cs +++ b/src/BootstrapBlazor/Components/Dialog/Dialog.razor.cs @@ -29,6 +29,11 @@ public partial class Dialog : IDisposable private bool _isBackdrop = false; private bool? _isFade = null; + private string? ClassString => CssBuilder.Default() + .AddClass("modal-multiple", DialogParameters.Count > 1) + .AddClass("show", DialogParameters.Count > 0) + .Build(); + /// /// /// diff --git a/src/BootstrapBlazor/Components/Dialog/DialogOption.cs b/src/BootstrapBlazor/Components/Dialog/DialogOption.cs index ac271149044..a88c4070691 100644 --- a/src/BootstrapBlazor/Components/Dialog/DialogOption.cs +++ b/src/BootstrapBlazor/Components/Dialog/DialogOption.cs @@ -197,6 +197,11 @@ public class DialogOption /// public ExportPdfButtonOptions? ExportPdfButtonOptions { get; set; } + /// + /// Gets or sets whether to hide the previous dialog when opening a new one, default is false + /// + public bool IsHidePreviousDialog { get; set; } + /// /// Method to close the dialog /// @@ -220,6 +225,7 @@ public Dictionary ToAttributes() [nameof(ModalDialog.FullScreenSize)] = FullScreenSize, [nameof(ModalDialog.IsCentered)] = IsCentered, [nameof(ModalDialog.IsScrolling)] = IsScrolling, + [nameof(ModalDialog.IsHidePreviousDialog)] = IsHidePreviousDialog, [nameof(ModalDialog.ShowCloseButton)] = ShowCloseButton, [nameof(ModalDialog.ShowSaveButton)] = ShowSaveButton, [nameof(ModalDialog.ShowHeaderCloseButton)] = ShowHeaderCloseButton, diff --git a/src/BootstrapBlazor/Components/Modal/Modal.razor.scss b/src/BootstrapBlazor/Components/Modal/Modal.razor.scss index 429e3e81a15..2e90fc7a1be 100644 --- a/src/BootstrapBlazor/Components/Modal/Modal.razor.scss +++ b/src/BootstrapBlazor/Components/Modal/Modal.razor.scss @@ -1,4 +1,4 @@ -.is-draggable .modal-header { +.is-draggable .modal-header { cursor: pointer; } @@ -70,6 +70,24 @@ width: 100vw !important; } +.modal-multiple .modal-dialog { + position: fixed; + inset: 0; + + &:last-child:before { + content: ""; + position: fixed; + inset: 0; + background-color: #000; + opacity: 0.3; + pointer-events: auto; + } +} + +.modal-multiple ~ .modal-backdrop { + display: none; +} + @media print { .bb-printview-open { overflow: auto !important; diff --git a/src/BootstrapBlazor/Components/Modal/ModalDialog.razor.cs b/src/BootstrapBlazor/Components/Modal/ModalDialog.razor.cs index 922a2d917d5..4ea305c09c1 100644 --- a/src/BootstrapBlazor/Components/Modal/ModalDialog.razor.cs +++ b/src/BootstrapBlazor/Components/Modal/ModalDialog.razor.cs @@ -25,7 +25,7 @@ public partial class ModalDialog : IHandlerException .AddClass("modal-fullscreen", MaximizeStatus) .AddClass("is-draggable", IsDraggable) .AddClass("is-draggable-center", IsCentered && IsDraggable && _firstRender) - .AddClass("d-none", !IsShown) + .AddClass("d-none", IsHidePreviousDialog && !IsShown) .AddClass(Class, !string.IsNullOrEmpty(Class)) .AddClassFromAttributes(AdditionalAttributes) .Build(); @@ -78,6 +78,12 @@ public partial class ModalDialog : IHandlerException [Parameter] public bool IsScrolling { get; set; } + /// + /// Gets or sets whether to hide the previous dialog when opening a new one, default is false + /// + [Parameter] + public bool IsHidePreviousDialog { get; set; } + /// /// 获得/设置 是否可以拖拽弹窗 默认 false 不可以拖动 ///