import React, { useState, useRef } from 'react'; import useOnEscapeKeyDown from 'shared/hooks/onEscapeKeyDown'; import { Plus, Ellipsis } from 'shared/icons'; import { Container, Wrapper, Header, HeaderName, HeaderEditTarget, AddCardContainer, AddCardButton, AddCardButtonText, ListCards, ListExtraMenuButtonWrapper, } from './Styles'; type Props = { children: React.ReactNode; id: string; name: string; onSaveName: (name: string) => void; isComposerOpen: boolean; onOpenComposer: (id: string) => void; wrapperProps?: any; headerProps?: any; isPublic: boolean; index?: number; onExtraMenuOpen: (taskGroupID: string, $targetRef: React.RefObject) => void; }; const List = React.forwardRef( ( { id, name, onSaveName, isComposerOpen, onOpenComposer, children, isPublic, wrapperProps, headerProps, onExtraMenuOpen, }: Props, $wrapperRef: any, ) => { const [listName, setListName] = useState(name); const [isEditingTitle, setEditingTitle] = useState(false); const $listNameRef = useRef(null); const $extraActionsRef = useRef(null); const onClick = () => { setEditingTitle(true); if ($listNameRef && $listNameRef.current) { $listNameRef.current.select(); } }; const onBlur = () => { setEditingTitle(false); onSaveName(listName); }; const onEscape = () => { if ($listNameRef && $listNameRef.current) { $listNameRef.current.blur(); } }; const onChange = (event: React.FormEvent): void => { setListName(event.currentTarget.value); }; const onKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter') { e.preventDefault(); if ($listNameRef && $listNameRef.current) { $listNameRef.current.blur(); } } }; const handleExtraMenuOpen = () => { if ($extraActionsRef && $extraActionsRef.current) { onExtraMenuOpen(id, $extraActionsRef); } }; useOnEscapeKeyDown(isEditingTitle, onEscape); return (
{!isPublic && } {!isPublic && ( )}
{children && children} {!isPublic && ( )}
); }, ); List.displayName = 'List'; export default List; export { ListCards };