X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/950ea822015652a479f236fff9ea8271b60f1ee9..e4de9a43cee1a8859cb2a42ea01723d632621ce4:/src/views-components/side-panel-button/side-panel-button.tsx?ds=sidebyside diff --git a/src/views-components/side-panel-button/side-panel-button.tsx b/src/views-components/side-panel-button/side-panel-button.tsx index 3ca2f0d6..4c25bcfe 100644 --- a/src/views-components/side-panel-button/side-panel-button.tsx +++ b/src/views-components/side-panel-button/side-panel-button.tsx @@ -18,6 +18,9 @@ import { matchProjectRoute } from '~/routes/routes'; import { GroupResource } from '~/models/group'; import { ResourcesState, getResource } from '~/store/resources/resources'; import { extractUuidKind, ResourceKind } from '~/models/resource'; +import { pluginConfig } from '~/plugins'; +import { ElementListReducer } from '~/common/plugintypes'; +import { Location } from 'history'; type CssRules = 'button' | 'menuItem' | 'icon'; @@ -37,7 +40,7 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ }); interface SidePanelDataProps { - location: any; + location: Location; currentItemId: string; resources: ResourcesState; currentUserUUID: string | undefined; @@ -91,6 +94,31 @@ export const SidePanelButton = withStyles(styles)( enabled = true; } } + + for (const enableFn of pluginConfig.enableNewButtonMatchers) { + if (enableFn(location, currentItemId, currentUserUUID, resources)) { + enabled = true; + } + } + + let menuItems = <> + + New collection + + + Run a process + + + New project + + ; + + const reduceItemsFn: (a: React.ReactElement[], + b: ElementListReducer) => React.ReactElement[] = (a, b) => b(a); + + menuItems = React.createElement(React.Fragment, null, + pluginConfig.newButtonMenuList.reduce(reduceItemsFn, React.Children.toArray(menuItems.props.children))); + return @@ -109,15 +137,7 @@ export const SidePanelButton = withStyles(styles)( onClose={this.handleClose} onClick={this.handleClose} transformOrigin={transformOrigin}> - - New collection - - - Run a process - - - New project - + {menuItems} @@ -150,4 +170,4 @@ export const SidePanelButton = withStyles(styles)( } } ) -); \ No newline at end of file +);