/**
* WordPress dependencies
*/
import { Button } from '@safe-wordpress/components';
import { useState } from '@safe-wordpress/element';
import { _x } from '@safe-wordpress/i18n';
import type { Dashicon } from '@safe-wordpress/components';
/**
* External dependencies
*/
import clsx from 'clsx';
/**
* Internal dependencies
*/
import './style.scss';
import { ConfirmationDialog } from '../confirmation-dialog';
export type DeleteButtonProps = {
readonly className?: string;
readonly disabled?: boolean;
readonly icon?: Dashicon.Props[ 'icon' ];
readonly size?: Button.Props[ 'size' ];
readonly isDeleting?: boolean;
readonly onClick: () => void;
readonly labels?: Partial< {
readonly delete: string;
readonly deleting: string;
} >;
readonly confirmationLabels?: Partial< {
readonly title: string;
readonly text: string;
} >;
};
export const DeleteButton = ( {
className = '',
disabled = false,
icon,
size,
isDeleting = false,
onClick = () => void null,
labels,
confirmationLabels,
}: DeleteButtonProps ): JSX.Element => {
const [ isConfirmationVisible, showConfirmation ] = useState( false );
const deleteLabel =
labels?.delete || _x( 'Delete', 'command', 'nelio-content' );
const deletingLabel =
labels?.deleting || _x( 'Deleting…', 'text', 'nelio-content' );
const title =
confirmationLabels?.title || _x( 'Delete', 'text', 'nelio-content' );
const text =
confirmationLabels?.text ||
_x(
'Are you sure you want to delete this item? This operation can’t be undone.',
'user',
'nelio-content'
);
return (
<>
{
showConfirmation( false );
onClick();
} }
onCancel={ () => showConfirmation( false ) }
text={ text }
title={ title }
/>
>
);
};