mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-28 03:26:45 +00:00
* Pass more stuff to window * Expose form functions to plugin context * Breaking: Render plugin component in context tree - Required due to createRoot function - Adds necessary context providers * Fix context * Provide MantineThemeContext * Bundle mantine/core * Hack for useNavigate within ApiForm - Errors out if called within plugin context - Workaround to catch the error * Update build cmd * Define config for building "Library" mode * Update package.json * Add basic index file * Factor out ApiEndpoints * factor out ModelType * Factor out role enums * Further refactoring * More refactoring * Cleanup * Expose apiUrl function * Add instance data to plugin context type def * Tweaks for loading plugin components - LanguageContext must be on the inside * Tweak StylishText * Externalize notifications system * Update lingui config * Add functions for checking plugin interface version * Extract package version at build time * Enhance version checking * Revert variable name change * Public package * Add README.md * adjust packge name * Adjust name to include org * Update project files * Add basic changelog info * Refactoring to expose URL functions * Refactor navigation functions * Update package and README * Improve navigateToLink function * Refactor stylish text - Move into ./lib - Do not require user state * Revert changes - StylishText throws error in plugin - Low priority, can work out later * expose function to refresh page index * Provide RemoteComponent with a method to reload itself * Bump version * Cleanup tests * Prevent duplicate --emptyOutDir arg * Tweak playwright tests * Expose role and permission enums * Fix imports * Updated docs * Fix spelling, typos, etc * Include more package version information * Expose more version context * Cleanup * Probably don't need hooks * Fix links * Docs updates * Fix links
34 lines
717 B
TypeScript
34 lines
717 B
TypeScript
import { Loader } from '@mantine/core';
|
|
import { useMemo, useState } from 'react';
|
|
|
|
import type { ModelType } from '@lib/enums/ModelType';
|
|
import { api } from '../../App';
|
|
import { RenderInstance } from './Instance';
|
|
|
|
/**
|
|
* Render a model instance from a URL
|
|
* @param model Model type
|
|
* @param url URL to fetch instance from
|
|
* @returns JSX Element
|
|
*/
|
|
export function InstanceFromUrl({
|
|
model,
|
|
url
|
|
}: Readonly<{
|
|
model: ModelType;
|
|
url: string;
|
|
}>) {
|
|
const [data, setData] = useState<any>(null);
|
|
useMemo(
|
|
() =>
|
|
api.get(url).then((res) => {
|
|
setData(res.data);
|
|
}),
|
|
[model, url]
|
|
);
|
|
|
|
if (!data) return <Loader />;
|
|
|
|
return <RenderInstance instance={data} model={model} />;
|
|
}
|