I want to integrate the jQuery UI component within the Blazor client-side application. The Spinner component looks better in jQuery UI. is this possible? how to integrate it?
This is the way to create a wrapper for a JQuery or JS control:
1.- Enclose JS behavior in functions:
<script>
var spinner = null;
window.myWrapperKSUIfunctions = {
initialize: function () {
spinner = $( "#spinner" ).spinner();
$( "button" ).button();
},
dissableclick: function () {
if ( spinner.spinner( "option", "disabled" ) ) {
spinner.spinner( "enable" );
} else {
spinner.spinner( "disable" );
}
},
destroyclick: function () {
if ( spinner.spinner( "instance" ) ) {
spinner.spinner( "destroy" );
} else {
spinner.spinner();
}
},
getvalueclick: function () {
alert( spinner.spinner( "value" ) );
},
setvalueclick: function () {
spinner.spinner( "value", 5 );
},
};
</script>
Don't forget to include other JS/JQuery libraries.
2.- Initialize control from blazor:
@code {
protected async override Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await JsRuntime.InvokeAsync<object>("myWrapperKSUIfunctions.initialize");
}
}
3.- Call JS function from blazor:
<button id="disable"
@onclick="@( ()=>JustCall("dissableclick") )" >
Toggle disable/enable
</button>
@code {
...
protected async Task JustCall(string f)
{
wait JsRuntime.InvokeAsync<object>($"myWrapperKSUIfunctions.{f}");
}
Check it out at blazorfiddle.
Also, take a look to MatBlazor controls.