mirror of
https://github.com/OpenListTeam/OpenList-Frontend.git
synced 2026-03-13 11:20:24 +00:00
72 lines
1.8 KiB
TypeScript
72 lines
1.8 KiB
TypeScript
import {
|
|
Modal,
|
|
ModalOverlay,
|
|
ModalContent,
|
|
ModalHeader,
|
|
ModalBody,
|
|
ModalFooter,
|
|
Button,
|
|
createDisclosure,
|
|
} from "@hope-ui/solid"
|
|
import { onCleanup } from "solid-js"
|
|
import { useFetch, usePath, useRouter, useT } from "~/hooks"
|
|
import { selectedObjs } from "~/store"
|
|
import { bus, fsRemove, handleRespWithNotifySuccess } from "~/utils"
|
|
|
|
export const Delete = () => {
|
|
const t = useT()
|
|
const { isOpen, onOpen, onClose } = createDisclosure()
|
|
const [loading, ok] = useFetch(fsRemove)
|
|
const { refresh } = usePath()
|
|
const { pathname } = useRouter()
|
|
const handler = (name: string) => {
|
|
if (name === "delete") {
|
|
onOpen()
|
|
}
|
|
}
|
|
bus.on("tool", handler)
|
|
onCleanup(() => {
|
|
bus.off("tool", handler)
|
|
})
|
|
return (
|
|
<Modal
|
|
blockScrollOnMount={false}
|
|
opened={isOpen()}
|
|
onClose={onClose}
|
|
size={{
|
|
"@initial": "xs",
|
|
"@md": "md",
|
|
}}
|
|
>
|
|
<ModalOverlay />
|
|
<ModalContent>
|
|
<ModalHeader>{t("home.toolbar.delete")}</ModalHeader>
|
|
<ModalBody>
|
|
<p>{t("home.toolbar.delete-tips")}</p>
|
|
</ModalBody>
|
|
<ModalFooter display="flex" gap="$2">
|
|
<Button onClick={onClose} colorScheme="neutral">
|
|
{t("global.cancel")}
|
|
</Button>
|
|
<Button
|
|
colorScheme="danger"
|
|
loading={loading()}
|
|
onClick={async () => {
|
|
const resp = await ok(
|
|
pathname(),
|
|
selectedObjs().map((obj) => obj.name)
|
|
)
|
|
handleRespWithNotifySuccess(resp, () => {
|
|
refresh()
|
|
onClose()
|
|
})
|
|
}}
|
|
>
|
|
{t("global.confirm")}
|
|
</Button>
|
|
</ModalFooter>
|
|
</ModalContent>
|
|
</Modal>
|
|
)
|
|
}
|