UNPKG

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
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