File "confirmation-popover.js"
Full Path: /home/fresvfqn/waterdamagerestorationandrepairsmithtown.com/wp-content/plugins/surerank/src/global/components/confirmation-popover/confirmation-popover.js
File size: 1.76 KB
MIME-type: text/x-java
Charset: utf-8
import { __ } from '@wordpress/i18n';
import { cloneElement, useState } from '@wordpress/element';
import { Button } from '@bsf/force-ui';
import { SeoPopupTooltip } from '@AdminComponents/tooltip';
import { cn } from '@/functions/utils';
const ConfirmationPopover = ( {
onConfirm,
confirmText = __( 'Remove', 'surerank' ),
cancelText = __( 'Cancel', 'surerank' ),
children,
className,
...props
} ) => {
const [ isOpen, setIsOpen ] = useState( false );
const preventDefault = ( event ) => {
event.preventDefault();
event.stopPropagation();
};
const handleConfirm = ( event ) => {
preventDefault( event );
onConfirm();
setIsOpen( false );
};
const handleCancel = ( event ) => {
preventDefault( event );
setIsOpen( false );
};
const popoverContent = (
<div className="flex gap-2 items-center">
<Button
size="xs"
variant="outline"
onClick={ handleCancel }
aria-label={ __( 'Cancel', 'surerank' ) }
>
{ cancelText }
</Button>
<Button
size="xs"
className="focus:[box-shadow:none] bg-button-danger hover:bg-button-danger-hover outline-button-danger hover:outline-button-danger-hover"
onClick={ handleConfirm }
destructive
aria-label={ __( 'Confirm', 'surerank' ) }
>
{ confirmText }
</Button>
</div>
);
return (
<SeoPopupTooltip
className={ cn(
'w-fit p-1.5 rounded shadow-md border border-solid border-border-subtle [&>svg]:fill-border-subtle',
className
) }
content={ popoverContent }
open={ isOpen }
setOpen={ setIsOpen }
variant="light"
arrow
{ ...props }
>
{ cloneElement( children, {
onClick: ( event ) => {
preventDefault( event );
setIsOpen( ( prev ) => ! prev );
},
} ) }
</SeoPopupTooltip>
);
};
export default ConfirmationPopover;