| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import PropTypes from 'prop-types'
- import classNames from 'classnames'
- import FileTreeDoc from './file-tree-doc'
- import FileTreeFolder from './file-tree-folder'
- import { fileCollator } from '../util/file-collator'
- function FileTreeFolderList({
- folders,
- docs,
- files,
- classes = {},
- dropRef = null,
- children,
- }) {
- const docsAndFiles = [...docs, ...files]
- return (
- <ul
- className={classNames('list-unstyled', classes.root)}
- role="tree"
- ref={dropRef}
- dnd-container="true"
- >
- {folders.sort(compareFunction).map(folder => {
- return (
- <FileTreeFolder
- key={folder._id}
- name={folder.name}
- id={folder._id}
- folders={folder.folders}
- docs={folder.docs}
- files={folder.fileRefs}
- />
- )
- })}
- {docsAndFiles.sort(compareFunction).map(doc => {
- return (
- <FileTreeDoc
- key={doc._id}
- name={doc.name}
- id={doc._id}
- isLinkedFile={doc.linkedFileData && !!doc.linkedFileData.provider}
- />
- )
- })}
- {children}
- </ul>
- )
- }
- FileTreeFolderList.propTypes = {
- folders: PropTypes.array.isRequired,
- docs: PropTypes.array.isRequired,
- files: PropTypes.array.isRequired,
- classes: PropTypes.exact({
- root: PropTypes.string,
- }),
- dropRef: PropTypes.func,
- children: PropTypes.node,
- }
- function compareFunction(one, two) {
- return fileCollator.compare(one.name, two.name)
- }
- export default FileTreeFolderList
|