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 (
{' '} {this.state.path ? this.state.path : 'No File Chosen'}
); } }; export default FileSelector;