ywana-core8 0.0.903 → 0.0.904

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.903",
3
+ "version": "0.0.904",
4
4
  "description": "ywana-core8",
5
5
  "homepage": "https://ywana.github.io/workspace",
6
6
  "author": "Ernesto Roldan Garcia",
@@ -78,8 +78,11 @@
78
78
  width: 8rem;
79
79
  height: 10rem;
80
80
  position: relative;
81
- display: flex;
82
- flex-direction: column;
81
+ display: grid;
82
+ grid-template-areas:
83
+ "picture picture"
84
+ "main aside";
85
+ grid-template-columns: 1fr auto;
83
86
  }
84
87
 
85
88
  .file-item--selected {
@@ -92,6 +95,7 @@
92
95
  }
93
96
 
94
97
  .file-item>picture {
98
+ grid-area: picture;
95
99
  height: 7rem;
96
100
  flex: 1;
97
101
  padding: 0 1rem;
@@ -104,11 +108,11 @@
104
108
  }
105
109
 
106
110
  .file-item>main {
111
+ grid-area: main;
107
112
  height: 3rem;
108
- overflow: hidden;
109
113
  display: flex;
110
114
  flex-direction: column;
111
- align-items: center;
115
+ padding-left: 1rem;
112
116
  }
113
117
 
114
118
  .file-item-title {
@@ -120,4 +124,12 @@
120
124
  .file-item-subtitle {
121
125
  font-size: .8rem;
122
126
  color: var(--text-color-lighter);
127
+ }
128
+
129
+ .file-item>aside {
130
+ grid-area: aside;
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ height: 3rem;
123
135
  }
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useState } from 'react'
2
- import { TextField, Tree, TreeItem, Icon, DataTable, TreeNode } from '../../html'
2
+ import { TextField, Tree, TreeItem, Icon, DataTable, TreeNode, Text, MenuIcon, MenuItem } from '../../html'
3
3
  import './Explorer.css'
4
4
 
5
5
  /**
@@ -7,7 +7,7 @@ import './Explorer.css'
7
7
  */
8
8
  export const FileExplorer = (props) => {
9
9
 
10
- const { columns, files = [], onSelectFile, folders = [], onSelectFolder, defaultView = "grid", defaultFolder, filterableColumns = false, searchBy=[] } = props
10
+ const { columns, files = [], onSelectFile, onDeleteFile, folders = [], onSelectFolder, defaultView = "grid", defaultFolder, filterableColumns = false, searchBy=[] } = props
11
11
  const [selectedFolder, setSelectedFolder] = useState()
12
12
  const [selectedFile, setSelectedFile] = useState()
13
13
  const [search, setSearch] = useState()
@@ -47,7 +47,7 @@ export const FileExplorer = (props) => {
47
47
  return (
48
48
  <FileExplorerView
49
49
  folders={folders} selectedFolder={selectedFolder} onSelectFolder={selectFolder}
50
- files={selectedFiles} selectedFile={selectedFile} onSelectFile={selectFile}
50
+ files={selectedFiles} selectedFile={selectedFile} onSelectFile={selectFile} onDeleteFile={onDeleteFile}
51
51
  search={search} onSearch={searchChanged}
52
52
  selectedView={defaultView}
53
53
  columns={columns} filterableColumns={filterableColumns}
@@ -60,12 +60,12 @@ export const FileExplorer = (props) => {
60
60
  */
61
61
  export const FileExplorerView = (props) => {
62
62
 
63
- const { folders = [], selectedFolder, onSelectFolder, columns, files = [], selectedFile, onSelectFile, search, onSearch, selectedView = "grid", filterableColumns = false } = props
63
+ const { folders = [], selectedFolder, onSelectFolder, columns, files = [], selectedFile, onSelectFile, onDeleteFile, search, onSearch, selectedView = "grid", filterableColumns = false } = props
64
64
 
65
65
  const [view, setView] = useState(selectedView)
66
66
 
67
67
  const folder = folders.find(folder => folder.id === selectedFolder)
68
- const folderTitle = folder ? folder.title : ''
68
+ const folderTitle = folder ? <Text>folder.title</Text> : ''
69
69
 
70
70
  function switchView() {
71
71
  setView(view === 'grid' ? 'list' : 'grid')
@@ -87,7 +87,7 @@ export const FileExplorerView = (props) => {
87
87
  <FoldersTreeView folders={folders} selected={selectedFolder} onSelect={onSelectFolder} />
88
88
  </menu>
89
89
  <main>
90
- {view === 'grid' ? <FilesGridView files={files} selected={selectedFile} onSelect={onSelectFile} /> : null}
90
+ {view === 'grid' ? <FilesGridView files={files} selected={selectedFile} onSelect={onSelectFile} onDelete={onDeleteFile}/> : null}
91
91
  {view === 'list' ? <FilesTableView columns={columns} files={files} selected={selectedFile} onSelect={onSelectFile} filterableColumns={filterableColumns} /> : null}
92
92
  </main>
93
93
  </div>
@@ -141,15 +141,19 @@ export const FilesSearchBox = (props) => {
141
141
  * File Icons View
142
142
  */
143
143
  export const FilesGridView = (props) => {
144
- const { files = [], selected, onSelect } = props
144
+ const { files = [], selected, onSelect, onDelete } = props
145
145
 
146
146
  function isSelected(id) {
147
147
  return selected === id
148
148
  }
149
149
 
150
+ const actions = []
151
+ if (onDelete) actions.push({ icon: "delete", label: "Delete", action: onDelete })
152
+
153
+ console.log(actions)
150
154
  return (
151
155
  <div className="files-grid">
152
- {files.map(file => <FileGridItem key={file.id} file={file} onSelect={onSelect} selected={isSelected(file.id)} />)}
156
+ {files.map(file => <FileGridItem key={file.id} file={file} onSelect={onSelect} selected={isSelected(file.id)} actions={actions}/>)}
153
157
  </div>
154
158
  )
155
159
  }
@@ -159,13 +163,14 @@ export const FilesGridView = (props) => {
159
163
  */
160
164
  export const FileGridItem = (props) => {
161
165
 
162
- const { file = {}, selected = false, onSelect } = props
163
- const { id, icon, title, subtitle, actions = [], src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQkAPtY9GS4QgwAjRUSvLaa6TP4fSlQkVDqEg&usqp=CAU", footer } = file
166
+ const { file = {}, selected = false, onSelect, actions } = props
167
+ const { id, icon, title, subtitle, src = "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQkAPtY9GS4QgwAjRUSvLaa6TP4fSlQkVDqEg&usqp=CAU", footer } = file
164
168
 
165
169
  function select() {
166
170
  if (onSelect && !selected) onSelect(id)
167
171
  }
168
172
 
173
+
169
174
  const style = selected ? 'file-item--selected' : ''
170
175
  return (
171
176
  <div className={`file-item ${style}`} onClick={select}>
@@ -176,6 +181,16 @@ export const FileGridItem = (props) => {
176
181
  <div className='file-item-title'>{title}</div>
177
182
  <div className='file-item-subtitle'>{subtitle}</div>
178
183
  </main>
184
+ <aside>
185
+ {actions ? (
186
+ <MenuIcon icon="more_vert" size="small">
187
+ {actions.map(act => {
188
+ const { icon, label, action } = act
189
+ return <MenuItem key={label} icon={icon} label={label} onSelect={() => action(id)} />
190
+ })}
191
+ </MenuIcon>
192
+ ): null }
193
+ </aside>
179
194
  </div>
180
195
  )
181
196
  }
@@ -99,12 +99,17 @@ const FileExplorerViewTest = (props) => {
99
99
 
100
100
  const FileExplorerTest = (props) => {
101
101
 
102
+ function onDeleteFile(id) {
103
+ console.log("delete", id)
104
+ }
105
+
102
106
  return (
103
107
  <FileExplorer
104
108
  title="File Explorer Test"
105
109
  folders={folders} defaultFolder="10004"
106
110
  files={files}
107
111
  onSelectFile={props.onSelectFile}
112
+ onDeleteFile={onDeleteFile}
108
113
  onSelectFolder={props.onSelectFolder}
109
114
  columns ={[
110
115
  { id: 'icon', label: 'Icon', minWidth: 100 },