Черновики форм создания сохраняются в localStorage
Модалки по жёлтым кнопкам «Добавить» (типы заявок, доступ к заявкам, маршруты, шаги маршрута) теряли введённое при случайном клике по подложке. Теперь черновик живёт в localStorage (useFormDraft) и переживает закрытие окна, «Отмену» и F5. Сбрасывается после успешного сохранения или кнопкой «Очистить» в подвале модалки. Формы редактирования не персистятся — всегда открываются с данными сервера. Попутно убраны Sass-предупреждения mixed-decls в Card.module.scss. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import * as React from 'react';
|
||||
import { Alert } from './Alert';
|
||||
import { Button } from './Button';
|
||||
import { Modal } from './Modal';
|
||||
import styles from './Modal.module.scss';
|
||||
import { texts } from '../../texts';
|
||||
|
||||
export interface IFormModalProps {
|
||||
@@ -15,6 +16,12 @@ export interface IFormModalProps {
|
||||
savingLabel?: string;
|
||||
onSubmit: () => void;
|
||||
onClose: () => void;
|
||||
/**
|
||||
* Сбросить черновик формы (см. useFormDraft). Кнопка «Очистить» показывается,
|
||||
* только если передан и canReset — «Отмена» и клик мимо окна черновик не трогают.
|
||||
*/
|
||||
onReset?: () => void;
|
||||
canReset?: boolean;
|
||||
children: React.ReactNode;
|
||||
}
|
||||
|
||||
@@ -30,6 +37,8 @@ export const FormModal: React.FC<IFormModalProps> = ({
|
||||
savingLabel = texts.common.saving,
|
||||
onSubmit,
|
||||
onClose,
|
||||
onReset,
|
||||
canReset,
|
||||
children
|
||||
}) => (
|
||||
<Modal
|
||||
@@ -37,6 +46,11 @@ export const FormModal: React.FC<IFormModalProps> = ({
|
||||
onClose={onClose}
|
||||
footer={
|
||||
<>
|
||||
{onReset && canReset && (
|
||||
<span className={styles.footerStart}>
|
||||
<Button variant="ghost" icon="refresh" onClick={onReset} disabled={isSaving}>{texts.common.resetDraft}</Button>
|
||||
</span>
|
||||
)}
|
||||
<Button variant="secondary" onClick={onClose} disabled={isSaving}>{texts.common.cancel}</Button>
|
||||
<Button variant="accent" icon="check" onClick={onSubmit} disabled={isSaving}>
|
||||
{isSaving ? savingLabel : submitLabel}
|
||||
|
||||
Reference in New Issue
Block a user