diff --git a/src/components/rooms/RoomModal.tsx b/src/components/rooms/RoomModal.tsx index 765cc8b..4569bc2 100644 --- a/src/components/rooms/RoomModal.tsx +++ b/src/components/rooms/RoomModal.tsx @@ -2,7 +2,7 @@ import { useState, useRef } from 'react' import { Modal } from '../ui/Modal' import { cn } from '../../lib/utils' import type { Room, RoomStatus, HousekeepingStatus, BedType, BedItem, BedItemType, ExtraPlace, ChildPolicy } from '../../types' -import { ImagePlus, X as XIcon, ChevronLeft, ChevronRight, Plus, Minus, Baby } from 'lucide-react' +import { ImagePlus, X as XIcon, ChevronLeft, ChevronRight, Plus, Minus, Baby, Trash2 } from 'lucide-react' import { useAmenities } from '../../contexts/AmenitiesContext' const ROOM_TYPES = ['Стандарт', 'Делюкс', 'Полулюкс', 'Люкс', 'Пентхаус', 'Апартаменты', 'Другой'] @@ -49,10 +49,11 @@ interface RoomModalProps { categories?: { id: string; name: string }[] onClose: () => void onSave: (room: Room) => void + onDelete?: () => void error?: string | null } -export function RoomModal({ open, room, categories = [], onClose, onSave, error }: RoomModalProps) { +export function RoomModal({ open, room, categories = [], onClose, onSave, onDelete, error }: RoomModalProps) { const isEdit = !!room const [tab, setTab] = useState('main') @@ -165,6 +166,15 @@ export function RoomModal({ open, room, categories = [], onClose, onSave, error size="xl" footer={ <> + {isEdit && onDelete && ( + + )} {error && (

{error}

)} diff --git a/src/pages/RoomsPage.tsx b/src/pages/RoomsPage.tsx index 79aa099..14862db 100644 --- a/src/pages/RoomsPage.tsx +++ b/src/pages/RoomsPage.tsx @@ -64,6 +64,17 @@ export function RoomsPage() { const [saveError, setSaveError] = useState(null) + const handleDelete = async (roomId: string) => { + try { + await api.rooms.delete(slug, roomId) + setRooms(prev => prev.filter(r => r.id !== roomId)) + setModalOpen(false) + } catch (err) { + const msg = err instanceof Error ? err.message : 'Ошибка удаления' + setSaveError(msg) + } + } + const handleSave = async (room: Room) => { setSaveError(null) try {