Skip to content

Commit 43dfe2c

Browse files
committed
Added more bug to fix later
1 parent 05b95c6 commit 43dfe2c

File tree

3 files changed

+31
-21
lines changed

3 files changed

+31
-21
lines changed

build.js

+14
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,17 @@ window.openFileManager = initFM('/react-filemanager-server/', document.querySele
1111
});
1212

1313
window.ReactFileManager.registerPlugin(ImagePreview);
14+
window.ReactFileManager.registerPlugin({
15+
details: {
16+
component: ImagePreview.image_preview.component,
17+
categories: [],
18+
context_menu: {
19+
scopes: ['all'],
20+
label: 'Details',
21+
category: 'details',
22+
callback(store, item) {
23+
console.log(store, item);
24+
}
25+
}
26+
}
27+
});

src/core/fm/content/index.jsx

+3-11
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,6 @@ const FMContent = class FMContent extends Component {
2222
this.props.fm_store.working_dir = '/';
2323
}
2424

25-
componentDidMount = () => {
26-
document.getElementById('fm-content-holder').addEventListener('scroll', this.onScroll);
27-
};
28-
29-
componentWillUnmount = () => {
30-
document.getElementById('fm-content-holder').removeEventListener('scroll', this.onScroll);
31-
};
32-
3325
onContextMenu = (e, item) => {
3426
e.preventDefault();
3527
e.stopPropagation();
@@ -106,7 +98,7 @@ const FMContent = class FMContent extends Component {
10698
};
10799

108100
onScroll = throttle(e => {
109-
const el = document.getElementById('fm-content-holder');
101+
const el = e.target;
110102
const content = el.querySelector('#fm-content');
111103
const scrollTop = el.scrollTop;
112104
const offsetHeight = el.offsetHeight;
@@ -127,7 +119,7 @@ const FMContent = class FMContent extends Component {
127119

128120
render = () => {
129121
return (
130-
<div id="fm-content-holder">
122+
<div id="fm-content-holder" onScroll={this.onScroll}>
131123
<div className="qx-row">
132124
<div id="fm-content" className="qx-col" onContextMenu={this.onContextMenu}>
133125
{this.props.fm_store.list
@@ -142,7 +134,7 @@ const FMContent = class FMContent extends Component {
142134
<Button className="fm-loadmore" icon="appstore-o" type="primary" onClick={this.onClickLoadMore}>Load
143135
More</Button> : null}
144136
</div>
145-
<ContextMenu menu_items={this.state.menu_items} closeContextMenu={this.clearContextMenu}/>
137+
<ContextMenu menu_items={this.state.menu_items} closeContextMenu={this.clearContextMenu} el={this.props.fm_store.mount_point()}/>
146138
<PluginContainer/>
147139
</div>
148140
</div>

src/core/fm/context_menu/index.jsx

+14-10
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,22 @@ require('./style.css');
33

44
export default class ContextMenu extends Component {
55
componentDidMount() {
6-
document.addEventListener('contextmenu', this._handleContextMenu);
7-
document.addEventListener('click', this._handleClick);
6+
this.props.el.addEventListener('contextmenu', this._handleContextMenu);
7+
this.props.el.addEventListener('click', this._handleClick);
88
};
99

1010
componentWillUnmount() {
11-
document.removeEventListener('contextmenu', this._handleContextMenu);
12-
document.removeEventListener('click', this._handleClick);
11+
this.props.el.removeEventListener('contextmenu', this._handleContextMenu);
12+
this.props.el.removeEventListener('click', this._handleClick);
1313
}
1414

1515
_handleContextMenu = (event) => {
1616
event.preventDefault();
1717

18+
if(this.props.menu_items.length === 0) {
19+
return false;
20+
}
21+
1822
const clickX = event.clientX;
1923
const clickY = event.clientY;
2024
const screenW = window.innerWidth;
@@ -45,20 +49,20 @@ export default class ContextMenu extends Component {
4549
};
4650

4751
_handleClick = (event) => {
52+
event.target.getAttribute('onclick').call(this);
4853
const menu_items = this.props.menu_items;
49-
const visible = menu_items.length > 0;
5054
const wasOutside = !(event.target.contains === this.root);
5155

52-
if (wasOutside && visible) {
56+
if (wasOutside) {
5357
this.props.closeContextMenu();
5458
}
5559
};
5660

5761
render() {
5862
const menu_items = this.props.menu_items;
59-
const visible = menu_items.length > 0;
60-
61-
return (visible || null) &&
63+
if(!menu_items.length)
64+
return null;
65+
return (
6266
<div ref={ref => {
6367
this.root = ref
6468
}} className="contextMenu">
@@ -71,6 +75,6 @@ export default class ContextMenu extends Component {
7175
{/*<div className="contextMenu--option">Settings</div>*/}
7276
{/*<div className="contextMenu--separator"/>*/}
7377
{/*<div className="contextMenu--option">About this app</div>*/}
74-
</div>
78+
</div>)
7579
};
7680
}

0 commit comments

Comments
 (0)