En la publicación inicial del toolkit, presenté las funcionalidades de exportación de envíos, y en la publicación de clonación de formularios agregué una forma de duplicar formularios. v1.0.0-beta.4 agrega la funcionalidad que más me han pedido: una forma de eliminar envíos en bloque, además de una experiencia de exportación renovada para acompañarla.

Instalar o Actualizar

dotnet add package XperienceCommunity.FormsToolkit --version 1.0.0-beta.4

El registro no cambia:

builder.Services.AddFormsToolkit();

// Más adelante, al mapear endpoints:
app.MapControllers();

Eliminar Envíos

Desde Forms -> selected form -> Submissions, marca una o más filas usando las casillas de selección nativas del listado (incluyendo “seleccionar todo” en el encabezado de la tabla), y luego selecciona Delete en la barra de herramientas que aparece debajo del buscador.

Acciones Delete y Export en la barra de herramientas tras seleccionar filas

Eso cubre una selección puntual. Para eliminar envíos por criterio en lugar de por selección, usa Advanced delete en el encabezado de la página.

Diálogo de Advanced delete con rango de fechas, límite de registros y frase de confirmación

Advanced delete replica las opciones de rango de fechas, límite de registros y orden de Advanced export, y agrega dos protecciones antes de eliminar nada:

  • Preview matching count es obligatorio antes de habilitar la eliminación, y cualquier cambio posterior en los filtros invalida la vista previa.
  • Es necesario escribir exactamente la palabra DELETE para confirmar. También hay un atajo Export these first por si quieres una copia antes de eliminar los envíos coincidentes.

Ambos caminos de eliminación son permanentes. No hay deshacer ni papelera de reciclaje, y ambos eliminan también los archivos adjuntos de cada envío, no solo la fila en la base de datos.

Una Experiencia de Exportación Renovada

Al agregar la eliminación, también hicimos una limpieza del lado de exportación. El encabezado solía abrir un menú desplegable con atajos rápidos de CSV/Excel/XML para la página actual, además de un ítem de “Advanced export” escondido dentro de ese menú. Eso desapareció: Advanced export ahora es un solo botón que abre el mismo diálogo directamente, con un estilo pensado para acompañar visualmente a Advanced delete en lugar de competir con él por la atención.

El atajo limitado a la página actual tampoco era necesario: marcar todas las filas con “seleccionar todo” y usar Export logra lo mismo, a través del mismo mecanismo de selección que usarías para una exportación parcial. Un concepto menos que aprender, mismo resultado.

Tanto Advanced export como Advanced delete están ocultos por completo en un formulario que aún no tiene envíos, ya que no hay nada sobre qué actuar hasta que el formulario reciba el primero.

Permisos

La eliminación de envíos usa su propio permiso, independiente del de exportación:

XperienceCommunity.FormsToolkit.DeleteSubmissions

Asígnalo desde Role management a los roles que deban poder eliminar envíos. Un rol puede exportar sin poder eliminar, o viceversa; no se implican mutuamente.

Para detalles completos de instalación y uso, revisa el README y la guía de uso.

Eso es todo por hoy.

¡Hasta la próxima publicación!