diff --git a/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx b/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx
index fbd4a9209c..289a351da6 100644
--- a/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx
+++ b/src/containers/Tenant/Query/QueryEditor/QueryEditor.tsx
@@ -1,5 +1,6 @@
import React from 'react';
+import NiceModal from '@ebay/nice-modal-react';
import {isEqual} from 'lodash';
import throttle from 'lodash/throttle';
import type Monaco from 'monaco-editor';
@@ -54,7 +55,7 @@ import {ExplainResult} from '../ExplainResult/ExplainResult';
import {Preview} from '../Preview/Preview';
import {QueryEditorControls} from '../QueryEditorControls/QueryEditorControls';
import {QuerySettingsDialog} from '../QuerySettingsDialog/QuerySettingsDialog';
-import {SaveQueryDialog} from '../SaveQuery/SaveQuery';
+import {SAVE_QUERY_DIALOG} from '../SaveQuery/SaveQuery';
import i18n from '../i18n';
import {useEditorOptions} from './helpers';
@@ -289,7 +290,7 @@ export default function QueryEditor(props: QueryEditorProps) {
label: i18n('action.save-query'),
keybindings: [keybindings.saveQuery],
run: () => {
- dispatch(setQueryAction('save'));
+ NiceModal.show(SAVE_QUERY_DIALOG);
},
});
};
@@ -368,7 +369,6 @@ export default function QueryEditor(props: QueryEditorProps) {
/>
-
);
diff --git a/src/containers/Tenant/Query/SaveQuery/SaveQuery.tsx b/src/containers/Tenant/Query/SaveQuery/SaveQuery.tsx
index 6897ee0f4a..ec6f8d010f 100644
--- a/src/containers/Tenant/Query/SaveQuery/SaveQuery.tsx
+++ b/src/containers/Tenant/Query/SaveQuery/SaveQuery.tsx
@@ -1,12 +1,12 @@
import React from 'react';
+import NiceModal from '@ebay/nice-modal-react';
import type {ButtonProps} from '@gravity-ui/uikit';
import {Button, Dialog, DropdownMenu, TextInput} from '@gravity-ui/uikit';
import {
clearQueryNameToEdit,
saveQuery,
- selectQueryAction,
selectQueryName,
setQueryAction,
} from '../../../../store/reducers/queryActions/queryActions';
@@ -24,20 +24,25 @@ interface SaveQueryProps {
buttonProps?: ButtonProps;
}
-function useSaveQueryHandler() {
+function useSaveQueryHandler(dialogProps?: SaveQueryDialogCommonProps) {
const dispatch = useTypedDispatch();
const onSaveQueryClick = React.useCallback(() => {
- dispatch(setQueryAction('save'));
+ NiceModal.show(SAVE_QUERY_DIALOG, dialogProps);
dispatch(clearQueryNameToEdit());
- }, [dispatch]);
+ }, [dispatch, dialogProps]);
return onSaveQueryClick;
}
-export function SaveQueryButton(props: ButtonProps) {
- const onSaveQueryClick = useSaveQueryHandler();
+interface SaveQueryButtonProps extends ButtonProps {
+ dialogProps?: SaveQueryDialogCommonProps;
+}
+
+export function SaveQueryButton({dialogProps, ...buttonProps}: SaveQueryButtonProps) {
+ const onSaveQueryClick = useSaveQueryHandler(dialogProps);
+
return (
-