import { ReactElement } from 'react'; import styled from '@emotion/styled'; import { useRecoilState } from 'recoil'; import { isSomeInputInEditModeState } from '../../tables/states/isSomeInputInEditModeState'; import { EditableCellDisplayMode } from './EditableCellDisplayMode'; import { EditableCellEditMode } from './EditableCellEditMode'; export const CellBaseContainer = styled.div` align-items: center; box-sizing: border-box; cursor: pointer; display: flex; height: 32px; position: relative; user-select: none; width: 100%; `; type OwnProps = { editModeContent: ReactElement; nonEditModeContent: ReactElement; editModeHorizontalAlign?: 'left' | 'right'; editModeVerticalPosition?: 'over' | 'below'; isEditMode?: boolean; isCreateMode?: boolean; onOutsideClick?: () => void; onInsideClick?: () => void; }; export function EditableCell({ editModeContent, nonEditModeContent, editModeHorizontalAlign = 'left', editModeVerticalPosition = 'over', isEditMode = false, onOutsideClick, onInsideClick, }: OwnProps) { const [isSomeInputInEditMode, setIsSomeInputInEditMode] = useRecoilState( isSomeInputInEditModeState, ); function handleOnClick() { if (!isSomeInputInEditMode) { onInsideClick?.(); setIsSomeInputInEditMode(true); } } return ( {isEditMode ? ( {editModeContent} ) : ( {nonEditModeContent} )} ); }