Create CollectionPanelFiles [WIP]
[arvados-workbench2.git] / src / components / collection-panel-files / collection-panel-files.tsx
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import * as React from 'react';
6 import { TreeItem, TreeItemStatus } from '../tree/tree';
7 import { FileTreeData } from '../file-tree/file-tree-data';
8 import { FileTree } from '../file-tree/file-tree';
9 import { CollectionPanelFilesState } from '../../store/collection-panel/collection-panel-files/collection-panel-files-state';
10
11 export interface CollectionPanelFilesProps {
12     items: Array<TreeItem<FileTreeData>>;
13     onItemContextMenu: (event: React.MouseEvent<HTMLElement>, item: TreeItem<FileTreeData>) => void;
14     onCommonContextMenu: (event: React.MouseEvent<HTMLElement>) => void;
15     onSelectionToggle: (event: React.MouseEvent<HTMLElement>, item: TreeItem<FileTreeData>) => void;
16     onCollapseToggle: (id: string, status: TreeItemStatus) => void;
17 }
18
19 export const CollectionPanelFiles = ({ onItemContextMenu, onCommonContextMenu, ...treeProps }: CollectionPanelFilesProps) =>
20     <div>
21         <FileTree onContextMenu={onItemContextMenu} {...treeProps} />
22     </div>;
23
24 export const collectionPanelItems: Array<TreeItem<FileTreeData>> = [{
25     active: false,
26     data: {
27         name: "Directory 1",
28         type: "directory"
29     },
30     id: "Directory 1",
31     open: true,
32     status: TreeItemStatus.LOADED,
33     items: [{
34         active: false,
35         data: {
36             name: "Directory 1.1",
37             type: "directory"
38         },
39         id: "Directory 1.1",
40         open: false,
41         status: TreeItemStatus.LOADED,
42         items: []
43     }, {
44         active: false,
45         data: {
46             name: "File 1.1",
47             type: "file"
48         },
49         id: "File 1.1",
50         open: false,
51         status: TreeItemStatus.LOADED,
52         items: []
53     }]
54 }, {
55     active: false,
56     data: {
57         name: "Directory 2",
58         type: "directory"
59     },
60     id: "Directory 2",
61     open: false,
62     status: TreeItemStatus.LOADED
63 }];