kibana/examples/files_example/public/components/confirm_button.tsx
Luke Elmers b6287708f6
Adds AGPL 3.0 license (#192025)
Updates files outside of x-pack to be triple-licensed under Elastic
License 2.0, AGPL 3.0, or SSPL 1.0.
2024-09-06 19:02:41 -06:00

51 lines
1.4 KiB
TypeScript

/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/
import React, { useState, FunctionComponent } from 'react';
import { EuiButtonIcon, EuiToolTip } from '@elastic/eui';
interface Props {
label: string;
confirmationText: string;
onConfirm: () => void;
disabled: boolean;
}
export const ConfirmButtonIcon: FunctionComponent<Props> = ({
label,
confirmationText,
onConfirm,
disabled,
}) => {
const [showConfirm, setShowConfirm] = useState(false);
return showConfirm ? (
<EuiToolTip content={confirmationText}>
<EuiButtonIcon
disabled={disabled}
aria-label={confirmationText}
color="warning"
iconType="warning"
onClick={onConfirm}
/>
</EuiToolTip>
) : (
<EuiButtonIcon
aria-label={label}
disabled={disabled}
color="danger"
iconType="trash"
onClick={(e: { stopPropagation: () => void }) => {
e.stopPropagation();
setShowConfirm(true);
setTimeout(() => setShowConfirm(false), 3000);
}}
/>
);
};