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/dist/index.cjs +43 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +16 -4
- package/dist/index.css.map +1 -1
- package/dist/index.modern.js +43 -14
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +43 -14
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/ContentViewer.js +0 -6
- package/src/widgets/explorer/Explorer.css +16 -4
- package/src/widgets/explorer/Explorer.js +31 -11
- package/src/widgets/explorer/Explorer.test.js +7 -1
package/package.json
CHANGED
@@ -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:
|
82
|
-
|
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
|
-
|
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 =>
|
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,
|
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
|
+
}
|