Hawk/src/js/components/file-list.js
Mahdi Dibaiee 7bcf39bdb7 fix(compatibility): make it compatible with the new Firefox OS sdcard API (tested on Sony Z3C)
fix(toolbar): increase tap area of buttons for easier access
fix(touch): improve touch sensitivity for ease of use
2016-04-08 17:31:24 +04:30

60 lines
1.7 KiB
JavaScript

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import { connect } from 'react-redux';
import File from './file';
import Directory from './directory';
import store from 'store';
import { type } from 'utils';
import Hammer from 'react-hammerjs';
import changedir from 'actions/changedir';
@connect(props)
export default class FileList extends Component {
constructor() {
super();
}
render() {
let { files, selectView, activeFile, view } = this.props;
activeFile = activeFile || [];
let settings = store.getState().get('settings');
let els = files.map((file, index) => {
let selected = activeFile.indexOf(file) > -1;
if (file.type === 'File') {
return <File selectView={selectView} selected={selected} key={index} index={index} name={file.name} size={file.size} type={file.type} />;
} else {
return <Directory selectView={selectView} selected={selected} key={index} index={index} name={file.name} children={file.children} type={file.type} />
}
});
let className= `file-list ${view}`;
return (
<Hammer onSwipe={this.swipe} options={{ direction: Hammer.DIRECTION_RIGHT }}>
<div className={className} ref='container'>
{els}
</div>
</Hammer>
);
}
swipe(e) {
let current = store.getState().get('cwd');
let up = current.split('/').slice(0, -1).join('/');
if (up === current) return;
store.dispatch(changedir(up));
}
}
function props(state) {
return {
files: state.get('files'),
selectView: state.get('selectView'),
activeFile: state.get('activeFile'),
view: state.get('settings').view || 'list'
}
}