From bdaefeddd754c76154c8b88ae77221f2b744f1b7 Mon Sep 17 00:00:00 2001 From: Mark Stega Date: Wed, 15 Jul 2026 14:59:49 -0400 Subject: [PATCH] 2026-07-15 5.3.28 -- Build modernization: rolldown, TypeScript 7, pnpm 11, bunit 2 - Replace webpack, babel & terser with rolldown in Material.Blazor and Material.Blazor.Website; one config now emits both plain and minified bundles (min.js 327KB vs 335KB before, license headers still deduped) - Upgrade TypeScript to 7.0.2 (native compiler); type checking runs as a dedicated 'tsc --noEmit' build step; tsconfig moves to module ESNext / moduleResolution Bundler - pnpm 11: settings move from .npmrc to pnpm-workspace.yaml (shamefullyHoist, engineStrict); .npmrc keeps engine-strict only as the npm/yarn guard; GitHub actions bump pnpm 9.12.2 -> 11.12.0 - bunit 1.40 -> 2.7.2: single package reference, BunitContext/Render API, strongly typed parameter builder; all 24 tests pass - .Net 8.0.29 package updates and release notes for 5.3.28 Co-Authored-By: Claude Fable 5 --- .github/workflows/GithubActionsRelease.yml | 10 +- .github/workflows/GithubActionsWIP.yml | 10 +- .../Material.Blazor.Test.csproj | 10 +- Material.Blazor.Test/Mocking.cs | 93 +- .../Material.Blazor.Website.Server.csproj | 6 +- ...Material.Blazor.Website.WebAssembly.csproj | 6 +- Material.Blazor.Website/.babelrc | 11 - Material.Blazor.Website/.npmrc | 4 +- .../Material.Blazor.Website.csproj | 10 +- Material.Blazor.Website/Pages/Dialog.razor | 2 +- Material.Blazor.Website/package.json | 23 +- Material.Blazor.Website/pnpm-lock.yaml | 3473 +- Material.Blazor.Website/pnpm-workspace.yaml | 22 + Material.Blazor.Website/rolldown.config.mjs | 28 + Material.Blazor.Website/tsconfig.json | 4 +- Material.Blazor.Website/webpack.config.js | 41 - .../wwwroot/js/material.blazor.website.js | 98 +- .../wwwroot/js/material.blazor.website.min.js | 2 +- Material.Blazor/.babelrc | 11 - Material.Blazor/.npmrc | 4 +- Material.Blazor/Material.Blazor.csproj | 10 +- Material.Blazor/Scripts/lodashparts.ts | 2 + Material.Blazor/package.json | 24 +- Material.Blazor/pnpm-lock.yaml | 3376 +- Material.Blazor/pnpm-workspace.yaml | 23 + Material.Blazor/rolldown.config.mjs | 28 + Material.Blazor/tsconfig.json | 4 +- Material.Blazor/webpack.config.js | 41 - Material.Blazor/wwwroot/material.blazor.js | 41914 +++++++--------- .../wwwroot/material.blazor.min.js | 580 +- ReleaseNotes.md | 24 + 31 files changed, 20820 insertions(+), 29074 deletions(-) delete mode 100644 Material.Blazor.Website/.babelrc create mode 100644 Material.Blazor.Website/pnpm-workspace.yaml create mode 100644 Material.Blazor.Website/rolldown.config.mjs delete mode 100644 Material.Blazor.Website/webpack.config.js delete mode 100644 Material.Blazor/.babelrc create mode 100644 Material.Blazor/pnpm-workspace.yaml create mode 100644 Material.Blazor/rolldown.config.mjs delete mode 100644 Material.Blazor/webpack.config.js diff --git a/.github/workflows/GithubActionsRelease.yml b/.github/workflows/GithubActionsRelease.yml index 750f86b54..f0a7c6df0 100644 --- a/.github/workflows/GithubActionsRelease.yml +++ b/.github/workflows/GithubActionsRelease.yml @@ -53,7 +53,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Run the acceptance tests as the first build action and cancel out the rest if it fails run: dotnet test ${{env.projectTest}} --configuration ${{env.buildConfiguration}} @@ -79,7 +79,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Build Material.Blazor run: dotnet build ${{env.projectMB}} --configuration ${{env.buildConfiguration}} @@ -119,7 +119,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Build and Publish Website 🔧 run: > @@ -157,7 +157,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Download Artifacts 🔻 # The documentation is downloaded into the 'siteDocFx' folder. uses: actions/download-artifact@v4 @@ -212,7 +212,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Build Material.Blazor & Generate the NuGet package 🔧 run: > diff --git a/.github/workflows/GithubActionsWIP.yml b/.github/workflows/GithubActionsWIP.yml index 80c2bb6c7..208eff24d 100644 --- a/.github/workflows/GithubActionsWIP.yml +++ b/.github/workflows/GithubActionsWIP.yml @@ -84,7 +84,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Run the acceptance tests as the first build action and cancel out the rest if it fails run: dotnet test ${{env.projectTest}} --configuration ${{env.buildConfiguration}} @@ -112,7 +112,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Build Material.Blazor run: dotnet build ${{env.projectMB}} --configuration ${{env.buildConfiguration}} @@ -159,7 +159,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Build & Publish Website 🔧 run: > @@ -223,7 +223,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Build Material.Blazor & Generate the NuGet package 🔧 run: > @@ -407,7 +407,7 @@ jobs: - name: Install pnpm uses: pnpm/action-setup@v4 with: - version: 9.12.2 + version: 11.12.0 - name: Build Material.Blazor & Generate the NuGet package 🔧 run: > diff --git a/Material.Blazor.Test/Material.Blazor.Test.csproj b/Material.Blazor.Test/Material.Blazor.Test.csproj index d9f296e8a..de55e12af 100644 --- a/Material.Blazor.Test/Material.Blazor.Test.csproj +++ b/Material.Blazor.Test/Material.Blazor.Test.csproj @@ -4,17 +4,15 @@ - - - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/Material.Blazor.Test/Mocking.cs b/Material.Blazor.Test/Mocking.cs index d29f8096b..6a06d81bd 100644 --- a/Material.Blazor.Test/Mocking.cs +++ b/Material.Blazor.Test/Mocking.cs @@ -12,7 +12,7 @@ namespace Material.Blazor.Test; public class Mocking { - private TestContext ctx; + private BunitContext ctx; private void InjectMockedServices() { _ = new BunitJSInterop @@ -42,7 +42,7 @@ private void InjectMockedServices() public void TryRenderMBAnchor() { InjectMockedServices(); - var cut = ctx.RenderComponent(); + var cut = ctx.Render(); cut.MarkupMatches(""); } @@ -51,13 +51,12 @@ public void TryRenderMBAutocompleteTextField() { InjectMockedServices(); string[] fruits = { "Avocado", "Banana", "Blackberry" }; - var cut = ctx.RenderComponent - ((nameof(MBAutocompleteTextField.AllowBlankResult), false), - (nameof(MBAutocompleteTextField.Label), "Hello button"), - (nameof(MBAutocompleteTextField.LeadingIcon), "alarm"), - (nameof(MBAutocompleteTextField.SelectItems), @fruits), - (nameof(MBAutocompleteTextField.TextInputStyle), MBTextInputStyle.Filled) - ); + var cut = ctx.Render(parameters => parameters + .Add(p => p.AllowBlankResult, false) + .Add(p => p.Label, "Hello button") + .Add(p => p.LeadingIcon, "alarm") + .Add(p => p.SelectItems, fruits) + .Add(p => p.TextInputStyle, MBTextInputStyle.Filled)); cut.MarkupMatches(@"