ywana-core8 0.0.902 → 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.902",
3
+ "version": "0.0.904",
4
4
  "description": "ywana-core8",
5
5
  "homepage": "https://ywana.github.io/workspace",
6
6
  "author": "Ernesto Roldan Garcia",
@@ -6,9 +6,6 @@ import './ContentViewer.css'
6
6
 
7
7
  /**
8
8
  * Content Viewer
9
- *
10
- * @param {*} props
11
- * @returns
12
9
  */
13
10
  export const ContentViewer = (props) => {
14
11
 
@@ -39,9 +36,6 @@ export const ContentViewer = (props) => {
39
36
 
40
37
  /**
41
38
  * Field Viewer
42
- *
43
- * @param {} props
44
- * @returns
45
39
  */
46
40
  const FieldViewer = (props) => {
47
41
 
@@ -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 } = 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()
@@ -36,13 +36,18 @@ export const FileExplorer = (props) => {
36
36
  setSearch(value)
37
37
  }
38
38
 
39
- const filteredFiles = search ? files.filter(file => file.title.toLowerCase().includes(search.toLowerCase())) : files
39
+ const filteredFiles = search ? files.filter(file => {
40
+ const serchByValues = searchBy.map(key => file[key])
41
+ const searchByString = serchByValues.join(' ')
42
+ return searchByString.toLowerCase().includes(search.toLowerCase())
43
+ }) : files
44
+
40
45
  const selectedFiles = filteredFiles.filter(file => file.folder === selectedFolder)
41
46
 
42
47
  return (
43
48
  <FileExplorerView
44
49
  folders={folders} selectedFolder={selectedFolder} onSelectFolder={selectFolder}
45
- files={selectedFiles} selectedFile={selectedFile} onSelectFile={selectFile}
50
+ files={selectedFiles} selectedFile={selectedFile} onSelectFile={selectFile} onDeleteFile={onDeleteFile}
46
51
  search={search} onSearch={searchChanged}
47
52
  selectedView={defaultView}
48
53
  columns={columns} filterableColumns={filterableColumns}
@@ -55,12 +60,12 @@ export const FileExplorer = (props) => {
55
60
  */
56
61
  export const FileExplorerView = (props) => {
57
62
 
58
- 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
59
64
 
60
65
  const [view, setView] = useState(selectedView)
61
66
 
62
67
  const folder = folders.find(folder => folder.id === selectedFolder)
63
- const folderTitle = folder ? folder.title : ''
68
+ const folderTitle = folder ? <Text>folder.title</Text> : ''
64
69
 
65
70
  function switchView() {
66
71
  setView(view === 'grid' ? 'list' : 'grid')
@@ -82,7 +87,7 @@ export const FileExplorerView = (props) => {
82
87
  <FoldersTreeView folders={folders} selected={selectedFolder} onSelect={onSelectFolder} />
83
88
  </menu>
84
89
  <main>
85
- {view === 'grid' ? <FilesGridView files={files} selected={selectedFile} onSelect={onSelectFile} /> : null}
90
+ {view === 'grid' ? <FilesGridView files={files} selected={selectedFile} onSelect={onSelectFile} onDelete={onDeleteFile}/> : null}
86
91
  {view === 'list' ? <FilesTableView columns={columns} files={files} selected={selectedFile} onSelect={onSelectFile} filterableColumns={filterableColumns} /> : null}
87
92
  </main>
88
93
  </div>
@@ -136,15 +141,19 @@ export const FilesSearchBox = (props) => {
136
141
  * File Icons View
137
142
  */
138
143
  export const FilesGridView = (props) => {
139
- const { files = [], selected, onSelect } = props
144
+ const { files = [], selected, onSelect, onDelete } = props
140
145
 
141
146
  function isSelected(id) {
142
147
  return selected === id
143
148
  }
144
149
 
150
+ const actions = []
151
+ if (onDelete) actions.push({ icon: "delete", label: "Delete", action: onDelete })
152
+
153
+ console.log(actions)
145
154
  return (
146
155
  <div className="files-grid">
147
- {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}/>)}
148
157
  </div>
149
158
  )
150
159
  }
@@ -154,13 +163,14 @@ export const FilesGridView = (props) => {
154
163
  */
155
164
  export const FileGridItem = (props) => {
156
165
 
157
- const { file = {}, selected = false, onSelect } = props
158
- 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
159
168
 
160
169
  function select() {
161
170
  if (onSelect && !selected) onSelect(id)
162
171
  }
163
172
 
173
+
164
174
  const style = selected ? 'file-item--selected' : ''
165
175
  return (
166
176
  <div className={`file-item ${style}`} onClick={select}>
@@ -171,6 +181,16 @@ export const FileGridItem = (props) => {
171
181
  <div className='file-item-title'>{title}</div>
172
182
  <div className='file-item-subtitle'>{subtitle}</div>
173
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>
174
194
  </div>
175
195
  )
176
196
  }
@@ -99,17 +99,23 @@ 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 },
111
116
  { id: 'title', label: 'Titlcccce', minWidth: 100 },
112
117
  ]}
118
+ searchBy={['title', 'subtitle']}
113
119
  />
114
120
  )
115
- }
121
+ }