diff --git a/CONFIRM_DIFF_IMPROVEMENTS.md b/CONFIRM_DIFF_IMPROVEMENTS.md new file mode 100644 index 0000000..5492895 --- /dev/null +++ b/CONFIRM_DIFF_IMPROVEMENTS.md @@ -0,0 +1,359 @@ +# ✨ Улучшения ConfirmDiffModal + +## Что было сделано + +### 1. Улучшен внешний вид модального окна + +**Было:** +``` +┌─────────────────────────────┐ +│ Подтвердить сохранение │ +├─────────────────────────────┤ +│ [5] [2] [3] │ +│ Добавл. Удалено Изменено │ +├─────────────────────────────┤ +│ [Отмена] [Сохранить] │ +└─────────────────────────────┘ +``` + +**Стало:** +``` +┌────────────────────────────────────────┐ +│ Подтвердить массовое изменение [×] │ +├────────────────────────────────────────┤ +│ ⚠️ Внимание! Массовое изменение данных │ +│ Вы собираетесь изменить 15 записей │ +├────────────────────────────────────────┤ +│ ┌──────┐ ┌──────┐ ┌──────┐ │ +│ │ ✅ │ │ ❌ │ │ 🔄 │ │ +│ │ 5 │ │ 2 │ │ 3 │ │ +│ │Добав.│ │Удал. │ │Измен.│ │ +│ └──────┘ └──────┘ └──────┘ │ +├────────────────────────────────────────┤ +│ ▼ Добавлено (5) │ +│ + example.com │ +│ + test.org │ +│ ... │ +├────────────────────────────────────────┤ +│ [Отмена] [Сохранить 15 изменений] │ +└────────────────────────────────────────┘ +``` + +--- + +### 2. Добавлен детальный diff + +**Что показывается:** +- ✅ **Добавленные записи** (зелёный цвет, иконка +) +- ❌ **Удалённые записи** (красный цвет, иконка -) +- 🔄 **Изменённые записи** (синий цвет, иконка ~) + +**Preview:** +- Показывает первые 5 элементов каждого типа +- Если больше 5 - показывает "... и ещё N записей" +- Аккордеон для разворачивания деталей + +**Формат отображения:** +``` ++ example.com (добавлено) +- old-site.com (удалено) +~ updated-site.net (изменено) +``` + +--- + +### 3. Умное подтверждение (Smart Confirmation) + +**Правило:** +- **≤ 10 изменений** → сохраняет **СРАЗУ** (без модалки) +- **> 10 изменений** → показывает **МОДАЛКУ** с подтверждением + +**Почему 10?** +- Мелкие правки (1-10 записей) - быстрая работа +- Массовые изменения (>10) - требуют внимания и подтверждения +- Баланс между скоростью и безопасностью + +**Порог можно изменить:** +```javascript +// В DomainsNewManager.jsx, IPRangesManager.jsx, ASNsNewManager.jsx +if (totalChanges > 10) { // Измените 10 на нужное значение + setConfirmSaveOpen(true); +} else { + performSave(); +} +``` + +--- + +### 4. Использование modal-backdrop show + +**Как в HistoryModal:** +```jsx +<> +
++ {typeof item === 'string' ? item : JSON.stringify(item)}
+ - {typeof item === 'string' ? item : JSON.stringify(item)}
+ ~ {typeof item === 'string' ? item : JSON.stringify(item)}
+