import React from 'react'; const { remote } = require('electron'); class FileSelector extends React.Component { static propTypes = { type: React.PropTypes.oneOf(['file', 'directory']), initPath: React.PropTypes.string, onFileChosen: React.PropTypes.func }; static defaultProps = { type: 'file' }; componentWillMount() { this.setState({ path: this.props.initPath || null }); } handleButtonClick() { remote.dialog.showOpenDialog( { properties: [this.props.type == 'file' ? 'openFile' : 'openDirectory'] }, paths => { if (!paths) { // User hit cancel, so do nothing return; } const path = paths[0]; this.setState({ path: path }); if (this.props.onFileChosen) { this.props.onFileChosen(path); } } ); } render() { return (