feat: room category — remove hardcoded types, show 'Без категории' with link when none exist
This commit is contained in:
@@ -61,7 +61,7 @@ export function RoomModal({ open, room, categories = [], onClose, onSave, onDele
|
|||||||
number: room?.number ?? '',
|
number: room?.number ?? '',
|
||||||
name: room?.name ?? '',
|
name: room?.name ?? '',
|
||||||
floor: room?.floor ?? 1,
|
floor: room?.floor ?? 1,
|
||||||
type: room?.type ?? (categories[0]?.name ?? 'Стандарт'),
|
type: room?.type ?? (categories[0]?.name ?? ''),
|
||||||
bedType: (room?.bedType ?? 'double') as BedType,
|
bedType: (room?.bedType ?? 'double') as BedType,
|
||||||
maxGuests: room?.maxGuests ?? 2,
|
maxGuests: room?.maxGuests ?? 2,
|
||||||
baseRate: room?.baseRate ?? 5000,
|
baseRate: room?.baseRate ?? 5000,
|
||||||
@@ -227,7 +227,7 @@ export function RoomModal({ open, room, categories = [], onClose, onSave, onDele
|
|||||||
<input type="number" min={1} max={20} className="input" value={form.floor} onChange={e => set('floor', parseInt(e.target.value) || 1)} />
|
<input type="number" min={1} max={20} className="input" value={form.floor} onChange={e => set('floor', parseInt(e.target.value) || 1)} />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-1.5">Тип номера</label>
|
<label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-1.5">Категория</label>
|
||||||
{categories.length > 0 ? (
|
{categories.length > 0 ? (
|
||||||
<select
|
<select
|
||||||
className="input"
|
className="input"
|
||||||
@@ -235,16 +235,19 @@ export function RoomModal({ open, room, categories = [], onClose, onSave, onDele
|
|||||||
onChange={e => {
|
onChange={e => {
|
||||||
const cat = categories.find(c => c.id === e.target.value)
|
const cat = categories.find(c => c.id === e.target.value)
|
||||||
set('categoryId', e.target.value)
|
set('categoryId', e.target.value)
|
||||||
if (cat) set('type', cat.name)
|
set('type', cat?.name ?? '')
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<option value="">— Выберите категорию —</option>
|
<option value="">— Без категории —</option>
|
||||||
{categories.map(c => <option key={c.id} value={c.id}>{c.name}</option>)}
|
{categories.map(c => <option key={c.id} value={c.id}>{c.name}</option>)}
|
||||||
</select>
|
</select>
|
||||||
) : (
|
) : (
|
||||||
<select className="input" value={form.type} onChange={e => set('type', e.target.value)}>
|
<div className="input bg-slate-50 dark:bg-slate-700/50 text-slate-400 dark:text-slate-500 text-sm flex items-center gap-2">
|
||||||
{ROOM_TYPES.map(t => <option key={t} value={t}>{t}</option>)}
|
Без категории
|
||||||
</select>
|
<a href="/room-categories" className="text-brand-600 dark:text-brand-400 hover:underline text-xs ml-auto">
|
||||||
|
Создать →
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user