BQuery es una biblioteca de ayuda para Blazor que facilita la interoperabilidad con JavaScript (inspirada en jQuery).
Ofrece:
- Funciones de ayuda para elementos DOM (atributos, clases y estilos)
- APIs para medir y obtener la posición de elementos
- APIs para medir el viewport
- Vinculación de eventos de ventana con callbacks en .NET
- Funciones de ayuda para arrastrar elementos
| BQuery | .NET |
|---|---|
| 4.x | .NET 8.0 / .NET 10.0 |
| 3.x | .NET 6 |
| 2.x | .NET 5 |
Si estás actualizando desde la versión 3.x, revisa los siguientes cambios en la API y la plataforma:
- Cambio en los frameworks compatibles: BQuery 4.x es compatible únicamente con .NET 8.0 y .NET 10.0. .NET 6 ya no es compatible.
- Eliminación de extensiones de inicio: el antiguo paquete
AspNetExtensions(por ejemplo,UseBQuery(...)) ha sido eliminado. Utiliza el registro de DI conAddBQuery()y carga el recurso estático desde_content/BQuery/dist/.... - Cambio en el payload de los callbacks de redimensionamiento: los manejadores de redimensionamiento ahora utilizan
ResizeEventArgs(con propiedades con nombre como width/height) en lugar de patrones de payload posicional.
- Actualiza el TFM de tu aplicación a .NET 8 o superior.
- Reemplaza el uso de la extensión de inicio heredada con
builder.Services.AddBQuery();. - Asegúrate de que tu página de host (o el flujo de scripts de inicio) cargue
_content/BQuery/dist/bQuery.min.js. - Actualiza los manejadores de eventos de redimensionamiento a
OnResizeAsync(ResizeEventArgs args)/OnResize(ResizeEventArgs args).
dotnet add package BQuerybuilder.Services.AddBQuery();Note
Si utilizas el modo de renderizado Interactive Auto, el servicio debe registrarse tanto en App como en App.Client simultáneamente.
Agrega este script a tu página de host:
<script src="_content/BQuery/dist/bQuery.min.js"></script>Los ejemplos del repositorio utilizan la compilación UMD (bQuery.min.js).
<script src="_content/BQuery/dist/bQuery.min.js"></script>
<script src="_framework/blazor.webassembly.js"></script><script src="_content/BQuery/dist/bQuery.min.js"></script>
<script src="_framework/blazor.server.js"></script><script src="_content/BQuery/dist/bQuery.min.js"></script>
<script src="@Assets["_framework/blazor.web.js"]"></script>+ @inject Bq bq
@implements IAsyncDisposable
@code {
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender)
{
return;
}
await bq.AddWindowEventListeners(WindowEvent.OnResize, WindowEvent.OnScroll);
bq.WindowEvents.OnResizeAsync += OnResizeAsync;
}
private Task OnResizeAsync(ResizeEventArgs args)
{
Console.WriteLine($"Viewport: {args.Width} x {args.Height}");
return Task.CompletedTask;
}
public async ValueTask DisposeAsync()
{
// Si estás escuchando eventos de ventana
await bq.RemoveWindowEventListeners();
}
}var width = await bq.Viewport.GetWidthAsync();
var height = await bq.Viewport.GetHeightAsync();
var scrollTop = await bq.Viewport.GetScrollTopAsync();var size = await element.GetWidthAndHeightAsync();
var docPos = await element.GetPositionInDocAsync();
await element.AddCls("is-active");
await element.Css("display", "none");
await element.RemoveCls("is-active");await bq.Drag.BindDragAsync(dialog, new DragOptions
{
InViewport = true,
DragElement = dialogHeader
});
await bq.Drag.ResetDragPositionAsync(dialog, new DragOptions
{
DragElement = dialogHeader
});
await bq.Drag.RemoveDragAsync(dialog, new DragOptions
{
DragElement = dialogHeader
});var ua1 = await bq.GetUserAgentAsync();
var ua2 = await jsRuntime.GetUserAgentAsync(); // Extensión de IJSRuntimeSample/BQuery.Sample.WasmSample/BQuery.Sample.ServerSample/BQuery.Sample.CommonSample/BlazorAppAuto
MIT