import React from 'react' import { translate } from 'react-i18next' import PropTypes from 'prop-types' import classnames from 'classnames' import FileItem from './ContentItem.jsx' // import PopupExtandedAction from '../../container/PopupExtandedAction.jsx' import BtnExtandedAction from './BtnExtandedAction.jsx' class Folder extends React.Component { constructor (props) { super(props) this.state = { open: false } } handleClickToggleFolder = () => { !this.state.open && this.props.folderData.content.length === 0 && this.props.onClickFolder(this.props.folderData.id) this.setState({open: !this.state.open}) } handleClickCreateContent = (e, folder, type) => { e.stopPropagation() // because we have a link inside a link (togler and newFile) this.props.onClickCreateContent(folder, type) } render () { const { app, folderData, onClickItem, onClickExtendedAction, onClickFolder, isLast, t } = this.props return (
0, 'item-last': isLast})}>
{ folderData.title }
{/* @TODO generate the subdropdown with available app from redux */}
this.handleClickCreateContent(e, folderData, 'folder')}>
Créer un dossier
this.handleClickCreateContent(e, folderData, 'PageHtml')}>
Rédiger un document
this.handleClickCreateContent(e, folderData, 'File')}>
Importer un fichier
this.handleClickCreateContent(e, folderData, 'PageMarkdown')}>
Rédiger un document markdown
this.handleClickCreateContent(e, folderData, 'Thread')}>
Lancer une discussion
this.handleClickCreateContent(e, folderData, 'Task')}>
Créer une tâche
this.handleClickCreateContent(e, folderData, 'Issue')}>
Ouvrir un ticket
onClickExtendedAction.edit(e, folderData), move: e => onClickExtendedAction.move(e, folderData), download: e => onClickExtendedAction.download(e, folderData), archive: e => onClickExtendedAction.archive(e, folderData), delete: e => onClickExtendedAction.delete(e, folderData) }} />
{ folderData.content.map((c, i) => c.type === 'folder' ? : onClickItem(c)} onClickExtendedAction={{ // we have to use the event here because it is the only place where we also have the content (c) edit: e => onClickExtendedAction.edit(e, c), move: e => onClickExtendedAction.move(e, c), download: e => onClickExtendedAction.download(e, c), archive: e => onClickExtendedAction.archive(e, c), delete: e => onClickExtendedAction.delete(e, c) }} isLast={isLast && i === folderData.content.length - 1} key={c.id} /> )}
) } } export default translate()(Folder) Folder.propTypes = { folderData: PropTypes.shape({ title: PropTypes.string.isRequired, content: PropTypes.array }), app: PropTypes.object, onClickItem: PropTypes.func.isRequired, onClickFolder: PropTypes.func.isRequired, isLast: PropTypes.bool.isRequired }