import React, {FC, useState} from "react"; import {RemoveButton, RemoveButtonProps} from "./RemoveButton"; import {useNodesStore} from "./store"; import {TargetedConfirmDialog} from "../TargetedConfirmDialog"; import {__} from "../globals"; export type TestableCompositeRemoveButtonProps = { show: boolean, onRemove?: () => void, } & Pick; /** * A separate component so that when the HoveredContextIDAtom state changes, the entire TestableComposite doesn't re-render */ export const TestableCompositeRemoveButton: FC = ({show, onRequestToUnHighlight, onRequestToHighlight, entityID, onRemove}) => { const removeTestable = useNodesStore(store => store.removeTestable) const isRootTestable = useNodesStore(store => !store.testableRelations.some(relation => relation.children.includes(entityID))) const [isConfirmOpen, setIsConfirmOpen] = useState(false) const [originRect, setOriginRect] = useState(null) const onConfirm = () => { removeTestable(entityID) setIsConfirmOpen(false) onRemove?.() } return
{ setOriginRect(event.currentTarget.getBoundingClientRect()) setIsConfirmOpen(true) }} show={show} positionX={'right-corner'} onRequestToHighlight={onRequestToHighlight} onRequestToUnHighlight={onRequestToUnHighlight} /> setIsConfirmOpen(false)} />
; }