Files
homebox/frontend/components/WipeInventoryDialog.vue
copilot-swe-agent[bot] 35941583c8 Fix frontend linting errors in WipeInventoryDialog
- Replaced BaseModal and BaseButton with AlertDialog components from ui library
- Added proper imports for AlertDialog, AlertDialogContent, AlertDialogHeader, etc.
- Fixed prettier formatting issues (auto-fixed by eslint --fix)
- Fixed Tailwind CSS shorthand (h-4 w-4 -> size-4)
- Added addAlert/removeAlert for dialog provider integration
- All linting and type-checking errors resolved

Co-authored-by: katosdev <7927609+katosdev@users.noreply.github.com>
2025-12-28 16:26:09 +00:00

140 lines
3.9 KiB
Vue

<template>
<AlertDialog :open="dialog" @update:open="handleOpenChange">
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>{{ $t("tools.actions_set.wipe_inventory") }}</AlertDialogTitle>
<AlertDialogDescription>
{{ $t("tools.actions_set.wipe_inventory_confirm") }}
</AlertDialogDescription>
</AlertDialogHeader>
<div class="space-y-2">
<div class="flex items-center space-x-2">
<input
id="wipe-labels-checkbox"
v-model="wipeLabels"
type="checkbox"
class="size-4 rounded border-gray-300"
/>
<label for="wipe-labels-checkbox" class="cursor-pointer text-sm font-medium">
{{ $t("tools.actions_set.wipe_inventory_labels") }}
</label>
</div>
<div class="flex items-center space-x-2">
<input
id="wipe-locations-checkbox"
v-model="wipeLocations"
type="checkbox"
class="size-4 rounded border-gray-300"
/>
<label for="wipe-locations-checkbox" class="cursor-pointer text-sm font-medium">
{{ $t("tools.actions_set.wipe_inventory_locations") }}
</label>
</div>
<div class="flex items-center space-x-2">
<input
id="wipe-maintenance-checkbox"
v-model="wipeMaintenance"
type="checkbox"
class="size-4 rounded border-gray-300"
/>
<label for="wipe-maintenance-checkbox" class="cursor-pointer text-sm font-medium">
{{ $t("tools.actions_set.wipe_inventory_maintenance") }}
</label>
</div>
</div>
<p class="text-sm text-gray-600">
{{ $t("tools.actions_set.wipe_inventory_note") }}
</p>
<AlertDialogFooter>
<AlertDialogCancel @click="close">
{{ $t("global.cancel") }}
</AlertDialogCancel>
<AlertDialogAction @click="confirm">
{{ $t("global.confirm") }}
</AlertDialogAction>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>
</template>
<script setup lang="ts">
import { DialogID } from "~/components/ui/dialog-provider/utils";
import { useDialog } from "~/components/ui/dialog-provider";
import {
AlertDialog,
AlertDialogAction,
AlertDialogCancel,
AlertDialogContent,
AlertDialogDescription,
AlertDialogFooter,
AlertDialogHeader,
AlertDialogTitle,
} from "@/components/ui/alert-dialog";
const { registerOpenDialogCallback, closeDialog, addAlert, removeAlert } = useDialog();
const dialog = ref(false);
const wipeLabels = ref(false);
const wipeLocations = ref(false);
const wipeMaintenance = ref(false);
let onCloseCallback:
| ((result?: { wipeLabels: boolean; wipeLocations: boolean; wipeMaintenance: boolean } | undefined) => void)
| undefined;
registerOpenDialogCallback(
DialogID.WipeInventory,
(params?: {
onClose?: (
result?: { wipeLabels: boolean; wipeLocations: boolean; wipeMaintenance: boolean } | undefined
) => void;
}) => {
dialog.value = true;
wipeLabels.value = false;
wipeLocations.value = false;
wipeMaintenance.value = false;
onCloseCallback = params?.onClose;
}
);
watch(
dialog,
val => {
if (val) {
addAlert("wipe-inventory-dialog");
} else {
removeAlert("wipe-inventory-dialog");
}
},
{ immediate: true }
);
function handleOpenChange(open: boolean) {
if (!open) {
close();
}
}
function close() {
dialog.value = false;
closeDialog(DialogID.WipeInventory, undefined);
onCloseCallback?.(undefined);
}
function confirm() {
dialog.value = false;
const result = {
wipeLabels: wipeLabels.value,
wipeLocations: wipeLocations.value,
wipeMaintenance: wipeMaintenance.value,
};
closeDialog(DialogID.WipeInventory, result);
onCloseCallback?.(result);
}
</script>