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 (
+ +
+ + + {selectedPlugin.name} + + +
+ + + {text} + +
+
+ +
+ this.setState({ descriptionOpen: false })} style={{ marginRight: 0 }}> + + +
+
+ ); +} + setFavorite(pluginUri: string | undefined, isFavorite: boolean): void { if (!pluginUri) return; this.model.setFavorite(pluginUri, isFavorite); } gridColumnCount: number = 1; - render() { const classes= withStyles.getClasses(this.props); @@ -866,7 +899,9 @@ export const LoadPluginDialog = {(this.state.client_width >= NARROW_DISPLAY_THRESHOLD) ? ( -
+
+ {this.renderDescriptionPanel(selectedPlugin)} +
{this.info_string(selectedPlugin)} @@ -885,12 +920,14 @@ export const LoadPluginDialog =
+
-
+
) : ( -
+ {this.renderDescriptionPanel(selectedPlugin)} +
{this.info_string(selectedPlugin)}