Skip to content
This repository was archived by the owner on Jan 27, 2025. It is now read-only.

Commit a5d8247

Browse files
committed
Continue enormous refactor
1 parent 38593a0 commit a5d8247

16 files changed

+2803
-256
lines changed

.npmignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
src/
1+
src/**/*.jsx
22
demo-site/
33
webpack.config.js

demo-site/_config.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
exclude: []
2+
13
layouts_dir: 'node_modules/abas-demo-site/dist'
24

35
package_name: React Keyed File Browser

demo-site/demos.jsx

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { init } from 'abas-demo-site'
22

33
import FlatSimpleDemo from './flat-simple.jsx'
4+
import NestedTableDemo from './nested-table.jsx'
45

56
init();

demo-site/demos.sass

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
@import 'node_modules/abas-demo-site/dist/abas-demo-site'
2-
@import 'node_modules/react-keyed-file-browser/dist/react-keyed-file-browser'
2+
3+
$main-colour: #c12f3c
4+
@import 'node_modules/react-keyed-file-browser/src/browser'
5+
6+
$fa-font-path: '../node_modules/font-awesome/fonts'
7+
@import 'node_modules/font-awesome/scss/font-awesome'

demo-site/flat-simple.jsx

+21-45
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,30 @@
11
import React from 'react'
22
import ReactDOM from 'react-dom'
3+
import Moment from 'moment'
34

45
import FileBrowser from 'react-keyed-file-browser'
56

6-
class SimpleFlatDemo extends React.Component {
7-
constructor(props) {
8-
super(props);
9-
10-
this.state = {
11-
...this.state,
12-
13-
visible: true,
14-
};
15-
}
16-
17-
render() {
18-
var browser;
19-
if (this.state.visible) {
20-
browser = (
21-
<FileBrowser
22-
loading={false}
23-
files={[
24-
{key: 'cat.png', size: 1.5 * 1024 * 1024},
25-
{key: 'kitten.png', size: 545 * 1024},
26-
]}
27-
/>
28-
);
29-
}
30-
else {
31-
browser = (<p>Hidden</p>);
32-
}
33-
34-
return (
35-
<div>
36-
<input
37-
ref="visible"
38-
type="checkbox"
39-
checked={this.state.visible}
40-
onChange={(event) => {
41-
this.setState({visible: this.refs.visible.checked});
42-
}}
43-
/>
44-
{browser}
45-
</div>
46-
);
47-
}
48-
}
49-
507
var mount = document.querySelectorAll('div.demo-mount-flat-simple');
518
ReactDOM.render(
52-
<SimpleFlatDemo />,
9+
<FileBrowser
10+
loading={false}
11+
files={[
12+
{
13+
key: 'cat.png',
14+
modified: +Moment().subtract(1, 'hours'),
15+
size: 1.5 * 1024 * 1024
16+
},
17+
{
18+
key: 'kitten.png',
19+
modified: +Moment().subtract(3, 'days'),
20+
size: 545 * 1024
21+
},
22+
{
23+
key: 'elephant.png',
24+
modified: +Moment().subtract(3, 'days'),
25+
size: 52 * 1024
26+
},
27+
]}
28+
/>,
5329
mount[0]
5430
);

demo-site/index.html

+11
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,15 @@ <h2>Simple Flat &amp; Read-Only Example</h2>
2222
class="script"
2323
data-source="{{ site.baseurl }}/flat-simple.jsx"
2424
>Loading ...</code>
25+
26+
<h2>Nested Table with Event Handlers</h2>
27+
<p>In this example, the files are contained within common folders as indicated by the forward
28+
slash in the file keys.</p>
29+
<p>Simple event handlers are also provided as props to the browser, which turns on the editing
30+
buttons.</p>
31+
<div class="demo-mount-nested-table"></div>
32+
<code
33+
class="script"
34+
data-source="{{ site.baseurl }}/nested-table.jsx"
35+
>Loading ...</code>
2536
</div>

demo-site/nested-table.jsx

+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import React from 'react'
2+
import ReactDOM from 'react-dom'
3+
import Moment from 'moment'
4+
5+
import FileBrowser from 'react-keyed-file-browser'
6+
7+
class NestedTableDemo extends React.Component {
8+
constructor(props) {
9+
super(props);
10+
11+
this.state = {
12+
...this.state,
13+
14+
files: [
15+
{
16+
key: 'photos/animals/cat in a hat.png',
17+
modified: +Moment().subtract(1, 'hours'),
18+
size: 1.5 * 1024 * 1024,
19+
},
20+
{
21+
key: 'photos/animals/kitten_ball.png',
22+
modified: +Moment().subtract(3, 'days'),
23+
size: 545 * 1024,
24+
},
25+
{
26+
key: 'photos/animals/elephants.png',
27+
modified: +Moment().subtract(3, 'days'),
28+
size: 52 * 1024,
29+
},
30+
{
31+
key: 'photos/funny fall.gif',
32+
modified: +Moment().subtract(2, 'months'),
33+
size: 13.2 * 1024 * 1024,
34+
},
35+
{
36+
key: 'photos/holiday.jpg',
37+
modified: +Moment().subtract(25, 'days'),
38+
size: 85 * 1024,
39+
},
40+
],
41+
};
42+
}
43+
44+
handleAddFolder() {
45+
console.log('adding folder');
46+
}
47+
handleAddFile() {
48+
console.log('adding file');
49+
}
50+
handleMoveFolder() {
51+
console.log('moving folder');
52+
}
53+
handleMoveFile() {
54+
console.log('moving file');
55+
}
56+
handleRenameFolder() {
57+
console.log('renaming folder');
58+
}
59+
handleRenameFile(oldKey, newKey) {
60+
this.setState(state => {
61+
var newFiles = [];
62+
state.files.map((file) => {
63+
if (file.key === oldKey) {
64+
newFiles.push({
65+
...file,
66+
67+
key: newKey,
68+
});
69+
}
70+
else {
71+
newFiles.push(file);
72+
}
73+
});
74+
state.files = newFiles;
75+
return state;
76+
});
77+
}
78+
handleDeleteFolder() {
79+
console.log('deleting folder');
80+
}
81+
handleDeleteFile() {
82+
console.log('deleting file');
83+
}
84+
85+
render() {
86+
return (
87+
<FileBrowser
88+
loading={false}
89+
files={this.state.files}
90+
91+
onAddFolder={this.handleAddFolder.bind(this)}
92+
onAddFile={this.handleAddFile.bind(this)}
93+
onMoveFolder={this.handleMoveFolder.bind(this)}
94+
onMoveFile={this.handleMoveFile.bind(this)}
95+
onRenameFolder={this.handleRenameFolder.bind(this)}
96+
onRenameFile={this.handleRenameFile.bind(this)}
97+
onDeleteFolder={this.handleDeleteFolder.bind(this)}
98+
onDeleteFile={this.handleDeleteFile.bind(this)}
99+
/>
100+
);
101+
}
102+
}
103+
104+
var mount = document.querySelectorAll('div.demo-mount-nested-table');
105+
ReactDOM.render(
106+
<NestedTableDemo />,
107+
mount[0]
108+
);

demo-site/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"license": "MIT",
2121
"dependencies": {
2222
"abas-demo-site": "^1.0.6",
23+
"font-awesome": "^4.7.0",
2324
"moment": "^2.16.0",
2425
"react": "^0.14.8",
2526
"react-dom": "^0.14.8"

0 commit comments

Comments
 (0)