mirror of
https://github.com/sysadminsmedia/homebox.git
synced 2025-12-21 21:33:02 +01:00
* feat: implement example of data table * feat: load item data into table * chore: begin switching dialogs * feat: implement old dialog for controlling headers and page size * feat: get table into relatively usable state * feat: enhance dropdown actions for multi-selection and CSV download * feat: enhance table cell and dropdown button styles for better usability * feat: json download for table * feat: add expanded row component for item details in data table * chore: add translation support * feat: restore table on home page * fix: oops need ids * feat: move card view to use tanstack to allow for pagination * feat: switch the items search to use ItemViewSelectable * fix: update pagination handling and improve button click logic * feat: improve selectable table * feat: add indeterminate to checkbox * feat: overhaul maintenance dialog to use new system and add maintenance options to table * feat: add label ids and location id to item patch api * feat: change location and labels in table view * feat: add quick actions preference and enable toggle in table settings * fix: lint * fix: remove sized 1 pages * fix: attempt to fix type error * fix: various issues * fix: remove * fix: refactor item fetching logic to use useAsyncData for improved reactivity and improve use confirm * fix: sort backend issues * fix: enhance CSV export functionality by escaping fields to prevent formula injection * fix: put aria sort on th not button * chore: update api types
55 lines
1.5 KiB
Vue
55 lines
1.5 KiB
Vue
<template>
|
|
<AlertDialog :open="isRevealed">
|
|
<AlertDialogContent>
|
|
<AlertDialogHeader>
|
|
<AlertDialogTitle>{{ $t("global.confirm") }}</AlertDialogTitle>
|
|
<AlertDialogDescription>
|
|
{{ text || $t("global.delete_confirm") }}
|
|
</AlertDialogDescription>
|
|
<div v-if="href && href !== ''">
|
|
<a :href="href" target="_blank" rel="noopener noreferrer" class="break-all text-sm text-primary underline">
|
|
{{ href }}
|
|
</a>
|
|
</div>
|
|
</AlertDialogHeader>
|
|
<AlertDialogFooter>
|
|
<AlertDialogCancel @click="cancel(false)">
|
|
{{ $t("global.cancel") }}
|
|
</AlertDialogCancel>
|
|
<AlertDialogAction @click="confirm(true)">
|
|
{{ $t("global.confirm") }}
|
|
</AlertDialogAction>
|
|
</AlertDialogFooter>
|
|
</AlertDialogContent>
|
|
</AlertDialog>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { useDialog } from "./ui/dialog-provider";
|
|
import {
|
|
AlertDialog,
|
|
AlertDialogAction,
|
|
AlertDialogCancel,
|
|
AlertDialogContent,
|
|
AlertDialogDescription,
|
|
AlertDialogFooter,
|
|
AlertDialogHeader,
|
|
AlertDialogTitle,
|
|
} from "@/components/ui/alert-dialog";
|
|
|
|
const { text, href, isRevealed, confirm, cancel } = useConfirm();
|
|
const { addAlert, removeAlert } = useDialog();
|
|
|
|
watch(
|
|
isRevealed,
|
|
val => {
|
|
if (val) {
|
|
addAlert("confirm-modal");
|
|
} else {
|
|
removeAlert("confirm-modal");
|
|
}
|
|
},
|
|
{ immediate: true }
|
|
);
|
|
</script>
|