UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

71 lines 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useBulkDeleteController = void 0; const react_1 = require("react"); const useDeleteMany_1 = require("../../dataProvider/useDeleteMany.cjs"); const useRefresh_1 = require("../../dataProvider/useRefresh.cjs"); const useListContext_1 = require("../list/useListContext.cjs"); const useNotify_1 = require("../../notification/useNotify.cjs"); const useResourceContext_1 = require("../../core/useResourceContext.cjs"); const useTranslate_1 = require("../../i18n/useTranslate.cjs"); const useBulkDeleteController = (props) => { const { mutationMode = 'undoable', mutationOptions = {}, successMessage, } = props; const { meta: mutationMeta, ...otherMutationOptions } = mutationOptions; const resource = (0, useResourceContext_1.useResourceContext)(props); const notify = (0, useNotify_1.useNotify)(); const refresh = (0, useRefresh_1.useRefresh)(); const translate = (0, useTranslate_1.useTranslate)(); const { selectedIds, onUnselectItems } = (0, useListContext_1.useListContext)(); const [deleteMany, { isPending }] = (0, useDeleteMany_1.useDeleteMany)(resource, undefined, { onSuccess: () => { notify(successMessage ?? `resources.${resource}.notifications.deleted`, { type: 'info', messageArgs: { smart_count: selectedIds.length, _: translate('ra.notification.deleted', { smart_count: selectedIds.length, }), }, undoable: mutationMode === 'undoable', }); onUnselectItems(true); }, onError: (error) => { notify(typeof error === 'string' ? error : error?.message || 'ra.notification.http_error', { type: 'error', messageArgs: { _: typeof error === 'string' ? error : error?.message, }, }); refresh(); }, }); const handleDelete = (0, react_1.useCallback)(() => { deleteMany(resource, { ids: selectedIds, meta: mutationMeta, }, { mutationMode, ...otherMutationOptions, }); }, [ deleteMany, mutationMeta, mutationMode, otherMutationOptions, resource, selectedIds, ]); return (0, react_1.useMemo)(() => ({ isPending, isLoading: isPending, handleDelete, }), [isPending, handleDelete]); }; exports.useBulkDeleteController = useBulkDeleteController; //# sourceMappingURL=useBulkDeleteController.js.map