diff --git a/src/components/menus/definitions/OrbDefinitionsMenu.tsx b/src/components/menus/definitions/OrbDefinitionsMenu.tsx index 4b4796a..dbd0b3b 100644 --- a/src/components/menus/definitions/OrbDefinitionsMenu.tsx +++ b/src/components/menus/definitions/OrbDefinitionsMenu.tsx @@ -23,6 +23,7 @@ import CollapsibleList from '../../containers/CollapsibleList'; export class OrbImportWithMeta extends orb.OrbImport { logo_url: string; + url: string; constructor( alias: string, @@ -31,12 +32,14 @@ export class OrbImportWithMeta extends orb.OrbImport { manifest: OrbImportManifest, version: string, logo_url: string, + url: string, description?: string, display?: OrbDisplayMeta, ) { super(alias, namespace, orb, version, manifest, description, display); this.logo_url = logo_url; + this.url = url; } } @@ -116,11 +119,13 @@ const OrbDefinitionContainer = (props: { const OrbDefinitionsMenu = (props: OrbDefinitionProps) => { const orbs = useStoreState((state) => state.definitions.orbs); const importOrb = useStoreActions((actions) => actions.importOrb); + const unimportOrb = useStoreActions((actions) => actions.unimportOrb); const [orb, setOrb] = useState(); + const [error, setError] = useState(false); useEffect(() => { - loadOrb(`${props.namespace}/${props.name}@${props.version}`).then( - ({ manifest }) => { + loadOrb(`${props.namespace}/${props.name}@${props.version}`) + .then(({ manifest }) => { setOrb( new OrbImportWithMeta( props.name, @@ -129,11 +134,14 @@ const OrbDefinitionsMenu = (props: OrbDefinitionProps) => { manifest, props.version, props.logo_url, + props.url, props.description, ), ); - }, - ); + }) + .catch(() => { + setError(true); + }); }, [setOrb, props]); const inProject = Object.values(orbs).find( @@ -151,8 +159,8 @@ const OrbDefinitionsMenu = (props: OrbDefinitionProps) => {

{props.version}

{ e.stopPropagation(); }} @@ -195,7 +203,16 @@ const OrbDefinitionsMenu = (props: OrbDefinitionProps) => {
{inProject ? ( - + ) : (
+ ) : error ? ( +

+ Error loading orb. It likely uses an advanced feature not yet + supported. Sorry for the inconvenience! +

) : (
diff --git a/src/components/menus/definitions/OrbImportMenu.tsx b/src/components/menus/definitions/OrbImportMenu.tsx index f6a8847..bde05ae 100644 --- a/src/components/menus/definitions/OrbImportMenu.tsx +++ b/src/components/menus/definitions/OrbImportMenu.tsx @@ -1,4 +1,5 @@ import algoliasearch from 'algoliasearch/lite'; +import { useState } from 'react'; import { Hits, HitsPerPage, @@ -87,6 +88,7 @@ const SearchBox = ( props: UseSearchBoxProps & { className?: string; placeholder?: string }, ) => { const { refine, clear } = useSearchBox(props); + const [value, setValue] = useState(''); const { results } = useInstantSearch(); return ( @@ -96,11 +98,22 @@ const SearchBox = ( className="my-2 rounded border w-fullborder-circle-gray-300 hover:border-circle-gray-700 flex flex-row" > refine(e.target.value)} + onChange={(e) => { + setValue(e.target.value); + refine(e.target.value); + }} /> -
@@ -127,9 +140,9 @@ const OrbImportMenu = (props: InspectorDefinitionProps) => { {/* */}

Search Filters

- + {/* */}