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/dist/index.cjs +35 -6
- 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 +35 -6
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +35 -6
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/widgets/explorer/Explorer.css +16 -4
- package/src/widgets/explorer/Explorer.js +25 -10
- package/src/widgets/explorer/Explorer.test.js +5 -0
package/package.json
CHANGED
@@ -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, 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,
|
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 },
|