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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ywana-core8",
3
- "version": "0.0.890",
3
+ "version": "0.0.892",
4
4
  "description": "ywana-core8",
5
5
  "homepage": "https://ywana.github.io/workspace",
6
6
  "author": "Ernesto Roldan Garcia",
@@ -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 { files = [], folders = [] } = props
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
- <div style={{ padding: "1rem", flex: "1", height: "100%" }}>
32
- <FileExplorerView
33
- title="File Explorer Test"
34
- folders={folders} selectedFolder={selectedFolder} onSelectFolder={selectFolder} 
35
- files={selectedFiles} selectedFile={selectedFile} onSelectFile={selectFile}
36
- search={search} onSearch={searchChanged}
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('list')
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
- <TreeItem key={folder.id} icon={folder.icon} label={folder.title} onSelect={() => onSelect(folder.id)} selected={isSelected(folder.id)} />
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: "10001", icon: "folder", title: "Folder 1", subtitle: "1 file" },
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" },