ywana-core8 0.0.890 → 0.0.892
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +45 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +45 -22
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +45 -22
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/widgets/explorer/Explorer.js +44 -22
- package/src/widgets/explorer/Explorer.test.js +5 -1
package/package.json
CHANGED
@@ -1,17 +1,32 @@
|
|
1
|
-
import React, { useState } from 'react'
|
2
|
-
import { TextField, Tree, TreeItem, Icon, DataTable } from '../../html'
|
1
|
+
import React, { useEffect, useState } from 'react'
|
2
|
+
import { TextField, Tree, TreeItem, Icon, DataTable, TreeNode } from '../../html'
|
3
3
|
import './Explorer.css'
|
4
4
|
|
5
5
|
/**
|
6
6
|
* File Explorer
|
7
7
|
*/
|
8
8
|
export const FileExplorer = (props) => {
|
9
|
-
|
10
|
-
const {
|
9
|
+
|
10
|
+
const { files = [], onSelectFile, folders = [], onSelectFolder, defaultView = "grid" } = props
|
11
11
|
const [selectedFolder, setSelectedFolder] = useState()
|
12
12
|
const [selectedFile, setSelectedFile] = useState()
|
13
13
|
const [search, setSearch] = useState()
|
14
|
-
|
14
|
+
|
15
|
+
useEffect(() => {
|
16
|
+
if (files.length > 0) {
|
17
|
+
setSelectedFolder(files[0].folder)
|
18
|
+
setSelectedFile(files[0].id)
|
19
|
+
}
|
20
|
+
}, [files])
|
21
|
+
|
22
|
+
useEffect(() => {
|
23
|
+
if (onSelectFile) onSelectFile(selectedFile)
|
24
|
+
}, [selectedFile])
|
25
|
+
|
26
|
+
useEffect(() => {
|
27
|
+
if (onSelectFolder) onSelectFolder(selectedFolder)
|
28
|
+
}, [selectedFolder])
|
29
|
+
|
15
30
|
function selectFolder(id) {
|
16
31
|
setSelectedFolder(id)
|
17
32
|
}
|
@@ -28,14 +43,12 @@ export const FileExplorer = (props) => {
|
|
28
43
|
const selectedFiles = filteredFiles.filter(file => file.folder === selectedFolder)
|
29
44
|
|
30
45
|
return (
|
31
|
-
<
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
/>
|
38
|
-
</div>
|
46
|
+
<FileExplorerView
|
47
|
+
folders={folders} selectedFolder={selectedFolder} onSelectFolder={selectFolder}
|
48
|
+
files={selectedFiles} selectedFile={selectedFile} onSelectFile={selectFile}
|
49
|
+
search={search} onSearch={searchChanged}
|
50
|
+
selectedView={defaultView}
|
51
|
+
/>
|
39
52
|
)
|
40
53
|
}
|
41
54
|
|
@@ -44,9 +57,9 @@ export const FileExplorer = (props) => {
|
|
44
57
|
*/
|
45
58
|
export const FileExplorerView = (props) => {
|
46
59
|
|
47
|
-
const { folders = [], selectedFolder, onSelectFolder, files = [], selectedFile, onSelectFile, search, onSearch } = props
|
60
|
+
const { folders = [], selectedFolder, onSelectFolder, files = [], selectedFile, onSelectFile, search, onSearch, selectedView = "grid" } = props
|
48
61
|
|
49
|
-
const [view, setView] = useState(
|
62
|
+
const [view, setView] = useState(selectedView)
|
50
63
|
|
51
64
|
const folder = folders.find(folder => folder.id === selectedFolder)
|
52
65
|
const folderTitle = folder ? folder.title : ''
|
@@ -55,7 +68,6 @@ export const FileExplorerView = (props) => {
|
|
55
68
|
setView(view === 'grid' ? 'list' : 'grid')
|
56
69
|
}
|
57
70
|
|
58
|
-
|
59
71
|
return (
|
60
72
|
<div className="file-explorer">
|
61
73
|
<nav>
|
@@ -63,8 +75,8 @@ export const FileExplorerView = (props) => {
|
|
63
75
|
<div className="folder-title">{folderTitle}</div>
|
64
76
|
</header>
|
65
77
|
<div className="folder-actions">
|
66
|
-
<Icon icon='list' clickable action={switchView} checked={view==="list"} />
|
67
|
-
<Icon icon='grid_view' clickable action={switchView} checked={view==="grid"} />
|
78
|
+
<Icon icon='list' clickable action={switchView} checked={view === "list"} />
|
79
|
+
<Icon icon='grid_view' clickable action={switchView} checked={view === "grid"} />
|
68
80
|
</div>
|
69
81
|
<FilesSearchBox search={search} onSearch={onSearch} />
|
70
82
|
</nav>
|
@@ -89,9 +101,19 @@ export const FoldersTreeView = (props) => {
|
|
89
101
|
|
90
102
|
return (
|
91
103
|
<Tree>
|
92
|
-
{folders.map(folder =>
|
93
|
-
|
94
|
-
|
104
|
+
{folders.map(folder => {
|
105
|
+
if (folder.children) {
|
106
|
+
return (
|
107
|
+
<TreeNode key={folder.id} label={folder.title}>
|
108
|
+
<FoldersTreeView folders={folder.children} selected={selected} onSelect={onSelect} />
|
109
|
+
</TreeNode>
|
110
|
+
)
|
111
|
+
} else {
|
112
|
+
return (
|
113
|
+
<TreeItem key={folder.id} icon={folder.icon} label={folder.title} onSelect={() => onSelect(folder.id)} selected={isSelected(folder.id)} />
|
114
|
+
)
|
115
|
+
}
|
116
|
+
})}
|
95
117
|
</Tree>
|
96
118
|
)
|
97
119
|
}
|
@@ -165,7 +187,7 @@ export const FilesTableView = (props) => {
|
|
165
187
|
|
166
188
|
const table = {
|
167
189
|
columns: [
|
168
|
-
{ id: "icon", type: "ICON"},
|
190
|
+
{ id: "icon", type: "ICON" },
|
169
191
|
{ id: "title", label: "Title" },
|
170
192
|
{ id: "subtitle", label: "Subtitle" },
|
171
193
|
],
|
@@ -51,7 +51,11 @@ const files = [
|
|
51
51
|
]
|
52
52
|
|
53
53
|
const folders = [
|
54
|
-
{ id: "
|
54
|
+
{ id: "10000", icon: "folder", title: "Folder 1", subtitle: "1 file" , children: [
|
55
|
+
{ id: "10001", icon: "folder", title: "Folder 2", subtitle: "1 file" },
|
56
|
+
{ id: "20003", icon: "folder", title: "Folder 3", subtitle: "1 file" },
|
57
|
+
{ id: "20004", icon: "folder", title: "Folder 4", subtitle: "1 file" },
|
58
|
+
]},
|
55
59
|
{ id: "10002", icon: "folder", title: "Folder 2", subtitle: "1 file" },
|
56
60
|
{ id: "10003", icon: "folder", title: "Folder 3", subtitle: "1 file" },
|
57
61
|
{ id: "10004", icon: "folder", title: "Folder 4", subtitle: "1 file" },
|