diff --git a/vite/src/pipedal/LoadPluginDialog.tsx b/vite/src/pipedal/LoadPluginDialog.tsx index a4ad166..cda8c21 100644 --- a/vite/src/pipedal/LoadPluginDialog.tsx +++ b/vite/src/pipedal/LoadPluginDialog.tsx @@ -44,6 +44,7 @@ import AutoSizer from 'react-virtualized-auto-sizer'; import StarBorderIcon from '@mui/icons-material/StarBorder'; import StarIcon from '@mui/icons-material/Star'; import {createStyles} from './WithStyles'; +import CloseIcon from '@mui/icons-material/Close'; import { Theme } from '@mui/material/styles'; import WithStyles, {withTheme} from './WithStyles'; @@ -179,6 +180,7 @@ type PluginGridState = { grid_cell_columns: number, minimumItemWidth: number, favoritesList: FavoritesList, + descriptionOpen: boolean; uiPlugins: UiPlugin[] //gridItems: UiPlugin[]; @@ -215,7 +217,8 @@ export const LoadPluginDialog = grid_cell_columns: this.getCellColumns(document.documentElement.clientWidth), minimumItemWidth: props.minimumItemWidth ? props.minimumItemWidth : 220, favoritesList: this.model.favorites.get(), - uiPlugins: this.model.ui_plugins.get() + uiPlugins: this.model.ui_plugins.get(), + descriptionOpen: false }; @@ -419,7 +422,7 @@ export const LoadPluginDialog = e.preventDefault(); - this.setState({ selected_uri: uri }); + this.setState({ selected_uri: uri, descriptionOpen: true }); // a better doubleclick: tracks how many recent clicks in the same area. // regardless of whether we re-rendered in the interrim. @@ -690,13 +693,43 @@ export const LoadPluginDialog = ); } + + renderDescriptionPanel(selectedPlugin?: UiPlugin) { + if (!this.state.descriptionOpen || !selectedPlugin) return null; + const text = (selectedPlugin.description && selectedPlugin.description.trim().length > 0) + ? selectedPlugin.description : "No description available."; + + return (