Orbyss.Blazor.Syncfusion.JsonForms
1.0.1
dotnet add package Orbyss.Blazor.Syncfusion.JsonForms --version 1.0.1
NuGet\Install-Package Orbyss.Blazor.Syncfusion.JsonForms -Version 1.0.1
<PackageReference Include="Orbyss.Blazor.Syncfusion.JsonForms" Version="1.0.1" />
<PackageVersion Include="Orbyss.Blazor.Syncfusion.JsonForms" Version="1.0.1" />
<PackageReference Include="Orbyss.Blazor.Syncfusion.JsonForms" />
paket add Orbyss.Blazor.Syncfusion.JsonForms --version 1.0.1
#r "nuget: Orbyss.Blazor.Syncfusion.JsonForms, 1.0.1"
#:package Orbyss.Blazor.Syncfusion.JsonForms@1.0.1
#addin nuget:?package=Orbyss.Blazor.Syncfusion.JsonForms&version=1.0.1
#tool nuget:?package=Orbyss.Blazor.Syncfusion.JsonForms&version=1.0.1
π¦ Orbyss.Blazor.Syncfusion.JsonForms
A full-featured Syncfusion-based UI renderer for Orbyss.Blazor.JsonForms.
This package brings the power of Syncfusion Blazor components to schema-driven forms using JSON Schema, UI Schema, and Translation Schema.
π― What is this?
This package implements the IFormComponentInstanceProvider
interface for Syncfusion β plugging into the Orbyss.Blazor.JsonForms core form engine.
β
You donβt need to write your own component provider
β
Just install this NuGet package and use <JsonForm ... />
as normal
β
Make sure to either inject SyncfusionComponentInstanceProvider
in your DI container, or pass a fresh instance as parameter to
<JsonForm ComponentInstanceProvider=@provider ... >
π§± Components Rendered with Syncfusion
All form controls are implemented using Syncfusion Blazor components:
- β
SfTextBox
,SfDropDownList
,SfSwitch
,SfDatePicker
, etc. - β Supports layout controls like Grid, Columns, Lists, Buttons, and Stepper Navigation
- β
Fully compatible with cascading properties:
Language
,Disabled
,ReadOnly
- β
Custom UI behavior via
options
in your UI schema
π Quickstart
dotnet add package Orbyss.Blazor.Syncfusion.JsonForms
Then in Program.cs:
builder.AddSyncfusionJsonForms()
Then finally you can define the JsonForm Blazor component as follows:
<JsonForm InitOptions=@options ComponentInstanceProvider=... />
@code {
JsonFormContextInitOptions options = new(
jsonSchema,
uiSchema,
translationSchema
);
}
βοΈ Customization
One way to override default behavior is by subclassing or replacing specific Syncfusion components. Example:
public class CustomProvider : SyncfusionFormComponentInstanceProvider
{
public override InputFormComponentInstanceBase GetInputField(IJsonFormContext context, FormControlContext control)
{
if (control.JsonPath == "#/properties/mySpecialField")
return new MyCustomInputInstance();
return base.GetInputField(context, control);
}
}
Another way is to configure specific delegates in the SyncfusionFormComponentInstanceProviderOptions
. Example:
var instanceProviderOptions = new SyncfusionFormComponentInstanceProviderOptions
{
ConfigureButton = (defaultButton, type, form) =>
{
defaultButton.CanToggle = true;
return defaultButton;
},
ConfigureBooleanInput = (defaultInstance, controlContext) =>
{
var customOption = $"{controlContext.Interpretation.GetOption("custom-boolean")}";
if (customOption == "switch")
{
return new MyCustomSwitchInputInstance();
}
return defaultInstance;
}
};
Or of course, you can provide and completely override your own components entirely, injecting the parameters and controlling the behavior as you wish (see the full example in Orbyss.Blazor.JsonForms README).
π Under the hood: Powered by 3 schemas
Like all Orbyss JSON Forms integrations, this renderer works using:
Schema | Purpose |
---|---|
JSON Schema | Defines data structure (types, constraints, etc.) |
UI Schema | Controls layout and per-control options |
Translation Schema | Manages localization, labels, error messages |
All schema interactions are fully supported.
π§© Other UI Options
Prefer a different component library? Try:
- π¨ Orbyss.Blazor.MudBlazor.JsonForms
- Or implement your own renderer via
IFormComponentInstanceProvider
π License
MIT License
Β© Orbyss.io
π Links
- π Website: https://orbyss.io
- π¦ Core Engine: Orbyss.Blazor.JsonForms
- π¦ This Package: Orbyss.Blazor.Syncfusion.JsonForms
- π§βπ» GitHub: https://github.com/orbyss-io
- π Syncfusion Docs: Syncfusion Blazor UI
- π License: MIT
π€ Contributing
This project is open source and contributions are welcome!
Whether it's bug fixes, improvements, documentation, or ideas β we encourage developers to get involved.
Just fork the repo, create a branch, and open a pull request.
We follow standard .NET open-source conventions:
- Write clean, readable code
- Keep PRs focused and descriptive
- Open issues for larger features or discussions
No formal contribution guidelines β just be constructive and respectful.
βοΈ Found this useful? Give us a star and help spread the word!
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Orbyss.Blazor.JsonForms (>= 1.0.3)
- Syncfusion.Blazor.Buttons (>= 30.2.4)
- Syncfusion.Blazor.Calendars (>= 30.2.4)
- Syncfusion.Blazor.DropDowns (>= 30.2.4)
- Syncfusion.Blazor.Grid (>= 30.2.4)
- Syncfusion.Blazor.Inputs (>= 30.2.4)
- Syncfusion.Blazor.Navigations (>= 30.2.4)
- Syncfusion.Blazor.SplitButtons (>= 30.2.4)
- Syncfusion.Blazor.Themes (>= 30.2.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
**Release: 7 August, 2025**
Initial release of the Syncfusion renderer for Orbyss.Blazor.JsonForms.
I have done some major refactoring, and have not been able to test every component, and every use case.
Please let it be known if anything is not working, and I will fix it right away!