Skip to content

Merge branch dev with rel-10.4#25479

Merged
voloagent merged 17 commits into
devfrom
auto-merge/rel-10-4/4584
May 26, 2026
Merged

Merge branch dev with rel-10.4#25479
voloagent merged 17 commits into
devfrom
auto-merge/rel-10-4/4584

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

This PR generated automatically to merge dev with rel-10.4. Please review the changed files before merging to prevent any errors that may occur.

maliming and others added 17 commits May 8, 2026 11:17
Saas tenant create modal (and other mud CRUD pages) duplicated rows when
the user double-clicked Save: the second click hit AppService.CreateAsync
before the first response had returned.

Add IsCreating / IsUpdating gates to AbpMudCrudPageBase so concurrent
calls return immediately. Wrap the body in try/finally and trigger
StateHasChanged so any UI bindings to these flags reflect the busy state.
Top-level "Select All in All Tabs" already used `Indeterminate` to show
a partial-grant state. The per-tab "Select All in This Tab" checkbox
was a plain two-state binding to `Permissions.All(x => x.IsGranted)`,
so a tab with some (but not all) permissions granted rendered as
unchecked - reading as "no permissions granted" to QA.

Bind `Indeterminate` to "any granted but not all granted" to match the
top-level behavior.
- Directory.Packages.props bumps MudBlazor 8.0.0 to 9.4.0
- AbpMudCrudPageBase: ShowMessageBox to ShowMessageBoxAsync, OnDataGridReadAsync adds CancellationToken
- AbpMudExtensibleDataGrid: ServerData adds CancellationToken, SortFunc becomes Func<TItem, object?>
- basic-theme LoginDisplay (Server + WASM): name MudMenu ActivatorContent context to avoid AuthorizeView clash
- permission-management and feature-management modals: ShowMessageBox to ShowMessageBoxAsync
- MudMenu: switch ActivatorContent to MenuContext.ToggleAsync pattern (v9 breaking)
- MudForm: rename Validate to ValidateAsync (v9.1 obsoletion)
- MudInput: replace AutoGrow with Sizing for textarea
- DataGrid: add white-space:nowrap on header to prevent CJK characters stacking vertically
- BlockUI: shrink loading spinner inside mud-dialog
- Search field: switch Label to Placeholder so the text shows next to the magnifier icon
Long label text (e.g. Turkish translations) on MudDatePicker / MudTimePicker overflowed
the input and visually overlapped the calendar toggle icon on the right. Reserve 40px
on the right for the end-adornment icon so the label clips with ellipsis.
The custom Style="max-height: 600px; overflow-y: auto;" on MudTabs produced an inner
scrollbar in addition to mud-dialog's own scrollbar, resulting in a double scrolling
experience inside the permissions modal. Let mud-dialog handle overflow natively.
MudBlazor 9 defaults .mud-input-label-inputcontrol to line-height: 1.15rem, which is
smaller than a typical 16px character with descenders. Letters like g, p, q, y in the
floated label visually clipped under the input baseline. Bump to 1.4rem so descenders
have room without enlarging the overall control.
MudBlazor 9 renders mud-tabs-vertical with the tabbar flush against the panels
container, making the active tab indicator visually touch the panel content.
Add 16px padding-inline-start on the panels area (and -end for the reverse layout)
so the tabbar and panels have breathing room.
…with modal focus behavior and namespace usage
@voloagent voloagent marked this pull request as ready for review May 26, 2026 10:06
Copilot AI review requested due to automatic review settings May 26, 2026 10:06
@voloagent voloagent merged commit cebcfe3 into dev May 26, 2026
1 check passed
@voloagent voloagent deleted the auto-merge/rel-10-4/4584 branch May 26, 2026 10:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This automated merge brings dev changes into rel-10.4, primarily updating ABP’s MudBlazor integration to align with MudBlazor v9 APIs and improving MudBlazor UI behavior (dialogs, tabs, progress, styling).

Changes:

  • Upgraded MudBlazor from 8.0.0 to 9.4.0 and updated affected UI usages (e.g., ValidateAsync, ShowMessageBoxAsync, dialog focus handling).
  • Improved modal/tab UX (default focus behavior, KeepPanelsAlive, tri-state “select all” behavior in permission management).
  • Added MudBlazor-specific UI patches (CSS fixes + popover JS patch) and wired the patch into MudBlazor script bundles.

Reviewed changes

Copilot reviewed 37 out of 37 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.MudBlazor/Pages/TenantManagement/TenantManagement.razor.cs Updates MudForm validation to ValidateAsync() for MudBlazor v9 compatibility.
modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.MudBlazor/Pages/TenantManagement/TenantManagement.razor Sets dialog DefaultFocus to improve initial focus behavior.
modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor.MudBlazor/_Imports.razor Adds MudBlazor Layout namespace import for shared layout components (e.g., PageHeader).
modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/SettingManagement.razor Adds loading spinner/height styling and conditional rendering around group selection.
modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor.cs Updates MudForm validation to ValidateAsync().
modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/Pages/SettingManagement/EmailSettingGroup/EmailSettingGroupViewComponent.razor Sets dialog DefaultFocus for better focus behavior.
modules/setting-management/src/Volo.Abp.SettingManagement.Blazor.MudBlazor/_Imports.razor Adds MudBlazor Layout namespace import.
modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/ResourcePermissionManagementModal.razor.cs Updates validation + migrates message box call to ShowMessageBoxAsync().
modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/ResourcePermissionManagementModal.razor Sets dialog DefaultFocus on multiple dialogs.
modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/PermissionManagementModal.razor.cs Migrates warning confirmation dialog to ShowMessageBoxAsync().
modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/Components/PermissionManagementModal.razor Dialog focus changes, search field UX changes, tri-state “select all”, and KeepPanelsAlive for tabs.
modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor.MudBlazor/_Imports.razor Adds MudBlazor Layout namespace import.
modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/UserManagement.razor Search field UX changes; dialog focus changes; enables KeepPanelsAlive and AutoFocus for tabbed dialogs.
modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/Pages/Identity/RoleManagement.razor Sets dialog DefaultFocus for create/edit dialogs.
modules/identity/src/Volo.Abp.Identity.Blazor.MudBlazor/_Imports.razor Adds MudBlazor Layout namespace import.
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor.MudBlazor/Components/FeatureManagementModal.razor.cs Migrates reset confirmation dialog to ShowMessageBoxAsync().
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor.MudBlazor/Components/FeatureManagementModal.razor Sets dialog focus and keeps tab panels alive.
modules/feature-management/src/Volo.Abp.FeatureManagement.Blazor.MudBlazor/_Imports.razor Adds MudBlazor Layout namespace import.
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.MudBlazorBasicTheme/Themes/Basic/LoginDisplay.razor Updates MudMenu activator to use Context + ToggleAsync() behavior.
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.MudBlazorBasicTheme/Themes/Basic/LanguageSwitch.razor Updates MudMenu activator to use Context + ToggleAsync() behavior.
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.MudBlazorBasicTheme/Themes/Basic/LoginDisplay.razor Updates MudMenu activator to use Context + ToggleAsync() behavior.
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Server.MudBlazorBasicTheme/Themes/Basic/LanguageSwitch.razor Updates MudMenu activator to use Context + ToggleAsync() behavior.
modules/account/src/Volo.Abp.Account.Blazor.MudBlazor/Pages/Account/AccountManage.razor.cs Updates MudForm validation to ValidateAsync().
modules/account/src/Volo.Abp.Account.Blazor.MudBlazor/_Imports.razor Adds MudBlazor Layout namespace import.
framework/src/Volo.Abp.MudBlazorUI/wwwroot/volo.abp.mudblazorui.css Adds MudBlazor v9-specific styling fixes (dialogs, DataGrid headers, pickers, labels, vertical tabs).
framework/src/Volo.Abp.MudBlazorUI/wwwroot/abp-mud-popover-patch.js Adds runtime patch to guard MudBlazor popover observer creation.
framework/src/Volo.Abp.MudBlazorUI/MudBlazorUiPageProgressService.cs Reworks page progress behavior with delayed hide + nested activity tracking.
framework/src/Volo.Abp.MudBlazorUI/Components/ObjectExtending/MudTextAreaExtensionProperty.razor Updates textarea autosize behavior to MudBlazor v9 parameter (Sizing).
framework/src/Volo.Abp.MudBlazorUI/Components/AbpMudExtensibleDataGrid.razor.cs Updates DataGrid server data signature to include CancellationToken; adjusts sort delegate nullability.
framework/src/Volo.Abp.MudBlazorUI/AbpMudCrudPageBase.cs Updates grid server read signature, form validation calls, dialog confirmation API, and adds create/update reentrancy guards.
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming.MudBlazor.Bundling/BlazorWebAssemblyMudBlazorScriptContributor.cs Ensures popover patch JS is included in WASM MudBlazor bundles.
framework/src/Volo.Abp.AspNetCore.Components.Server.Theming.MudBlazor/Bundling/BlazorServerMudBlazorScriptContributor.cs Ensures popover patch JS is included in Server MudBlazor bundles.
framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor.Theming.MudBlazor.Bundling/MauiBlazorMudBlazorScriptContributor.cs Ensures popover patch JS is included in MAUI MudBlazor bundles.
docs/en/package-version-changes.md Documents MudBlazor package upgrade for 10.4.1.
docs/en/framework/ui/blazor/page-header.md Updates PageHeader docs to distinguish required namespaces for Blazorise vs MudBlazor.
docs/en/framework/ui/blazor/forms-validation.md Adds MudBlazor modal focus guidance for tabbed dialogs.
Directory.Packages.props Bumps MudBlazor dependency to 9.4.0.


public MudBlazorUiPageProgressService()
{
_hideTimer = new Timer(_ => ProgressChanged?.Invoke(this, new UiPageProgressEventArgs(-1, _lastOptions)));
Comment on lines +34 to +38
if (percentage == -1 && Interlocked.Decrement(ref _activeCount) <= 0)
{
Interlocked.Exchange(ref _activeCount, 0);
_hideTimer.Change(HideDelayMs, Timeout.Infinite);
}
Comment on lines 25 to 29
<MudTextField Margin="Margin.Dense" @bind-Value="GetListInput.Filter"
Label="@L["Search"]"
Placeholder="@L["Search"]"
Adornment="Adornment.Start"
AdornmentIcon="@Icons.Material.Filled.Search"
Immediate="true"
<MudTextField Margin="Margin.Dense" Value="@_permissionGroupSearchText"
ValueChanged="@(async ([CanBeNull] string b) => await OnPermissionGroupSearchTextChangedAsync(b))"
Label="@L["Search"]"
Placeholder="@L["Search"]"
Comment on lines +18 to +22
@if (string.IsNullOrEmpty(SelectedGroup))
{
<div class="d-flex justify-center align-center" style="min-height: 360px;">
<MudProgressCircular Indeterminate="true" Color="Color.Primary" />
</div>
@codecov

codecov Bot commented May 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 49.42%. Comparing base (4265df0) to head (868c729).
⚠️ Report is 138 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff             @@
##              dev   #25479      +/-   ##
==========================================
- Coverage   49.44%   49.42%   -0.03%     
==========================================
  Files        3670     3670              
  Lines      123599   123599              
  Branches     9453     9453              
==========================================
- Hits        61111    61083      -28     
- Misses      60654    60682      +28     
  Partials     1834     1834              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants