import React from 'react';
import NiceModal from '@ebay/nice-modal-react';
import {Button, Dialog} from '@gravity-ui/uikit';
import {useTypedSelector} from '..';
import {SaveQueryButton} from '../../../containers/Tenant/Query/SaveQuery/SaveQuery';
import {selectUserInput} from '../../../store/reducers/query/query';
import {cn} from '../../cn';
import {BRAND_BUTTON_CLASS} from '../../constants';
import i18n from './i18n';
import './UnsavedChangesDialog.scss';
const b = cn('ydb-unsaved-changes-dialog');
export const UNSAVED_CHANGES_DIALOG = 'unsaved-changes-dialog';
interface SaveQueryButtonInDialogProps {
onSuccess: () => void;
onCancel: () => void;
}
function SaveQueryButtonInDialog({onSuccess, onCancel}: SaveQueryButtonInDialogProps) {
const currentInput = useTypedSelector(selectUserInput);
const dialogProps = React.useMemo(
() => ({
onSuccess,
onCancel,
queryBody: currentInput,
}),
[currentInput, onSuccess, onCancel],
);
return (
{i18n('action_save-changes')}
);
}
interface UnsavedChangesDialogProps {
open: boolean;
onDontSave: () => void;
onCancel: () => void;
onSaveSuccess: () => void;
}
function UnsavedChangesDialog({
open,
onDontSave,
onCancel,
onSaveSuccess,
}: UnsavedChangesDialogProps) {
return (
);
}
export const UnsavedChangesDialogNiceModal = NiceModal.create(() => {
const modal = NiceModal.useModal();
const handleClose = React.useCallback(() => {
modal.hide();
modal.remove();
}, [modal]);
const handleDontSave = React.useCallback(() => {
modal.resolve(true);
handleClose();
}, [modal, handleClose]);
const handleCancel = React.useCallback(() => {
modal.resolve(false);
handleClose();
}, [modal, handleClose]);
const handleSaveSuccess = React.useCallback(() => {
modal.resolve(true);
handleClose();
}, [modal, handleClose]);
return (
);
});
NiceModal.register(UNSAVED_CHANGES_DIALOG, UnsavedChangesDialogNiceModal);