diff --git a/front/src/modules/people/editable-field/components/PeopleFullNameEditableField.tsx b/front/src/modules/people/editable-field/components/PeopleFullNameEditableField.tsx index 004549592..69eb4b986 100644 --- a/front/src/modules/people/editable-field/components/PeopleFullNameEditableField.tsx +++ b/front/src/modules/people/editable-field/components/PeopleFullNameEditableField.tsx @@ -48,8 +48,8 @@ export function PeopleFullNameEditableField({ people }: OwnProps) { return ( theme.spacing(0.5)}; padding: 0; - text-align: center; - width: auto; + width: ${({ width }) => (width ? `${width}px` : 'auto')}; + + &:hover:not(:focus) { + background-color: ${({ theme }) => theme.background.transparent.light}; + border-radius: ${({ theme }) => theme.border.radius.sm}; + cursor: pointer; + padding: 0 ${({ theme }) => theme.spacing(1)}; + } `; export function DoubleTextInputEdit({ @@ -33,24 +41,32 @@ export function DoubleTextInputEdit({ }: DoubleTextInputEditProps) { return ( - ) => { - onChange(event.target.value, secondValue); - }} - /> - ) => { - onChange(firstValue, event.target.value); - }} - /> + + {(nodeDimensions) => ( + ) => { + onChange(event.target.value, secondValue); + }} + /> + )} + + + {(nodeDimensions) => ( + ) => { + onChange(firstValue, event.target.value); + }} + /> + )} + ); } diff --git a/front/src/modules/ui/utilities/dimensions/components/ComputeNodeDimensionsEffect.tsx b/front/src/modules/ui/utilities/dimensions/components/ComputeNodeDimensionsEffect.tsx new file mode 100644 index 000000000..ac7bfb869 --- /dev/null +++ b/front/src/modules/ui/utilities/dimensions/components/ComputeNodeDimensionsEffect.tsx @@ -0,0 +1,44 @@ +import { type ReactNode, useEffect, useRef, useState } from 'react'; +import styled from '@emotion/styled'; + +type ComputeNodeDimensionsEffectProps = { + children: ( + dimensions: { height: number; width: number } | undefined, + ) => ReactNode; + node?: ReactNode; +}; + +const StyledNodeWrapper = styled.span` + pointer-events: none; + position: fixed; + visibility: hidden; +`; + +export const ComputeNodeDimensionsEffect = ({ + children, + node = children(undefined), +}: ComputeNodeDimensionsEffectProps) => { + const nodeWrapperRef = useRef(null); + const [nodeDimensions, setNodeDimensions] = useState< + | { + width: number; + height: number; + } + | undefined + >(undefined); + + useEffect(() => { + nodeWrapperRef.current && + setNodeDimensions({ + width: nodeWrapperRef.current.offsetWidth, + height: nodeWrapperRef.current.offsetHeight, + }); + }, [node]); + + return ( + <> + {node} + {children(nodeDimensions)} + + ); +};