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.74 kB
JavaScript
import * as React from 'react';
import { isValidElement } from 'react';
import { isValidElementType } from 'react-is';
import { ResourceContextProvider } from "./ResourceContextProvider.js";
import { RestoreScrollPosition, useRouterProvider } from "../routing/index.js";
export const Resource = (props) => {
const { create, edit, list, name, show } = props;
const { Route, Routes } = useRouterProvider();
return (React.createElement(ResourceContextProvider, { value: name },
React.createElement(Routes, null,
create && (React.createElement(Route, { path: "create/*", element: getElement(create) })),
show && React.createElement(Route, { path: ":id/show/*", element: getElement(show) }),
edit && React.createElement(Route, { path: ":id/*", element: getElement(edit) }),
list && (React.createElement(Route, { path: "/*", element: React.createElement(RestoreScrollPosition, { storeKey: `${name}.list.scrollPosition` }, getElement(list)) })),
props.children)));
};
const getElement = (ElementOrComponent) => {
if (isValidElement(ElementOrComponent)) {
return ElementOrComponent;
}
if (isValidElementType(ElementOrComponent)) {
const Element = ElementOrComponent;
return React.createElement(Element, null);
}
return null;
};
Resource.raName = 'Resource';
Resource.registerResource = ({ create, edit, icon, list, name, options, show, recordRepresentation, hasCreate, hasEdit, hasShow, }) => ({
name,
options,
hasList: !!list,
hasCreate: !!create || !!hasCreate,
hasEdit: !!edit || !!hasEdit,
hasShow: !!show || !!hasShow,
icon,
recordRepresentation,
});
//# sourceMappingURL=Resource.js.map