ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
38 lines • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useBulkExport = useBulkExport;
var react_1 = require("react");
var useResourceContext_1 = require("../core/useResourceContext.cjs");
var useListContext_1 = require("../controller/list/useListContext.cjs");
var useDataProvider_1 = require("../dataProvider/useDataProvider.cjs");
var useNotify_1 = require("../notification/useNotify.cjs");
var 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) {
if (options === void 0) { options = {}; }
var customExporter = options.exporter, meta = options.meta;
var resource = (0, useResourceContext_1.useResourceContext)(options);
var _a = (0, useListContext_1.useListContext)(), exporterFromContext = _a.exporter, selectedIds = _a.selectedIds;
var exporter = customExporter || exporterFromContext;
var dataProvider = (0, useDataProvider_1.useDataProvider)();
var notify = (0, useNotify_1.useNotify)();
return (0, react_1.useCallback)(function () {
if (exporter && resource) {
dataProvider
.getMany(resource, { ids: selectedIds, meta: meta })
.then(function (_a) {
var data = _a.data;
return exporter(data, (0, fetchRelatedRecords_1.fetchRelatedRecords)(dataProvider), dataProvider, resource);
})
.catch(function (error) {
console.error(error);
notify('ra.notification.http_error', {
type: 'error',
});
});
}
}, [dataProvider, exporter, notify, resource, selectedIds, meta]);
}
//# sourceMappingURL=useBulkExport.js.map