From 236041bde6d2301849a81f845e852613cd30e98b Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 7 Oct 2026 18:01:45 +0800 Subject: [PATCH 1/3] feat(ImageCropper): support static asset fingerprint - pass cropper.bundle.css url to JS via options.styleUrl - resolve url with Assets helper on .NET 9+ to enable cache busting - replace hard-coded path in addLink call --- .../BootstrapBlazor.ImageCropper/ImageCropper.razor.cs | 9 +++++++++ .../BootstrapBlazor.ImageCropper/ImageCropper.razor.js | 5 ++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/components/BootstrapBlazor.ImageCropper/ImageCropper.razor.cs b/src/components/BootstrapBlazor.ImageCropper/ImageCropper.razor.cs index 27954249..086072a5 100644 --- a/src/components/BootstrapBlazor.ImageCropper/ImageCropper.razor.cs +++ b/src/components/BootstrapBlazor.ImageCropper/ImageCropper.razor.cs @@ -12,6 +12,8 @@ namespace BootstrapBlazor.Components; /// public partial class ImageCropper { + private const string CropperStylePath = "_content/BootstrapBlazor.ImageCropper/cropper.bundle.css"; + /// /// 获得/设置 图片地址 URL /// @@ -92,8 +94,15 @@ protected override async Task OnAfterRenderAsync(bool firstRender) { Options = Options ?? new(), TriggerOnCropEndAsync = OnCropChangedAsync != null ? nameof(TriggerOnCropChangedAsync) : null, + StyleUrl = CropperStyleUrl }); +#if NET9_0_OR_GREATER + private string CropperStyleUrl => Assets[CropperStylePath]; +#else + private static string CropperStyleUrl => CropperStylePath; +#endif + /// /// 剪裁方法 触发 回调方法 /// diff --git a/src/components/BootstrapBlazor.ImageCropper/ImageCropper.razor.js b/src/components/BootstrapBlazor.ImageCropper/ImageCropper.razor.js index 98e8c6c8..d566913f 100644 --- a/src/components/BootstrapBlazor.ImageCropper/ImageCropper.razor.js +++ b/src/components/BootstrapBlazor.ImageCropper/ImageCropper.razor.js @@ -3,15 +3,14 @@ import Data from '../BootstrapBlazor/modules/data.js' import { addLink } from '../BootstrapBlazor/modules/utility.js' export async function init(id, invoke, options) { - await addLink("./_content/BootstrapBlazor.ImageCropper/cropper.bundle.css"); - const el = document.getElementById(id); if (el === null) { return; } const image = el.querySelector(".bb-cropper-image"); - const { options: op, triggerOnCropEndAsync } = options; + const { options: op, triggerOnCropEndAsync, styleUrl } = options; + await addLink(styleUrl); if (triggerOnCropEndAsync) { let cropData = null; op.cropend = () => { From 01cbcedea5780fe9a7b42eca7851da88a4d872b4 Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 7 Oct 2026 18:05:45 +0800 Subject: [PATCH 2/3] chore(ImageCropper): bump version 10.0.1 --- .../BootstrapBlazor.ImageCropper.csproj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/components/BootstrapBlazor.ImageCropper/BootstrapBlazor.ImageCropper.csproj b/src/components/BootstrapBlazor.ImageCropper/BootstrapBlazor.ImageCropper.csproj index c8e986c6..57b4ff5a 100644 --- a/src/components/BootstrapBlazor.ImageCropper/BootstrapBlazor.ImageCropper.csproj +++ b/src/components/BootstrapBlazor.ImageCropper/BootstrapBlazor.ImageCropper.csproj @@ -1,5 +1,9 @@ + + 10.0.1 + + Bootstrap Blazor WebAssembly wasm UI Components ImageCropper Bootstrap UI components extensions of ImageCropper From ef2499be98865c2c61cd87f050c8b9d921e2096a Mon Sep 17 00:00:00 2001 From: Argo Zhang Date: Wed, 7 Oct 2026 18:06:01 +0800 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0=E5=BF=BD?= =?UTF-8?q?=E7=95=A5=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 9144c18d..c5366f95 100644 --- a/.gitignore +++ b/.gitignore @@ -389,3 +389,6 @@ src/**/wwwroot/**/uploader # test **/UnitTestSvgIcon/**/*.svg **/UnitTestSvgIcon/**/*.razor + +# AI +**/.workbuddy/