fastapi-rtk
Version:
A React component library for FastAPI in combination with FastAPI React Toolkit backend, built with Mantine, JsonForms, and Zustand.
61 lines (60 loc) • 2.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const constants = require("fastapi-rtk/constants");
const core = require("@mantine/core");
const hooks = require("@mantine/hooks");
const React = require("react");
const CommonModal = require("../Modals/CommonModal.cjs");
const overlayProps = require("../Modals/overlayProps.cjs");
const useApi = require("../hooks/api/useApi.cjs");
const useForms = require("../hooks/api/useForms.cjs");
require("../Wrappers/Provider/Contexts/LangContext.cjs");
const useTranslation = require("../../../.external/cjs/react-i18next@15.7.3_i18next@25.5.2_react-dom@18.3.1_react@18.3.1_typescript@5.9.2/react-i18next/dist/es/useTranslation.cjs");
const DeleteDialog = ({ deleteText, onSuccess, onError, ...props }) => {
const { refetch, refetchInfo, deleteEntry } = useApi.useApi();
const { t } = useTranslation.useTranslation();
const { opened, setOpened, getItem, reset, view, setView } = useForms.useForms("delete");
const [loading, setLoading] = hooks.useDebouncedState(false, constants.DEBOUNCE_LOADING_DELAY);
const onReset = React.useCallback(() => {
setOpened(false);
}, [setOpened]);
const onSubmit = React.useCallback(
(e) => {
e == null ? void 0 : e.preventDefault();
setLoading(true);
deleteEntry(getItem()).then((res) => {
onSuccess == null ? void 0 : onSuccess(res);
refetch();
refetchInfo();
}).catch(onError).finally(() => {
setLoading(false);
setOpened(false);
});
},
[setLoading, deleteEntry, getItem, onError, onSuccess, refetch, refetchInfo, setOpened]
);
return /* @__PURE__ */ jsxRuntime.jsx(
CommonModal.CommonModal,
{
view,
setView,
onReset,
onSubmit,
withTitleOptions: false,
actionButtons: { resetButtonProps: { variant: "outline" }, submitButtonProps: { color: "red" } },
resetButtonText: t("Cancel"),
buttonText: t("Delete"),
buttonLoading: loading,
size: "md",
opened,
onClose: () => setOpened(false),
onExitTransitionEnd: reset,
...view === constants.VIEW_MODE.OVERLAY ? overlayProps.overlayProps : {},
...props,
title: props.title ?? t("Delete Item?"),
children: deleteText ?? /* @__PURE__ */ jsxRuntime.jsx(core.Text, { children: t("Are you sure you want to delete this item?") })
}
);
};
exports.DeleteDialog = DeleteDialog;