11import React , { PropTypes } from 'react'
2+ import Panel from '../Panel/Panel'
23import FileListItem from './FileListItem'
4+ import cn from 'classnames'
5+ import uncontrollable from 'uncontrollable'
6+ import FileDeletionConfirmModal from './FileDeletionConfirmModal'
37import './FileList.scss'
48
5- const FileList = ( { children} ) => (
6- < div className = "file-list" >
7- { children }
8- </ div >
9+ const FileList = ( { files, onDelete, onSave, deletingFile, onDeleteIntent} ) => (
10+ < Panel className = { cn ( 'file-list' , { 'modal-active' : deletingFile } ) } >
11+ { deletingFile && < div className = "modal-overlay" /> }
12+ {
13+ files . map ( ( file , i ) => {
14+ const _onConfirmDelete = ( ) => {
15+ onDelete ( file . id )
16+ onDeleteIntent ( null )
17+ }
18+ const _onFileDeleteCancel = ( ) => onDeleteIntent ( null )
19+ if ( deletingFile === file . id ) {
20+ return (
21+ < FileDeletionConfirmModal
22+ key = { i }
23+ fileName = { file . title }
24+ onConfirm = { _onConfirmDelete }
25+ onCancel = { _onFileDeleteCancel }
26+ />
27+ )
28+ }
29+ return (
30+ < FileList . Item
31+ { ...file }
32+ key = { i }
33+ onDelete = { onDeleteIntent }
34+ onSave = { onSave }
35+ />
36+ )
37+ } )
38+ }
39+ </ Panel >
940)
1041
1142FileList . propTypes = {
@@ -14,4 +45,6 @@ FileList.propTypes = {
1445
1546FileList . Item = FileListItem
1647
17- export default FileList
48+ export default uncontrollable ( FileList , {
49+ deletingFile : 'onDeleteIntent'
50+ } )
0 commit comments