Global toast notifications; replace all alert() calls

Add a useToast() composable + a single ToastHost mounted in AppLayout. Convert
every alert() across views/components (29 call sites, all error paths) to
toast.error, and use toast.success to confirm a warranty refresh. Kills the
native "localhost says" dialog and gives consistent, dismissable feedback.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
cproudlock
2026-07-09 16:56:25 -04:00
parent b90a13c7e5
commit d6142b10b4
29 changed files with 4774 additions and 4606 deletions

View File

@@ -5,6 +5,7 @@
<button class="btn btn-primary" @click="openModal()">+ Add Warranty</button>
</div>
<div class="filters">
<label>Status
<select v-model="statusFilter" class="form-control" @change="loadData">
@@ -138,6 +139,9 @@
import { ref, onMounted } from 'vue'
import { colorStyle } from '@/utils/colorStyle'
import { warrantyApi, assetsApi } from '../../api'
import { useToast } from '../../composables/toast'
const toast = useToast()
const items = ref([])
const loading = ref(true)
@@ -261,7 +265,7 @@ async function deleteWarranty(w) {
await warrantyApi.remove(w.warrantyid)
loadData()
} catch (err) {
alert(apiError(err, 'Failed to delete'))
toast.error(apiError(err, 'Failed to delete'))
}
}
@@ -270,9 +274,11 @@ async function refresh(w) {
const response = await warrantyApi.refresh(w.warrantyid)
loadData()
const updated = response.data?.data
if (updated) alert(`Refreshed: ${updated.vendor} - ${updated.servicelevel || 'coverage'} ends ${updated.enddate || 'unknown'}`)
if (updated) {
toast.success(`${updated.vendor}: ${updated.servicelevel || 'coverage'} ends ${updated.enddate || 'unknown'}`)
}
} catch (err) {
alert(apiError(err, 'Refresh failed'))
toast.error(apiError(err, 'Refresh failed'))
}
}
</script>