diff options
Diffstat (limited to 'client/components/Browser/Folders')
| -rw-r--r-- | client/components/Browser/Folders/FolderForm.jsx | 47 | ||||
| -rw-r--r-- | client/components/Browser/Folders/FolderListView.jsx | 24 | ||||
| -rw-r--r-- | client/components/Browser/Folders/Folders.jsx | 56 | ||||
| -rw-r--r-- | client/components/Browser/Folders/NewFolderView.jsx | 24 |
4 files changed, 48 insertions, 103 deletions
diff --git a/client/components/Browser/Folders/FolderForm.jsx b/client/components/Browser/Folders/FolderForm.jsx deleted file mode 100644 index ad3e321..0000000 --- a/client/components/Browser/Folders/FolderForm.jsx +++ /dev/null @@ -1,47 +0,0 @@ -import { h, Component } from 'preact' - -import client from '../../../client.js' - -export default class FolderForm extends Component { - constructor(props) { - super() - this.state = { - name: '', - } - this.updateState = this.updateState.bind(this) - this.handleSubmit = this.handleSubmit.bind(this) - } - updateState(event){ - const name = event.target.name - let value = event.target.value - console.log(name, value) - this.setState({ - [name]: value, - error: null, - }) - } - handleSubmit(event) { - event.preventDefault() - let rec = Object.assign({}, this.state) - delete rec.error - this.props.onClose() - client.folder.create( rec ).then( (data) => { - this.props.addFolder( data ) - }) - } - render() { - return ( - <div class='form'> - <h1>new folder</h1> - <div> - <label for='folders_folder_name'>Name</label> - <input type='text' id='folders_folder_name' name='name' value={this.state.name} onChange={this.updateState} /> - </div> - <div> - <label></label> - <button onClick={this.handleSubmit}>Create</button> - </div> - </div> - ) - } -} diff --git a/client/components/Browser/Folders/FolderListView.jsx b/client/components/Browser/Folders/FolderListView.jsx new file mode 100644 index 0000000..1ee76d8 --- /dev/null +++ b/client/components/Browser/Folders/FolderListView.jsx @@ -0,0 +1,24 @@ +import { h, Component } from 'preact' + +export default function FolderListView (props) { + console.log(props) + const folders = props.folders.map( (folder, i) => ( + <div key={i} onClick={() => props.openFolder(folder)}> + <span class='name'>{folder.name}</span> + </div> + )) + + return ( + <div class='window'> + <div class='heading'> + <b>browser</b> + <div class='buttons'> + <button onClick={props.initNewFolder}>+ folder</button> + </div> + </div> + <div class='list'> + {folders} + </div> + </div> + ) +} diff --git a/client/components/Browser/Folders/Folders.jsx b/client/components/Browser/Folders/Folders.jsx deleted file mode 100644 index 2c85e80..0000000 --- a/client/components/Browser/Folders/Folders.jsx +++ /dev/null @@ -1,56 +0,0 @@ -import { h, Component } from 'preact' - -import Modal from '../../UI/Modal.jsx' -import FolderForm from './FolderForm.jsx' - -import client from '../../../client.js' - -export default class Folders extends Component { - constructor(props) { - super() - this.state = { - adding: false, - } - } - openModal() { - this.setState({ adding: true }) - } - closeModal() { - this.setState({ adding: false }) - } - toggle(folder) { - folder.open = ! folder.open - if (folder.open && ! folder.files) { - client.file.index({ 'folder_id': folder.id }).then( files => { - console.log(files) - folder.files = files - this.props.openFolder(folder) - }) - } - } - render() { - const folders = (this.props.folders || []).map( (folder,i) => { - return ( - <div key={i} onClick={() => this.toggle(folder)}> - <span class='name'>{folder.name}</span> - </div> - ) - }) - return ( - <div class='window'> - <div class='heading'> - <b>browser</b> - <div class='buttons'> - <button onClick={() => this.openModal()}>+ folder</button> - </div> - </div> - <div class='list'> - {folders} - </div> - <Modal visible={this.state.adding} onClose={() => this.closeModal()}> - <FolderForm addFolder={this.props.addFolder} onClose={() => this.closeModal()} /> - </Modal> - </div> - ) - } -} diff --git a/client/components/Browser/Folders/NewFolderView.jsx b/client/components/Browser/Folders/NewFolderView.jsx new file mode 100644 index 0000000..7573450 --- /dev/null +++ b/client/components/Browser/Folders/NewFolderView.jsx @@ -0,0 +1,24 @@ +import { h, Component } from 'preact' + +export default function NewFolderView (props) { + console.log(props) + if (! props.visible) { + return null + } + return ( + <div class='window'> + <div class='heading'> + <b>new folder</b> + <div class='buttons'> + <button onClick={props.onClose}>x</button> + </div> + </div> + <input type='text' + autofocus + placeholder='Enter a name' + value={props.name} + onChange={props.onChange} + /> + </div> + ) +} |
