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')}>
this.handleClickCreateContent(e, folderData, 'PageHtml')}>
this.handleClickCreateContent(e, folderData, 'File')}>
this.handleClickCreateContent(e, folderData, 'PageMarkdown')}>
Rédiger un document markdown
this.handleClickCreateContent(e, folderData, 'Thread')}>
this.handleClickCreateContent(e, folderData, 'Task')}>
this.handleClickCreateContent(e, folderData, 'Issue')}>
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
}