diff --git a/src/Masa.Blazor/Components/Pagination/MPagination.razor b/src/Masa.Blazor/Components/Pagination/MPagination.razor
index 6b6928d1fe..c44ff83b18 100644
--- a/src/Masa.Blazor/Components/Pagination/MPagination.razor
+++ b/src/Masa.Blazor/Components/Pagination/MPagination.razor
@@ -8,18 +8,29 @@
@GenPaginationIcon(PaginationIconType.First)
- @foreach (var item in GetItems())
+ @if (prevMiniVariant)
{
- -
- @if (item.IsT0)
- {
- @item
- }
- else
- {
- @GenPaginationItem(item)
- }
-
+
+ }
+ else
+ {
+ @foreach (var item in GetItems())
+ {
+ -
+ @if (item.IsT0)
+ {
+ @item
+ }
+ else
+ {
+ @GenPaginationItem(item)
+ }
+
+ }
}
@GenPaginationIcon(PaginationIconType.Second)
diff --git a/src/Masa.Blazor/Components/Pagination/MPagination.razor.cs b/src/Masa.Blazor/Components/Pagination/MPagination.razor.cs
index ac9b3ed206..82725f4842 100644
--- a/src/Masa.Blazor/Components/Pagination/MPagination.razor.cs
+++ b/src/Masa.Blazor/Components/Pagination/MPagination.razor.cs
@@ -47,6 +47,25 @@ public partial class MPagination : MasaComponentBase
[CascadingParameter(Name = "IsDark")] public bool CascadingIsDark { get; set; }
+ [Parameter, MasaApiParameter(false, "v1.7.0")]
+ public bool MiniVariant
+ {
+ get => GetValue(false);
+ set => SetValue(value);
+ }
+
+ [Parameter, MasaApiParameter(ReleasedOn = "v1.7.0")]
+ public EventCallback MiniVariantChanged { get; set; }
+
+ [Parameter, MasaApiParameter(600, "v1.7.0")]
+ public OneOf MobileBreakpoint
+ {
+ get => GetValue>(600);
+ set => SetValue(value);
+ }
+
+ private bool prevMiniVariant;
+
public bool IsDark
{
get
@@ -79,17 +98,25 @@ public bool IsDark
private bool IndependentTheme =>
(IsDirtyParameter(nameof(Dark)) && Dark) || (IsDirtyParameter(nameof(Light)) && Light);
+ protected override void OnParametersSet()
+ {
+ base.OnParametersSet();
+
#if NET8_0_OR_GREATER
- protected override void OnParametersSet()
+ if (MasaBlazor.IsSsr && !IndependentTheme)
{
- base.OnParametersSet();
+ CascadingIsDark = MasaBlazor.Theme.Dark;
+ }
+#endif
- if (MasaBlazor.IsSsr && !IndependentTheme)
+ if (IsDirtyParameter(nameof(MiniVariant)))
+ {
+ if (MiniVariant != prevMiniVariant)
{
- CascadingIsDark = MasaBlazor.Theme.Dark;
+ prevMiniVariant = MiniVariant;
}
}
-#endif
+ }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
@@ -280,4 +307,53 @@ protected override async ValueTask DisposeAsyncCore()
{
await IntersectJSModule.UnobserveAsync(Ref);
}
+
+ protected override void OnInitialized()
+ {
+ MasaBlazor.WindowSizeChanged -= MasaBlazor_WindowSizeChanged;
+ MasaBlazor.WindowSizeChanged += MasaBlazor_WindowSizeChanged;
+ }
+
+ private async void MasaBlazor_WindowSizeChanged(object? sender, BreakpointChangedEventArgs e)
+ {
+ if (IsDirtyParameter(nameof(MiniVariant)))
+ {
+ return;
+ }
+
+ var isM = CalMobileBreakpoint();
+ if (isM != prevMiniVariant)
+ {
+ prevMiniVariant = isM;
+ if (MiniVariantChanged.HasDelegate)
+ {
+ await MiniVariantChanged.InvokeAsync(prevMiniVariant);
+ }
+ StateHasChanged();
+ }
+ }
+
+ private bool CalMobileBreakpoint() => CalMobileBreakpoint(MasaBlazor, MobileBreakpoint);
+
+ private static bool CalMobileBreakpoint(MasaBlazor masaBlazor, OneOf mbpParam)
+ {
+ var (width, mobile, name, mobileBreakpoint) = masaBlazor.Breakpoint;
+
+ if (width == 0)
+ {
+ return false;
+ }
+
+ if (mobileBreakpoint.Equals(mbpParam))
+ {
+ return mobile;
+ }
+
+ if (mbpParam.IsT1)
+ {
+ return width <= mbpParam.AsT1;
+ }
+
+ return name <= mbpParam.AsT0;
+ }
}
\ No newline at end of file