X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/ec9331a8435c9844efe3ba018f6c0d0c3f96d573..be7d8afed27347d0b55818e64fce3e036e5300d8:/src/views-components/projects-tree-picker/projects-tree-picker.tsx diff --git a/src/views-components/projects-tree-picker/projects-tree-picker.tsx b/src/views-components/projects-tree-picker/projects-tree-picker.tsx index ba29be82..ee8ce1d5 100644 --- a/src/views-components/projects-tree-picker/projects-tree-picker.tsx +++ b/src/views-components/projects-tree-picker/projects-tree-picker.tsx @@ -2,28 +2,49 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; -import { HomeTreePicker } from '~/views-components/projects-tree-picker/home-tree-picker'; -import { SharedTreePicker } from '~/views-components/projects-tree-picker/shared-tree-picker'; -import { FavoritesTreePicker } from '~/views-components/projects-tree-picker/favorites-tree-picker'; -import { getProjectsTreePickerIds } from '~/store/tree-picker/tree-picker-actions'; -import { TreeItem } from '~/components/tree/tree'; +import React from 'react'; +import { values, memoize, pipe } from 'lodash/fp'; +import { HomeTreePicker } from 'views-components/projects-tree-picker/home-tree-picker'; +import { SharedTreePicker } from 'views-components/projects-tree-picker/shared-tree-picker'; +import { FavoritesTreePicker } from 'views-components/projects-tree-picker/favorites-tree-picker'; +import { getProjectsTreePickerIds, SHARED_PROJECT_ID, FAVORITES_PROJECT_ID } from 'store/tree-picker/tree-picker-actions'; +import { TreeItem } from 'components/tree/tree'; import { ProjectsTreePickerItem } from './generic-projects-tree-picker'; +import { PublicFavoritesTreePicker } from './public-favorites-tree-picker'; export interface ProjectsTreePickerProps { pickerId: string; includeCollections?: boolean; includeFiles?: boolean; showSelection?: boolean; + options?: { showOnlyOwned: boolean, showOnlyWritable: boolean }; toggleItemActive?: (event: React.MouseEvent, item: TreeItem, pickerId: string) => void; toggleItemSelection?: (event: React.MouseEvent, item: TreeItem, pickerId: string) => void; } export const ProjectsTreePicker = ({ pickerId, ...props }: ProjectsTreePickerProps) => { - const { home, shared, favorites } = getProjectsTreePickerIds(pickerId); + const { home, shared, favorites, publicFavorites } = getProjectsTreePickerIds(pickerId); + const relatedTreePickers = getRelatedTreePickers(pickerId); + const p = { + ...props, + relatedTreePickers, + disableActivation + }; return
- - - +
+ +
+
+ +
+
+ +
+
+ +
; }; + +const getRelatedTreePickers = memoize(pipe(getProjectsTreePickerIds, values)); +const disableActivation = [SHARED_PROJECT_ID, FAVORITES_PROJECT_ID];