UiExportButton
Botón de descarga de archivos que gestiona todo el proceso de Blob → archivo.
Props
| Prop | Tipo | Requerido | Descripción |
|---|---|---|---|
label | string | ✅ | Texto del botón |
fetcher | () => Promise<Blob> | ✅ | Función que retorna el Blob a descargar |
Comportamiento
- El usuario hace clic
- Se muestra estado de loading
- Se llama a
fetcher() - Con el Blob resultante: crea URL temporal →
<a>.click()→ revoca la URL - El loading desaparece
vue
<!-- En AuditView -->
<UiExportButton
label="Exportar CSV"
:fetcher="fetchExportBlob"
/>
<script setup>
function fetchExportBlob() {
return auditService.fetchCsvBlob({
entityType: filterValues.value.entityType || undefined,
action: filterValues.value.action || undefined,
from: filterValues.value.from || undefined,
to: filterValues.value.to || undefined,
})
}
</script>Notas
- El
fetcherrecibe los filtros actuales en el momento del clic — siempre exporta lo que se está viendo - El nombre del archivo lo controla el backend vía
Content-Disposition: attachment; filename="..." - Si
fetcher()lanza un error, se muestra un toast de error automáticamente