'use client' import React, { useRef } from 'react' import { useProject } from '../../../context/Project/provider' import { XMarkIcon } from '@heroicons/react/24/outline' import classNames from '../../../utils/classNames' import onEnterHandler from '../../../utils/onEnterHandler' import AreaLineItem from './AreaLineItem' import { useSidebar } from './provider' import { SidebarDocument } from './types' const DocumentLineItem = (props: { document: SidebarDocument, groupId: string, index: number }) => { const { getSelectedDocument, requestUpdateDocument, requestDeleteDocumentById, } = useProject() const { selectedDocumentId, setSelectedDocumentId, isEditDocumentNameInputShowing, setIsAddNewDocumentInputShowing, setSelectedGroupId, setIsAddNewGroupInputShowing, setIsEditDocumentNameInputShowing, } = useSidebar() const editDocumentNameTextInput = useRef(null) const onDocumentClickHandler = (itemId: string) => { setSelectedDocumentId(itemId) setSelectedGroupId(props.groupId) setIsAddNewDocumentInputShowing(false) setIsAddNewGroupInputShowing(false) } const onDocumentDoubleClickHandler = (docuemntId: string) => { setIsEditDocumentNameInputShowing(true) } const onDocumentInputBlur = () => { setIsEditDocumentNameInputShowing(false) } const onConfirmDocumentNameChangeHandler = async (documentName: string) => { const documentToUpdate = { ...getSelectedDocument() } if (documentToUpdate) { documentToUpdate.name = documentName requestUpdateDocument(documentToUpdate) .then(response => console.log('onConfirmDocumentNameChangeHandler response: ', response)) .catch(console.error) } setIsEditDocumentNameInputShowing(false) } return (
  • {!props.document.areas.length ?
    onDocumentClickHandler(props.document.id)} onDoubleClick={() => onDocumentDoubleClickHandler(props.document.id)} className={classNames( props.document.id === selectedDocumentId ? 'bg-gray-900 text-white' : 'text-gray-300 hover:bg-gray-700 hover:text-white', 'group items-center py-2 text-base font-medium rounded-b-md pl-10', props.index !== 0 ? 'rounded-t-md' : '', )}> {selectedDocumentId === props.document.id && isEditDocumentNameInputShowing ? { onEnterHandler(event, () => onConfirmDocumentNameChangeHandler(event.currentTarget.value)) }} ref={editDocumentNameTextInput} /> : {props.document.name} requestDeleteDocumentById(props.document.id)} /> }
    :
    onDocumentClickHandler(props.document.id)} onDoubleClick={() => onDocumentDoubleClickHandler(props.document.id)} className={classNames( props.document.id === selectedDocumentId ? 'bg-gray-900 text-white' : 'text-gray-300 hover:bg-gray-700 hover:text-white', 'group items-center py-2 text-base font-medium rounded-b-md pl-6', props.index !== 0 ? 'rounded-t-md' : '', )}> {selectedDocumentId === props.document.id && isEditDocumentNameInputShowing ? { onEnterHandler(event, () => onConfirmDocumentNameChangeHandler(event.currentTarget.value)) }} ref={editDocumentNameTextInput} /> : {props.document.name} } requestDeleteDocumentById(props.document.id)} />
    }
  • ) } export default DocumentLineItem