diff --git a/services/web/frontend/js/features/file-tree/components/file-tree-folder-icons.tsx b/services/web/frontend/js/features/file-tree/components/file-tree-folder-icons.tsx index 45099e69fe..ac594d7ce9 100644 --- a/services/web/frontend/js/features/file-tree/components/file-tree-folder-icons.tsx +++ b/services/web/frontend/js/features/file-tree/components/file-tree-folder-icons.tsx @@ -7,7 +7,7 @@ function FileTreeFolderIcons({ onExpandCollapseClick, }: { expanded: boolean - onExpandCollapseClick: () => void + onExpandCollapseClick?: () => void }) { const { t } = useTranslation() const newEditor = useIsNewEditorEnabled() @@ -15,16 +15,16 @@ function FileTreeFolderIcons({ if (newEditor) { return ( <> - + ) } diff --git a/services/web/frontend/js/features/file-tree/components/file-tree-folder.tsx b/services/web/frontend/js/features/file-tree/components/file-tree-folder.tsx index a35646b6d6..74f31bbdd8 100644 --- a/services/web/frontend/js/features/file-tree/components/file-tree-folder.tsx +++ b/services/web/frontend/js/features/file-tree/components/file-tree-folder.tsx @@ -1,4 +1,4 @@ -import { useEffect } from 'react' +import { useCallback, useEffect } from 'react' import classNames from 'classnames' import { @@ -14,6 +14,7 @@ import { Folder } from '../../../../../types/folder' import { Doc } from '../../../../../types/doc' import { FileRef } from '../../../../../types/file-ref' import FileTreeFolderIcons from './file-tree-folder-icons' +import { useIsNewEditorEnabled } from '@/features/ide-redesign/utils/new-editor-utils' function FileTreeFolder({ name, @@ -28,6 +29,7 @@ function FileTreeFolder({ docs: Doc[] files: FileRef[] }) { + const newEditor = useIsNewEditorEnabled() const { isSelected, props: selectableEntityProps } = useSelectableEntity( id, 'folder' @@ -46,9 +48,15 @@ function FileTreeFolder({ } }, [id, selectedEntityParentIds, setExpanded]) - function handleExpandCollapseClick() { - setExpanded(!expanded) - } + const handleExpandCollapseClick = useCallback(() => { + setExpanded(expanded => !expanded) + }, [setExpanded]) + + const onClick = useCallback(() => { + if (newEditor) { + handleExpandCollapseClick() + } + }, [newEditor, handleExpandCollapseClick]) const { isOver: isOverRoot, dropRef: dropRefRoot } = useDroppable(id) const { isOver: isOverList, dropRef: dropRefList } = useDroppable(id) @@ -62,7 +70,6 @@ function FileTreeFolder({ {...selectableEntityProps} aria-expanded={expanded} aria-label={name} - tabIndex={0} ref={dropRefRoot} className={classNames(selectableEntityProps.className, { 'dnd-droppable-hover': isOverRoot || isOverList, @@ -74,6 +81,7 @@ function FileTreeFolder({ name={name} type="folder" isSelected={isSelected} + onClick={onClick} icons={ void }) { const { fileTreeReadOnly } = useFileTreeData() const { setContextMenuCoords } = useFileTreeMainContext() @@ -84,10 +87,11 @@ function FileTreeItemInner({ role="presentation" ref={itemRef} > - {icons} - {hasMenu ? : null} @@ -96,4 +100,53 @@ function FileTreeItemInner({ ) } +const FileTreeItemIconsAndName = ({ + name, + isSelected, + icons, + onClick, + setIsDraggable, +}: { + name: string + isSelected: boolean + icons?: ReactNode + onClick?: () => void + setIsDraggable: (isDraggable: boolean) => void +}) => { + const newEditor = useIsNewEditorEnabled() + + if (newEditor) { + return onClick ? ( + + ) : ( +
+ {icons} + +
+ ) + } + + return ( + <> + {icons} + + + ) +} + export default FileTreeItemInner diff --git a/services/web/frontend/js/features/file-tree/components/file-tree-item/file-tree-item-name.tsx b/services/web/frontend/js/features/file-tree/components/file-tree-item/file-tree-item-name.tsx index 038b2f2572..e742d5d5c5 100644 --- a/services/web/frontend/js/features/file-tree/components/file-tree-item/file-tree-item-name.tsx +++ b/services/web/frontend/js/features/file-tree/components/file-tree-item/file-tree-item-name.tsx @@ -1,6 +1,7 @@ import { useState, useEffect, RefObject } from 'react' import { useRefWithAutoFocus } from '../../../../shared/hooks/use-ref-with-auto-focus' import { useFileTreeActionable } from '../../contexts/file-tree-actionable' +import { useIsNewEditorEnabled } from '@/features/ide-redesign/utils/new-editor-utils' function FileTreeItemName({ name, @@ -48,6 +49,7 @@ function DisplayName({ startRenaming: () => void }) { const [clicksInSelectedCount, setClicksInSelectedCount] = useState(0) + const newEditor = useIsNewEditorEnabled() function onClick() { setClicksInSelectedCount(clicksInSelectedCount + 1) @@ -63,6 +65,15 @@ function DisplayName({ startRenaming() } + if (newEditor) { + return ( + // TODO ide-redesign-cleanup: rename the class now its no longer a button +
+ {name} +
+ ) + } + return (