diff --git a/rsconcept/frontend/src/app/ApplicationLayout.tsx b/rsconcept/frontend/src/app/ApplicationLayout.tsx
index 87407967..9385b2fa 100644
--- a/rsconcept/frontend/src/app/ApplicationLayout.tsx
+++ b/rsconcept/frontend/src/app/ApplicationLayout.tsx
@@ -5,7 +5,7 @@ import ConceptToaster from '@/app/ConceptToaster';
import Footer from '@/app/Footer';
import Navigation from '@/app/Navigation';
import Loader from '@/components/ui/Loader';
-import ModalLoader from '@/components/ui/ModalLoader';
+import { ModalLoader } from '@/components/ui/Modal';
import { useAppLayoutStore, useMainHeight, useViewportHeight } from '@/stores/appLayout';
import { globals } from '@/utils/constants';
diff --git a/rsconcept/frontend/src/components/ui/Modal/ModalBackdrop.tsx b/rsconcept/frontend/src/components/ui/Modal/ModalBackdrop.tsx
new file mode 100644
index 00000000..1fa5f8e6
--- /dev/null
+++ b/rsconcept/frontend/src/components/ui/Modal/ModalBackdrop.tsx
@@ -0,0 +1,19 @@
+'use client';
+
+import clsx from 'clsx';
+
+interface ModalBackdropProps {
+ onHide: () => void;
+}
+
+export function ModalBackdrop({ onHide }: ModalBackdropProps) {
+ return (
+ <>
+
+
+ >
+ );
+}
diff --git a/rsconcept/frontend/src/components/ui/Modal.tsx b/rsconcept/frontend/src/components/ui/Modal/ModalForm.tsx
similarity index 64%
rename from rsconcept/frontend/src/components/ui/Modal.tsx
rename to rsconcept/frontend/src/components/ui/Modal/ModalForm.tsx
index 74181bb7..ae76b9a9 100644
--- a/rsconcept/frontend/src/components/ui/Modal.tsx
+++ b/rsconcept/frontend/src/components/ui/Modal/ModalForm.tsx
@@ -5,46 +5,24 @@ import clsx from 'clsx';
import { IconClose } from '@/components/Icons';
import BadgeHelp from '@/components/info/BadgeHelp';
import { CProps } from '@/components/props';
+import Button from '@/components/ui/Button';
+import MiniButton from '@/components/ui/MiniButton';
import useEscapeKey from '@/hooks/useEscapeKey';
import { HelpTopic } from '@/models/miscellaneous';
import { useDialogsStore } from '@/stores/dialogs';
import { PARAMETER } from '@/utils/constants';
import { prepareTooltip } from '@/utils/labels';
-import Button from './Button';
-import MiniButton from './MiniButton';
+import SubmitButton from '../SubmitButton';
+import { ModalBackdrop } from './ModalBackdrop';
export interface ModalProps extends CProps.Styling {
/** Title of the modal window. */
header?: string;
- /** Text of the submit button. */
- submitText?: string;
-
- /** Tooltip for the submit button when the form is invalid. */
- submitInvalidTooltip?: string;
-
- /** Indicates that form is readonly. */
- readonly?: boolean;
-
- /** Indicates that submit button is enabled. */
- canSubmit?: boolean;
-
/** Indicates that the modal window should be scrollable. */
overflowVisible?: boolean;
- /** ID of the form to be submitted. */
- formID?: string;
-
- /** Callback to be called before submit. */
- beforeSubmit?: () => boolean;
-
- /** Callback to be called after submit. */
- onSubmit?: () => boolean;
-
- /** Callback to be called after cancel. */
- onCancel?: () => void;
-
/** Help topic to be displayed in the modal window. */
helpTopic?: HelpTopic;
@@ -52,67 +30,64 @@ export interface ModalProps extends CProps.Styling {
hideHelpWhen?: () => boolean;
}
+interface ModalFormProps extends ModalProps {
+ /** Text of the submit button. */
+ submitText?: string;
+
+ /** Tooltip for the submit button when the form is invalid. */
+ submitInvalidTooltip?: string;
+
+ /** Indicates that submit button is enabled. */
+ canSubmit?: boolean;
+
+ /** Callback to be called before submit. */
+ beforeSubmit?: () => boolean;
+
+ /** Callback to be called after submit. */
+ onSubmit: (event: React.FormEvent) => void;
+}
+
/**
- * Displays a customizable modal window.
+ * Displays a customizable modal window with submit form.
*/
-function Modal({
+export function ModalForm({
children,
+ className,
header,
- submitText = 'Продолжить',
- submitInvalidTooltip,
-
- readonly,
- canSubmit,
overflowVisible,
+ canSubmit,
+ submitText = 'Продолжить',
+ submitInvalidTooltip,
beforeSubmit,
- formID,
onSubmit,
- onCancel,
- className,
helpTopic,
hideHelpWhen,
...restProps
-}: React.PropsWithChildren) {
+}: React.PropsWithChildren) {
const hideDialog = useDialogsStore(state => state.hideDialog);
useEscapeKey(hideDialog);
- const handleCancel = () => {
- hideDialog();
- onCancel?.();
- };
-
- const handleSubmit = () => {
+ function handleSubmit(event: React.FormEvent) {
if (beforeSubmit && !beforeSubmit()) {
return;
}
- if (onSubmit && !onSubmit()) {
- return;
- }
- if (formID) {
- const element = document.getElementById(formID) as HTMLFormElement;
- if (element) {
- element.requestSubmit();
- }
- }
+ onSubmit(event);
hideDialog();
- };
+ }
return (
+
);
}
-
-export default Modal;
diff --git a/rsconcept/frontend/src/components/ui/ModalLoader.tsx b/rsconcept/frontend/src/components/ui/Modal/ModalLoader.tsx
similarity index 88%
rename from rsconcept/frontend/src/components/ui/ModalLoader.tsx
rename to rsconcept/frontend/src/components/ui/Modal/ModalLoader.tsx
index 8929420d..634196e1 100644
--- a/rsconcept/frontend/src/components/ui/ModalLoader.tsx
+++ b/rsconcept/frontend/src/components/ui/Modal/ModalLoader.tsx
@@ -2,9 +2,9 @@
import clsx from 'clsx';
-import Loader from './Loader';
+import Loader from '@/components/ui/Loader';
-function ModalLoader() {
+export function ModalLoader() {
return (
@@ -21,5 +21,3 @@ function ModalLoader() {
);
}
-
-export default ModalLoader;
diff --git a/rsconcept/frontend/src/components/ui/Modal/ModalView.tsx b/rsconcept/frontend/src/components/ui/Modal/ModalView.tsx
new file mode 100644
index 00000000..05f71e8d
--- /dev/null
+++ b/rsconcept/frontend/src/components/ui/Modal/ModalView.tsx
@@ -0,0 +1,80 @@
+'use client';
+
+import clsx from 'clsx';
+
+import { IconClose } from '@/components/Icons';
+import BadgeHelp from '@/components/info/BadgeHelp';
+import Button from '@/components/ui/Button';
+import MiniButton from '@/components/ui/MiniButton';
+import useEscapeKey from '@/hooks/useEscapeKey';
+import { useDialogsStore } from '@/stores/dialogs';
+import { PARAMETER } from '@/utils/constants';
+import { prepareTooltip } from '@/utils/labels';
+
+import { ModalBackdrop } from './ModalBackdrop';
+import { ModalProps } from './ModalForm';
+
+interface ModalViewProps extends ModalProps {}
+
+/**
+ * Displays a customizable modal window with submit form.
+ */
+export function ModalView({
+ children,
+ className,
+ header,
+ overflowVisible,
+ helpTopic,
+ hideHelpWhen,
+ ...restProps
+}: React.PropsWithChildren) {
+ const hideDialog = useDialogsStore(state => state.hideDialog);
+ useEscapeKey(hideDialog);
+
+ return (
+
+
+
+ {helpTopic && !hideHelpWhen?.() ? (
+
+
+
+ ) : null}
+
+
}
+ className='float-right mt-2 mr-2'
+ onClick={hideDialog}
+ />
+
+ {header ?
{header}
: null}
+
+
+ {children}
+
+
+
+
+
+
+
+ );
+}
diff --git a/rsconcept/frontend/src/components/ui/Modal/index.tsx b/rsconcept/frontend/src/components/ui/Modal/index.tsx
new file mode 100644
index 00000000..c9ddb230
--- /dev/null
+++ b/rsconcept/frontend/src/components/ui/Modal/index.tsx
@@ -0,0 +1,3 @@
+export { ModalForm } from './ModalForm';
+export { ModalLoader } from './ModalLoader';
+export { ModalView } from './ModalView';
diff --git a/rsconcept/frontend/src/dialogs/DlgChangeInputSchema.tsx b/rsconcept/frontend/src/dialogs/DlgChangeInputSchema.tsx
index f2240c06..9733a8f2 100644
--- a/rsconcept/frontend/src/dialogs/DlgChangeInputSchema.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgChangeInputSchema.tsx
@@ -8,7 +8,7 @@ import { IconReset } from '@/components/Icons';
import PickSchema from '@/components/select/PickSchema';
import Label from '@/components/ui/Label';
import MiniButton from '@/components/ui/MiniButton';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import { ILibraryItem, LibraryItemID, LibraryItemType } from '@/models/library';
import { IOperation, IOperationSchema, OperationID } from '@/models/oss';
import { sortItemsForOSS } from '@/models/ossAPI';
@@ -41,7 +41,7 @@ function DlgChangeInputSchema() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgChangeLocation.tsx b/rsconcept/frontend/src/dialogs/DlgChangeLocation.tsx
index 7b5a530b..95079566 100644
--- a/rsconcept/frontend/src/dialogs/DlgChangeLocation.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgChangeLocation.tsx
@@ -7,7 +7,7 @@ import { useAuthSuspense } from '@/backend/auth/useAuth';
import SelectLocationContext from '@/components/select/SelectLocationContext';
import SelectLocationHead from '@/components/select/SelectLocationHead';
import Label from '@/components/ui/Label';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TextArea from '@/components/ui/TextArea';
import { LocationHead } from '@/models/library';
import { combineLocation, validateLocation } from '@/models/libraryAPI';
@@ -39,7 +39,7 @@ function DlgChangeLocation() {
}
return (
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgCloneLibraryItem.tsx b/rsconcept/frontend/src/dialogs/DlgCloneLibraryItem.tsx
index 886f8c17..21f9533e 100644
--- a/rsconcept/frontend/src/dialogs/DlgCloneLibraryItem.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgCloneLibraryItem.tsx
@@ -15,7 +15,7 @@ import SelectLocationHead from '@/components/select/SelectLocationHead';
import Checkbox from '@/components/ui/Checkbox';
import Label from '@/components/ui/Label';
import MiniButton from '@/components/ui/MiniButton';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TextArea from '@/components/ui/TextArea';
import TextInput from '@/components/ui/TextInput';
import { AccessPolicy, ILibraryItem, LocationHead } from '@/models/library';
@@ -78,7 +78,7 @@ function DlgCloneLibraryItem() {
}
return (
- setOnlySelected(value)}
/>
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgCreateCst/DlgCreateCst.tsx b/rsconcept/frontend/src/dialogs/DlgCreateCst/DlgCreateCst.tsx
index 9770975a..9618185b 100644
--- a/rsconcept/frontend/src/dialogs/DlgCreateCst/DlgCreateCst.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgCreateCst/DlgCreateCst.tsx
@@ -3,7 +3,7 @@
import { useState } from 'react';
import { ICstCreateDTO } from '@/backend/rsform/api';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import usePartialUpdate from '@/hooks/usePartialUpdate';
import { CstType, IRSForm } from '@/models/rsform';
import { generateAlias } from '@/models/rsformAPI';
@@ -40,7 +40,7 @@ function DlgCreateCst() {
};
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgCreateOperation/DlgCreateOperation.tsx b/rsconcept/frontend/src/dialogs/DlgCreateOperation/DlgCreateOperation.tsx
index c6dedaa6..38f95c0c 100644
--- a/rsconcept/frontend/src/dialogs/DlgCreateOperation/DlgCreateOperation.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgCreateOperation/DlgCreateOperation.tsx
@@ -6,7 +6,7 @@ import { TabList, TabPanel, Tabs } from 'react-tabs';
import { useLibrary } from '@/backend/library/useLibrary';
import { IOperationCreateDTO } from '@/backend/oss/api';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TabLabel from '@/components/ui/TabLabel';
import { LibraryItemID } from '@/models/library';
import { HelpTopic } from '@/models/miscellaneous';
@@ -98,7 +98,7 @@ function DlgCreateOperation() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgCreateVersion.tsx b/rsconcept/frontend/src/dialogs/DlgCreateVersion.tsx
index 021c08a6..0aacab50 100644
--- a/rsconcept/frontend/src/dialogs/DlgCreateVersion.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgCreateVersion.tsx
@@ -7,14 +7,14 @@ import { Controller, useForm, useWatch } from 'react-hook-form';
import { CreateVersionSchema, IVersionCreateDTO } from '@/backend/library/api';
import { useVersionCreate } from '@/backend/library/useVersionCreate';
import Checkbox from '@/components/ui/Checkbox';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TextArea from '@/components/ui/TextArea';
import TextInput from '@/components/ui/TextInput';
import { IVersionInfo, LibraryItemID, VersionID } from '@/models/library';
import { nextVersion } from '@/models/libraryAPI';
import { ConstituentaID } from '@/models/rsform';
import { useDialogsStore } from '@/stores/dialogs';
-import { globals } from '@/utils/constants';
+import { errors } from '@/utils/labels';
export interface DlgCreateVersionProps {
itemID: LibraryItemID;
@@ -50,30 +50,31 @@ function DlgCreateVersion() {
}
return (
-
-
-
+ void handleSubmit(onSubmit)(event)}
+ >
+
+
+ {selected.length > 0 ? (
+ (
+ field.onChange(value ? selected : undefined)}
+ />
+ )}
+ />
+ ) : null}
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgCstTemplate/DlgCstTemplate.tsx b/rsconcept/frontend/src/dialogs/DlgCstTemplate/DlgCstTemplate.tsx
index 21cb3b00..a99190cc 100644
--- a/rsconcept/frontend/src/dialogs/DlgCstTemplate/DlgCstTemplate.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgCstTemplate/DlgCstTemplate.tsx
@@ -7,7 +7,7 @@ import { TabList, TabPanel, Tabs } from 'react-tabs';
import { ICstCreateDTO } from '@/backend/rsform/api';
import { useRSForm } from '@/backend/rsform/useRSForm';
import Loader from '@/components/ui/Loader';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TabLabel from '@/components/ui/TabLabel';
import FormCreateCst from '@/dialogs/DlgCreateCst/FormCreateCst';
import usePartialUpdate from '@/hooks/usePartialUpdate';
@@ -120,7 +120,7 @@ function DlgCstTemplate() {
}, [constituenta.alias, constituenta.cst_type, schema, template.prototype]);
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgDeleteCst/DlgDeleteCst.tsx b/rsconcept/frontend/src/dialogs/DlgDeleteCst/DlgDeleteCst.tsx
index d7ec45bf..61a4fe14 100644
--- a/rsconcept/frontend/src/dialogs/DlgDeleteCst/DlgDeleteCst.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgDeleteCst/DlgDeleteCst.tsx
@@ -4,7 +4,7 @@ import clsx from 'clsx';
import { useState } from 'react';
import Checkbox from '@/components/ui/Checkbox';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import { ConstituentaID, IRSForm } from '@/models/rsform';
import { useDialogsStore } from '@/stores/dialogs';
import { prefixes } from '@/utils/constants';
@@ -36,7 +36,7 @@ function DlgDeleteCst() {
}
return (
- Внимание! Выбранные конституенты имеют наследников в ОСС
) : null}
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgDeleteOperation.tsx b/rsconcept/frontend/src/dialogs/DlgDeleteOperation.tsx
index da6cfb8b..72943f79 100644
--- a/rsconcept/frontend/src/dialogs/DlgDeleteOperation.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgDeleteOperation.tsx
@@ -4,7 +4,7 @@ import clsx from 'clsx';
import { useState } from 'react';
import Checkbox from '@/components/ui/Checkbox';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TextInput from '@/components/ui/TextInput';
import { HelpTopic } from '@/models/miscellaneous';
import { IOperation, OperationID } from '@/models/oss';
@@ -26,7 +26,7 @@ function DlgDeleteOperation() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgEditEditors/DlgEditEditors.tsx b/rsconcept/frontend/src/dialogs/DlgEditEditors/DlgEditEditors.tsx
index b8411ff9..a8d19567 100644
--- a/rsconcept/frontend/src/dialogs/DlgEditEditors/DlgEditEditors.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgEditEditors/DlgEditEditors.tsx
@@ -8,7 +8,7 @@ import { IconRemove } from '@/components/Icons';
import SelectUser from '@/components/select/SelectUser';
import Label from '@/components/ui/Label';
import MiniButton from '@/components/ui/MiniButton';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import { UserID } from '@/models/user';
import { useDialogsStore } from '@/stores/dialogs';
@@ -38,7 +38,7 @@ function DlgEditEditors() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgEditOperation/DlgEditOperation.tsx b/rsconcept/frontend/src/dialogs/DlgEditOperation/DlgEditOperation.tsx
index 32116ce5..0baf49ae 100644
--- a/rsconcept/frontend/src/dialogs/DlgEditOperation/DlgEditOperation.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgEditOperation/DlgEditOperation.tsx
@@ -6,7 +6,7 @@ import { TabList, TabPanel, Tabs } from 'react-tabs';
import { IOperationUpdateDTO } from '@/backend/oss/api';
import { useRSForms } from '@/backend/rsform/useRSForms';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TabLabel from '@/components/ui/TabLabel';
import { LibraryItemID } from '@/models/library';
import { HelpTopic } from '@/models/miscellaneous';
@@ -123,7 +123,7 @@ function DlgEditOperation() {
}
return (
-
) : null}
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgEditReference/DlgEditReference.tsx b/rsconcept/frontend/src/dialogs/DlgEditReference/DlgEditReference.tsx
index e510b415..45e87482 100644
--- a/rsconcept/frontend/src/dialogs/DlgEditReference/DlgEditReference.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgEditReference/DlgEditReference.tsx
@@ -4,7 +4,7 @@ import clsx from 'clsx';
import { useState } from 'react';
import { TabList, TabPanel, Tabs } from 'react-tabs';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TabLabel from '@/components/ui/TabLabel';
import { ReferenceType } from '@/models/language';
import { HelpTopic } from '@/models/miscellaneous';
@@ -46,7 +46,7 @@ function DlgEditReference() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgEditVersions/DlgEditVersions.tsx b/rsconcept/frontend/src/dialogs/DlgEditVersions/DlgEditVersions.tsx
index 01cebd52..09ee4e75 100644
--- a/rsconcept/frontend/src/dialogs/DlgEditVersions/DlgEditVersions.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgEditVersions/DlgEditVersions.tsx
@@ -7,7 +7,7 @@ import { useVersionDelete } from '@/backend/library/useVersionDelete';
import { useVersionUpdate } from '@/backend/library/useVersionUpdate';
import { IconReset, IconSave } from '@/components/Icons';
import MiniButton from '@/components/ui/MiniButton';
-import Modal from '@/components/ui/Modal';
+import { ModalView } from '@/components/ui/Modal';
import TextArea from '@/components/ui/TextArea';
import TextInput from '@/components/ui/TextInput';
import { ILibraryItemVersioned, IVersionInfo, VersionID } from '@/models/library';
@@ -64,7 +64,7 @@ function DlgEditVersions() {
}, [selected]);
return (
-
+
setDescription(event.target.value)}
/>
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgEditWordForms/DlgEditWordForms.tsx b/rsconcept/frontend/src/dialogs/DlgEditWordForms/DlgEditWordForms.tsx
index eb514ee0..f21dd07e 100644
--- a/rsconcept/frontend/src/dialogs/DlgEditWordForms/DlgEditWordForms.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgEditWordForms/DlgEditWordForms.tsx
@@ -11,7 +11,7 @@ import { IconAccept, IconMoveDown, IconMoveLeft, IconMoveRight, IconRemove } fro
import SelectMultiGrammeme from '@/components/select/SelectMultiGrammeme';
import Label from '@/components/ui/Label';
import MiniButton from '@/components/ui/MiniButton';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TextArea from '@/components/ui/TextArea';
import { Grammeme, IWordForm } from '@/models/language';
import { parseGrammemes, wordFormEquals } from '@/models/languageAPI';
@@ -124,7 +124,7 @@ function DlgEditWordForms() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgGraphParams.tsx b/rsconcept/frontend/src/dialogs/DlgGraphParams.tsx
index 4f3723a3..9a221b55 100644
--- a/rsconcept/frontend/src/dialogs/DlgGraphParams.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgGraphParams.tsx
@@ -1,7 +1,7 @@
'use client';
import Checkbox from '@/components/ui/Checkbox';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import usePartialUpdate from '@/hooks/usePartialUpdate';
import { GraphFilterParams } from '@/models/miscellaneous';
import { CstType } from '@/models/rsform';
@@ -23,7 +23,7 @@ function DlgGraphParams() {
}
return (
- updateParams({ allowTheorem: value })}
/>
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgInlineSynthesis/DlgInlineSynthesis.tsx b/rsconcept/frontend/src/dialogs/DlgInlineSynthesis/DlgInlineSynthesis.tsx
index b1fa1763..a222b0cc 100644
--- a/rsconcept/frontend/src/dialogs/DlgInlineSynthesis/DlgInlineSynthesis.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgInlineSynthesis/DlgInlineSynthesis.tsx
@@ -7,7 +7,7 @@ import { TabList, TabPanel, Tabs } from 'react-tabs';
import { IInlineSynthesisDTO } from '@/backend/rsform/api';
import { useRSForm } from '@/backend/rsform/useRSForm';
import Loader from '@/components/ui/Loader';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import TabLabel from '@/components/ui/TabLabel';
import { LibraryItemID } from '@/models/library';
import { ICstSubstitute } from '@/models/oss';
@@ -67,7 +67,7 @@ function DlgInlineSynthesis() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgRelocateConstituents.tsx b/rsconcept/frontend/src/dialogs/DlgRelocateConstituents.tsx
index 39bab5e0..dd969e81 100644
--- a/rsconcept/frontend/src/dialogs/DlgRelocateConstituents.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgRelocateConstituents.tsx
@@ -11,7 +11,7 @@ import PickMultiConstituenta from '@/components/select/PickMultiConstituenta';
import SelectLibraryItem from '@/components/select/SelectLibraryItem';
import Loader from '@/components/ui/Loader';
import MiniButton from '@/components/ui/MiniButton';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import { ILibraryItem, LibraryItemID } from '@/models/library';
import { HelpTopic } from '@/models/miscellaneous';
import { IOperation, IOperationSchema } from '@/models/oss';
@@ -86,7 +86,7 @@ function DlgRelocateConstituents() {
}
return (
-
) : null}
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgRenameCst.tsx b/rsconcept/frontend/src/dialogs/DlgRenameCst.tsx
index 97de9757..ae3f8269 100644
--- a/rsconcept/frontend/src/dialogs/DlgRenameCst.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgRenameCst.tsx
@@ -4,7 +4,7 @@ import clsx from 'clsx';
import { useEffect, useState } from 'react';
import { ICstRenameDTO } from '@/backend/rsform/api';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import SelectSingle from '@/components/ui/SelectSingle';
import TextInput from '@/components/ui/TextInput';
import usePartialUpdate from '@/hooks/usePartialUpdate';
@@ -43,7 +43,7 @@ function DlgRenameCst() {
}
return (
- updateData({ alias: event.target.value })}
/>
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgShowAST/DlgShowAST.tsx b/rsconcept/frontend/src/dialogs/DlgShowAST/DlgShowAST.tsx
index 69bea28d..a6af43f9 100644
--- a/rsconcept/frontend/src/dialogs/DlgShowAST/DlgShowAST.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgShowAST/DlgShowAST.tsx
@@ -3,7 +3,7 @@
import { useState } from 'react';
import { ReactFlowProvider } from 'reactflow';
-import Modal from '@/components/ui/Modal';
+import { ModalView } from '@/components/ui/Modal';
import Overlay from '@/components/ui/Overlay';
import { HelpTopic } from '@/models/miscellaneous';
import { SyntaxTree } from '@/models/rslang';
@@ -24,8 +24,7 @@ function DlgShowAST() {
const [isDragging, setIsDragging] = useState(false);
return (
-
@@ -50,7 +49,7 @@ function DlgShowAST() {
onChangeDragging={setIsDragging}
/>
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgShowQR.tsx b/rsconcept/frontend/src/dialogs/DlgShowQR.tsx
index 84ff55e8..0a8aeefb 100644
--- a/rsconcept/frontend/src/dialogs/DlgShowQR.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgShowQR.tsx
@@ -3,7 +3,7 @@
import clsx from 'clsx';
import { QRCodeSVG } from 'qrcode.react';
-import Modal from '@/components/ui/Modal';
+import { ModalView } from '@/components/ui/Modal';
import { useDialogsStore } from '@/stores/dialogs';
export interface DlgShowQRProps {
@@ -13,11 +13,11 @@ export interface DlgShowQRProps {
function DlgShowQR() {
const { target } = useDialogsStore(state => state.props as DlgShowQRProps);
return (
-
+
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgShowTypeGraph/DlgShowTypeGraph.tsx b/rsconcept/frontend/src/dialogs/DlgShowTypeGraph/DlgShowTypeGraph.tsx
index a3cb0b95..45940fe5 100644
--- a/rsconcept/frontend/src/dialogs/DlgShowTypeGraph/DlgShowTypeGraph.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgShowTypeGraph/DlgShowTypeGraph.tsx
@@ -3,7 +3,7 @@
import { toast } from 'react-toastify';
import { ReactFlowProvider } from 'reactflow';
-import Modal from '@/components/ui/Modal';
+import { ModalView } from '@/components/ui/Modal';
import { HelpTopic } from '@/models/miscellaneous';
import { ITypeInfo } from '@/models/rslang';
import { TMGraph } from '@/models/TMGraph';
@@ -32,16 +32,15 @@ function DlgShowTypeGraph() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgSubstituteCst.tsx b/rsconcept/frontend/src/dialogs/DlgSubstituteCst.tsx
index 0ca6dc87..ec849a97 100644
--- a/rsconcept/frontend/src/dialogs/DlgSubstituteCst.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgSubstituteCst.tsx
@@ -4,7 +4,7 @@ import clsx from 'clsx';
import { useState } from 'react';
import PickSubstitutions from '@/components/select/PickSubstitutions';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import { HelpTopic } from '@/models/miscellaneous';
import { ICstSubstitute, ICstSubstitutions } from '@/models/oss';
import { IRSForm } from '@/models/rsform';
@@ -26,7 +26,7 @@ function DlgSubstituteCst() {
}
return (
-
-
+
);
}
diff --git a/rsconcept/frontend/src/dialogs/DlgUploadRSForm.tsx b/rsconcept/frontend/src/dialogs/DlgUploadRSForm.tsx
index 35396d27..166af2db 100644
--- a/rsconcept/frontend/src/dialogs/DlgUploadRSForm.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgUploadRSForm.tsx
@@ -5,7 +5,7 @@ import { useState } from 'react';
import { useUploadTRS } from '@/backend/rsform/useUploadTRS';
import Checkbox from '@/components/ui/Checkbox';
import FileInput from '@/components/ui/FileInput';
-import Modal from '@/components/ui/Modal';
+import { ModalForm } from '@/components/ui/Modal';
import { LibraryItemID } from '@/models/library';
import { useDialogsStore } from '@/stores/dialogs';
import { EXTEOR_TRS_FILE } from '@/utils/constants';
@@ -41,7 +41,7 @@ function DlgUploadRSForm() {
};
return (
- setLoadMetadata(value)}
/>
-
+
);
}
diff --git a/rsconcept/frontend/src/utils/constants.ts b/rsconcept/frontend/src/utils/constants.ts
index 31abb8bb..fce4ae8c 100644
--- a/rsconcept/frontend/src/utils/constants.ts
+++ b/rsconcept/frontend/src/utils/constants.ts
@@ -114,8 +114,7 @@ export const globals = {
main_scroll: 'main_scroll',
library_item_editor: 'library_item_editor',
constituenta_editor: 'constituenta_editor',
- graph_schemas: 'graph_schemas_tooltip',
- dlg_create_version: 'dlg_create_version'
+ graph_schemas: 'graph_schemas_tooltip'
};
/**
diff --git a/rsconcept/frontend/src/utils/labels.ts b/rsconcept/frontend/src/utils/labels.ts
index f7878ae2..66485ed6 100644
--- a/rsconcept/frontend/src/utils/labels.ts
+++ b/rsconcept/frontend/src/utils/labels.ts
@@ -992,7 +992,8 @@ export const errors = {
rulesNotAccepted: 'Примите условия пользования Порталом',
privacyNotAccepted: 'Примите политику обработки персональных данных',
loginFormat: 'Имя пользователя должно содержать только буквы и цифры',
- invalidLocation: 'Некорректный формат пути'
+ invalidLocation: 'Некорректный формат пути',
+ versionTaken: 'Версия с таким шифром уже существует'
};
/**