Skip to content

Commit 13a2011

Browse files
authored
Update docs and project files for Blazor Bootstrap 4.0.0 (#1313)
* Update docs and project files for Blazor Bootstrap 4.0.0 All docs and badges now reference v4.0.0. Added release notes and migration guide for 4.0.0, detailing breaking changes (dropped .NET 6.0, chart components moved to BlazorExpress.ChartJS), new components (RichTextEditor, FileInput, DragAndDropFileInput, SplitView, OTP Input), enhancements, bug fixes, and improved API docs. Updated .csproj to version 4.0.0. * Update badges, reorder demos, bump version to 4.0.0 Index.razor: Adjusted <Badge> indicators for demo links, reordered and corrected demo routes (e.g., "Icons" demo). appsettings.json: Bumped version to 4.0.0 and updated release description to highlight new features (RichTextEditor, FileInput, SplitView, OTP Input, ChartJS switch).
1 parent 722922c commit 13a2011

16 files changed

Lines changed: 321 additions & 37 deletions

‎BlazorBootstrap.Demo.RCL/Components/Pages/Home/Index.razor‎

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
</div>
8383
<div class="col-sm-4 mb-2">
8484
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Charts">
85-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.BarChartLineFill" class="me-2" /> Charts</h4>
85+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.BarChartLineFill" class="me-2" /> Charts <Badge Color="BadgeColor.Success">Updated</Badge></h4>
8686
</a>
8787
</div>
8888
<div class="col-sm-4 mb-2">
@@ -97,12 +97,12 @@
9797
</div>
9898
<div class="col-sm-4 mb-2">
9999
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_ConfirmDialog">
100-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.QuestionDiamondFill" class="me-2" /> Confirm Dialog</h4>
100+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.QuestionDiamondFill" class="me-2" /> Confirm Dialog <Badge Color="BadgeColor.Success">Updated</Badge></h4>
101101
</a>
102102
</div>
103103
<div class="col-sm-4 mb-2">
104104
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_CurrencyInput">
105-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.CurrencyDollar" class="me-2" /> Currency Input</h4>
105+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.CurrencyDollar" class="me-2" /> Currency Input <Badge Color="BadgeColor.Success">Updated</Badge></h4>
106106
</a>
107107
</div>
108108
<div class="col-sm-4 mb-2">
@@ -117,12 +117,12 @@
117117
</div>
118118
<div class="col-sm-4 mb-2">
119119
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Dropdown">
120-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.MenuButtonWideFill" class="me-2" /> Dropdown</h4>
120+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.MenuButtonWideFill" class="me-2" /> Dropdown <Badge Color="BadgeColor.Success">Updated</Badge></h4>
121121
</a>
122122
</div>
123123
<div class="col-sm-4 mb-2">
124124
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_EnumInput">
125-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.MenuButtonWideFill" class="me-2" /> Enum Input <Badge Color="BadgeColor.Danger">New</Badge></h4>
125+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.MenuButtonWideFill" class="me-2" /> Enum Input</h4>
126126
</a>
127127
</div>
128128
<div class="col-sm-4 mb-2">
@@ -132,7 +132,7 @@
132132
</div>
133133
<div class="col-sm-4 mb-2">
134134
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_GoogleMap">
135-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.Map" class="me-2" /> Google Map</h4>
135+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.Map" class="me-2" /> Google Map <Badge Color="BadgeColor.Success">Updated</Badge></h4>
136136
</a>
137137
</div>
138138
<div class="col-sm-4 mb-2">
@@ -141,8 +141,8 @@
141141
</a>
142142
</div>
143143
<div class="col-sm-4 mb-2">
144-
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_GoogleMap">
145-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.Map" class="me-2" /> Icons <Badge Color="BadgeColor.Success">Updated</Badge></h4>
144+
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Icons">
145+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.EmojiSmile" class="me-2" /> Icons</h4>
146146
</a>
147147
</div>
148148
<div class="col-sm-4 mb-2">
@@ -187,7 +187,7 @@
187187
</div>
188188
<div class="col-sm-4 mb-2">
189189
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_PDFViewer">
190-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.FilePdfFill" class="me-2" /> PDF Viewer</h4>
190+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.FilePdfFill" class="me-2" /> PDF Viewer <Badge Color="BadgeColor.Success">Updated</Badge></h4>
191191
</a>
192192
</div>
193193
<div class="col-sm-4 mb-2">
@@ -251,7 +251,7 @@
251251
</div>
252252
<div class="col-sm-4 mb-2">
253253
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_SortableList">
254-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.ArrowsMove" class="me-2" /> Sortable List</h4>
254+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.ArrowsMove" class="me-2" /> Sortable List <Badge Color="BadgeColor.Success">Updated</Badge></h4>
255255
</a>
256256
</div>
257257
<div class="col-sm-4 mb-2">
@@ -266,7 +266,7 @@
266266
</div>
267267
<div class="col-sm-4 mb-2">
268268
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Tabs">
269-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.WindowPlus" class="me-2" /> Tabs <Badge Color="BadgeColor.Success">Updated</Badge></h4>
269+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.WindowPlus" class="me-2" /> Tabs</h4>
270270
</a>
271271
</div>
272272
<div class="col-sm-4 mb-2">
@@ -291,12 +291,12 @@
291291
</div>
292292
<div class="col-sm-4 mb-2">
293293
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Toasts">
294-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.ExclamationTriangleFill" class="me-2" /> Toasts</h4>
294+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.ExclamationTriangleFill" class="me-2" /> Toasts <Badge Color="BadgeColor.Success">Updated</Badge></h4>
295295
</a>
296296
</div>
297297
<div class="col-sm-4 mb-2">
298298
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Tooltips">
299-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.ChatSquareDotsFill" class="me-2" /> Tooltips</h4>
299+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.ChatSquareDotsFill" class="me-2" /> Tooltips <Badge Color="BadgeColor.Success">Updated</Badge></h4>
300300
</a>
301301
</div>
302302
</div>
@@ -314,23 +314,23 @@
314314
</a>
315315
</div>
316316
<div class="col-sm-4 mb-2">
317-
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Placeholders">
317+
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_CheckboxInput">
318318
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.ColumnsGap" class="me-2" /> Checkbox Input</h4>
319319
</a>
320320
</div>
321321
<div class="col-sm-4 mb-2">
322-
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Preload">
322+
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_CurrencyInput">
323323
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.ArrowClockwise" class="me-2" /> Currency Input</h4>
324324
</a>
325325
</div>
326326
<div class="col-sm-4 mb-2">
327-
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_Progress">
327+
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_DateInput">
328328
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.UsbC" class="me-2" /> Date Input</h4>
329329
</a>
330330
</div>
331331
<div class="col-sm-4 mb-2">
332-
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_RadioInput">
333-
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.RecordCircle" class="me-2" /> Enum Input <Badge Color="BadgeColor.Danger">New</Badge></h4>
332+
<a class="d-block pe-lg-4 text-decoration-none lh-sm" href="@DemoRouteConstants.Demos_URL_EnumInput">
333+
<h4 class="mb-0 fs-5 fw-semibold"><Icon Name="IconName.RecordCircle" class="me-2" /> Enum Input</h4>
334334
</a>
335335
</div>
336336
<div class="col-sm-4 mb-2">

‎BlazorBootstrap.Demo.Server/appsettings.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
}
77
},
88
"AllowedHosts": "*",
9-
"version": "3.5.0",
9+
"version": "4.0.0",
1010
"release": {
11-
"short_description": ".NET 10 support, new EnumInput, password-protected PDF viewer & more."
11+
"short_description": "New RichTextEditor, FileInput, SplitView, OTP Input & more. Charts now via BlazorExpress.ChartJS."
1212
},
1313
"urls": {
1414
"demos": "/demos/getting-started",

‎BlazorBootstrap.Demo.WebAssembly/wwwroot/appsettings.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
2-
"version": "3.5.0",
2+
"version": "4.0.0",
33
"release": {
4-
"short_description": ".NET 10 support, new EnumInput, password-protected PDF viewer & more."
4+
"short_description": "New RichTextEditor, FileInput, SplitView, OTP Input & more. Charts now via BlazorExpress.ChartJS."
55
},
66
"urls": {
77
"demos": "/demos/getting-started",

‎README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<br>
1717

18-
**NOTE:** We strongly recommend all BlazorBootstrap users migrate to version 2.x.x. [Read more...](https://docs.blazorbootstrap.com/blog/2024/02/25/upgrade-to-v2.0.0)
18+
**NOTE:** We strongly recommend all BlazorBootstrap users upgrade to version 4.0.0. [Read more...](https://docs.blazorbootstrap.com/blog/2025/12/01/upgrade-to-v4.0.0)
1919

2020
## Status
2121

@@ -41,7 +41,7 @@
4141

4242
## Install
4343

44-
Install with [NuGet](https://www.nuget.org/): `Install-Package Blazor.Bootstrap -Version 3.5.0`
44+
Install with [NuGet](https://www.nuget.org/): `Install-Package Blazor.Bootstrap -Version 4.0.0`
4545

4646
## Install Blazor Bootstrap templates
4747

‎blazorbootstrap/BlazorBootstrap.csproj‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
<PropertyGroup>
44

55
<PackageId>Blazor.Bootstrap</PackageId>
6-
<Version>3.5.0</Version>
7-
<PackageVersion>3.5.0</PackageVersion>
6+
<Version>4.0.0</Version>
7+
<PackageVersion>4.0.0</PackageVersion>
88

99
<!--<PackageIconUrl></PackageIconUrl>-->
1010
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
title: Blazor Bootstrap v4.0.0
3+
authors:
4+
name: Vikram Reddy
5+
title: Creator
6+
url: https://github.com/gvreddy04
7+
image_url: https://avatars.githubusercontent.com/u/2337067
8+
tags: [v4.0.0, blazor, bootstrap, blazorbootstrap, richtexteditor, fileinput, splitview, otpinput, charts, pdfviewer, grid, toasts]
9+
---
10+
11+
We are thrilled to release **Blazor Bootstrap v4.0.0** — a major milestone that introduces powerful new components, significant enhancements, and important breaking changes. This release targets **.NET 8**, **.NET 9**, and **.NET 10**.
12+
13+
<!--truncate-->
14+
15+
## ⚠️ Breaking Changes
16+
17+
### .NET 6.0 support dropped
18+
.NET 6 has reached end-of-life. Blazor Bootstrap 4.0.0 supports **.NET 8**, **.NET 9**, and **.NET 10** only. Please upgrade your application before updating to this version.
19+
20+
### Charts moved to BlazorExpress.ChartJS
21+
All chart components (`BarChart`, `LineChart`, `DoughnutChart`, `PieChart`, `PolarAreaChart`, `RadarChart`, `ScatterChart`) have been extracted from BlazorBootstrap and are now provided by the dedicated [BlazorExpress.ChartJS](https://chartjs.blazorexpress.com/) package.
22+
23+
**Migration steps:**
24+
1. Install the `BlazorExpress.ChartJS` NuGet package.
25+
2. Replace `@using BlazorBootstrap` chart references with the BlazorExpress.ChartJS namespace.
26+
3. Load the BlazorExpress.ChartJS browser scripts.
27+
4. Migrate any chart API calls to the BlazorExpress.ChartJS API.
28+
29+
See the [migration guide](https://docs.blazorbootstrap.com/components/charts) and the [BlazorExpress.ChartJS GitHub repo](https://github.com/BlazorExpress/BlazorExpress.ChartJS) for full details.
30+
31+
---
32+
33+
## ✨ New Components
34+
35+
### RichTextEditor
36+
A full-featured rich text editor component built on Quill.js, supporting text formatting, bullet/numbered lists, links, and image uploads.
37+
38+
- PR [#1302](https://github.com/vikramlearning/blazorbootstrap/pull/1302), [#1304](https://github.com/vikramlearning/blazorbootstrap/pull/1304), [#1305](https://github.com/vikramlearning/blazorbootstrap/pull/1305), [#1308](https://github.com/vikramlearning/blazorbootstrap/pull/1308)
39+
- Docs: [Rich Text Editor](https://docs.blazorbootstrap.com/forms/rich-text-editor)
40+
41+
### FileInput & DragAndDropFileInput
42+
Two new file selection components for modern file upload experiences:
43+
- `FileInput` — standard file picker with multi-select support.
44+
- `DragAndDropFileInput` — drop-zone style file picker with drag-and-drop support.
45+
46+
- PR [#1293](https://github.com/vikramlearning/blazorbootstrap/pull/1293)
47+
- Docs: [File Input](https://docs.blazorbootstrap.com/forms/file-input) | [Drag & Drop File Input](https://docs.blazorbootstrap.com/forms/drag-and-drop-file-input)
48+
49+
### SplitView
50+
A resizable split-panel layout component that lets users drag a divider to resize two side-by-side or top-and-bottom panes.
51+
52+
- PR [#1283](https://github.com/vikramlearning/blazorbootstrap/pull/1283)
53+
- Docs: [SplitView](https://docs.blazorbootstrap.com/components/split-view)
54+
55+
### OTP Input
56+
A one-time password (OTP) input component providing individual digit boxes and auto-advance behavior — ideal for verification code flows.
57+
58+
- PR [#1238](https://github.com/vikramlearning/blazorbootstrap/pull/1238)
59+
60+
---
61+
62+
## 🚀 Enhancements
63+
64+
### Charts — Data Point Click Event
65+
Chart components (via BlazorExpress.ChartJS) now support a data point click event, enabling interactive drill-down scenarios.
66+
67+
- PR [#1276](https://github.com/vikramlearning/blazorbootstrap/pull/1276)
68+
69+
### PdfViewer
70+
- **Download support**: Users can now download the currently viewed PDF directly from the viewer (PR [#1288](https://github.com/vikramlearning/blazorbootstrap/pull/1288), [#1277](https://github.com/vikramlearning/blazorbootstrap/pull/1277)).
71+
- **Manual Zoom**: Manual zoom control added (PR [#956](https://github.com/vikramlearning/blazorbootstrap/pull/956)).
72+
- **Password prompt improvements**: Improved handling of cancellation in the password prompt (PR [#1255](https://github.com/vikramlearning/blazorbootstrap/pull/1255)).
73+
74+
### ToastService
75+
- Async overloads added for `ShowAsync` to simplify fire-and-forget toast usage (PR [#1231](https://github.com/vikramlearning/blazorbootstrap/pull/1231)).
76+
- New constructor `ToastMessage(ToastType)` for quick toast creation (PR [#993](https://github.com/vikramlearning/blazorbootstrap/pull/993)).
77+
78+
### ConfirmDialog
79+
- Auto-focus on the **Yes** button now handled natively in Blazor for improved accessibility (PR [#1259](https://github.com/vikramlearning/blazorbootstrap/pull/1259), [#1260](https://github.com/vikramlearning/blazorbootstrap/pull/1260), [#1261](https://github.com/vikramlearning/blazorbootstrap/pull/1261)).
80+
81+
### Dropdown
82+
- Dropdown now closes when clicking outside the component (PR [#1251](https://github.com/vikramlearning/blazorbootstrap/pull/1251)).
83+
84+
### EnumInput
85+
- Enum values can now display localized or custom display names using resource-backed attributes, reducing boilerplate in forms.
86+
87+
### Layout — Sticky Header
88+
- Added a CSS custom property (`--bb-sticky-header-z-index`) to allow applications to control the sticky header z-index without overriding internal styles (PR [#1311](https://github.com/vikramlearning/blazorbootstrap/pull/1311)).
89+
90+
### Google Map
91+
- Enhanced demo, script loading, and marker customization options (PR [#1292](https://github.com/vikramlearning/blazorbootstrap/pull/1292)).
92+
93+
### CurrencyInput
94+
- Copy/Paste `KeyDown` handling improved (PR [#1205](https://github.com/vikramlearning/blazorbootstrap/pull/1205)).
95+
96+
### Grid
97+
- Fixed rendering issues, page size reset bug (PR [#1203](https://github.com/vikramlearning/blazorbootstrap/pull/1203)).
98+
99+
### Sidebar / Sidebar2
100+
- Improved behavior on mobile devices (PR [#1203](https://github.com/vikramlearning/blazorbootstrap/pull/1203)).
101+
102+
### SortableList
103+
- Refined grab cursor for sortable list items and handles (PR [#1253](https://github.com/vikramlearning/blazorbootstrap/pull/1253)).
104+
105+
### Tooltip
106+
- Fixed typo in `TooltipColor.Secondary` CSS class name (PR [#1257](https://github.com/vikramlearning/blazorbootstrap/pull/1257)).
107+
108+
---
109+
110+
## 🐛 Bug Fixes
111+
112+
- Grid: Rendering issues and page size reset bug fixed (#1203).
113+
- SortableList: Grab cursor now correctly shown on items and handles (#1253).
114+
- Dropdown: Closes when clicking outside (#1251).
115+
- PdfViewer: Password prompt cancellation handled gracefully (#1255).
116+
- Tooltip: `TooltipColor.Secondary` CSS class name typo fixed (#1257).
117+
118+
---
119+
120+
## 📚 Documentation & API Metadata
121+
122+
Extensive API documentation metadata attributes (`[Parameter]`, `[EditorRequired]`, summary XML docs) have been added to all major components in this release, improving IntelliSense support and auto-generated API reference pages:
123+
124+
- Accordion, Alert, Badge, Breadcrumb, Button, Callout, Card
125+
- Carousel, Collapse, ConfirmDialog
126+
- Dropdown
127+
- GoogleMap, Markdown, Modal
128+
- Offcanvas, Pagination, PdfViewer
129+
- Ribbon, Sidebar, Sidebar2
130+
- SortableList, Spinner, Tabs, TextInput, ToastService, Toasts, Tooltips
131+
132+
---
133+
134+
## 🔧 Upgrade Notes
135+
136+
See the [Upgrade to v4.0.0 guide](https://docs.blazorbootstrap.com/blog/2025/12/01/upgrade-to-v4.0.0) for detailed migration instructions.
137+
138+
---
139+
140+
## Links
141+
- [Docs Website - Blazor Bootstrap](https://docs.blazorbootstrap.com/)
142+
- [Demos Website - Blazor Bootstrap](https://demos.blazorbootstrap.com/)
143+
- [NuGet Package - Blazor.Bootstrap 4.0.0](https://www.nuget.org/packages/Blazor.Bootstrap/4.0.0)
144+
- [GitHub Release](https://github.com/vikramlearning/blazorbootstrap/releases/tag/v4.0.0)

0 commit comments

Comments
 (0)