| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import PropTypes from 'prop-types'
- import { useSelectableEntity } from '../contexts/file-tree-selectable'
- import FileTreeItemInner from './file-tree-item/file-tree-item-inner'
- import { useTranslation } from 'react-i18next'
- import Icon from '../../../shared/components/icon'
- import iconTypeFromName from '../util/icon-type-from-name'
- import classnames from 'classnames'
- function FileTreeDoc({ name, id, isFile, isLinkedFile }) {
- const { isSelected, props: selectableEntityProps } = useSelectableEntity(
- id,
- isFile
- )
- return (
- <li
- role="treeitem"
- {...selectableEntityProps}
- aria-label={name}
- tabIndex="0"
- >
- <FileTreeItemInner
- id={id}
- name={name}
- isSelected={isSelected}
- icons={<FileTreeIcon isLinkedFile={isLinkedFile} name={name} />}
- />
- </li>
- )
- }
- FileTreeDoc.propTypes = {
- name: PropTypes.string.isRequired,
- id: PropTypes.string.isRequired,
- isFile: PropTypes.bool,
- isLinkedFile: PropTypes.bool,
- }
- export const FileTreeIcon = ({ isLinkedFile, name }) => {
- const { t } = useTranslation()
- const className = classnames('spaced', { 'linked-file-icon': isLinkedFile })
- return (
- <>
-
- <Icon type={iconTypeFromName(name)} fw className={className} />
- {isLinkedFile && (
- <Icon
- type="external-link-square"
- modifier="rotate-180"
- className="linked-file-highlight"
- accessibilityLabel={t('linked_file')}
- />
- )}
- </>
- )
- }
- FileTreeIcon.propTypes = {
- name: PropTypes.string.isRequired,
- isLinkedFile: PropTypes.bool,
- }
- export default FileTreeDoc
|