/
10-Selections.stories.tsx
68 lines (62 loc) 路 1.83 KB
/
10-Selections.stories.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import 'chonky/style/main.css';
import {
ChonkyActions,
FileAction,
FileActionData,
FileArray,
FileBrowser,
FileData,
FileList,
FileSearch,
FileToolbar,
} from 'chonky';
import React from 'react';
import { createDocsObject, StoryCategories } from '../story-helpers';
// @ts-ignore
// eslint-disable-next-line
import markdown from './10-Selections.md';
const category = StoryCategories.FileBrowserBasics;
const title = 'Managing file selections';
// eslint-disable-next-line import/no-default-export
export default {
title: `${category}/${title}`,
parameters: {
docs: createDocsObject({ category, title, markdown }),
},
};
export const SelectionsExample = () => {
const files = React.useMemo<FileArray>(
() => [
{ id: 'AswQ', name: '01.psd' },
{ id: 'SdaW', name: '02.jpg' },
{ id: 'VsWq', name: '03.pdf' },
{ id: 'MsdR', name: '04.pub' },
],
[]
);
const [selectedFiles, setSelectedFiles] = React.useState<FileData[]>([]);
const handleFileAction = (action: FileAction, data: FileActionData) => {
if (action.id === ChonkyActions.ChangeSelection.id) {
setSelectedFiles(data.files!);
}
};
const selectedFilesString =
selectedFiles.length === 0
? 'None'
: selectedFiles.map((f) => f.name).join(', ');
return (
<div style={{ height: 500 }}>
<div style={{ fontSize: 20 }}>Selected files: {selectedFilesString}</div>
<br />
<FileBrowser
files={files}
onFileAction={handleFileAction}
enableDragAndDrop={true}
>
<FileToolbar />
<FileSearch />
<FileList />
</FileBrowser>
</div>
);
};