ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
34 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useBulkExport = useBulkExport;
const react_1 = require("react");
const useResourceContext_1 = require("../core/useResourceContext.cjs");
const useListContext_1 = require("../controller/list/useListContext.cjs");
const useDataProvider_1 = require("../dataProvider/useDataProvider.cjs");
const useNotify_1 = require("../notification/useNotify.cjs");
const fetchRelatedRecords_1 = require("./fetchRelatedRecords.cjs");
/**
* A hook that provides a callback to export the selected records from the nearest ListContext and call the exporter function for them.
*/
function useBulkExport(options = {}) {
const { exporter: customExporter, meta } = options;
const resource = (0, useResourceContext_1.useResourceContext)(options);
const { exporter: exporterFromContext, selectedIds } = (0, useListContext_1.useListContext)();
const exporter = customExporter || exporterFromContext;
const dataProvider = (0, useDataProvider_1.useDataProvider)();
const notify = (0, useNotify_1.useNotify)();
return (0, react_1.useCallback)(() => {
if (exporter && resource) {
dataProvider
.getMany(resource, { ids: selectedIds, meta })
.then(({ data }) => exporter(data, (0, fetchRelatedRecords_1.fetchRelatedRecords)(dataProvider), dataProvider, resource))
.catch(error => {
console.error(error);
notify('ra.notification.http_error', {
type: 'error',
});
});
}
}, [dataProvider, exporter, notify, resource, selectedIds, meta]);
}
//# sourceMappingURL=useBulkExport.js.map