Merge branch 'fix/audit-filter-compact-datepicker' into 'main'

fix(admin-ui): audit — компактнее панель фильтров + popover календаря

See merge request 2-6/2-6-4/terravault/ordinis!261
This commit is contained in:
Александр Зимин
2026-05-25 12:37:47 +00:00
2 changed files with 31 additions and 27 deletions
+9 -9
View File
@@ -373,8 +373,11 @@ function FilterPanel({
}
return (
<div className="bg-surface border border-line rounded-lg p-4 space-y-3">
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-3">
<div className="bg-surface border border-line rounded-lg p-3 space-y-2">
{/* На xl+ (≥1280px) все 5 фильтров inline в одну строку; lg → 3 cols,
sm → 2 cols, mobile → 1. Раньше DateRangePicker занимал md:col-span-2
→ шла на отдельную строку даже на широких экранах. */}
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 gap-2">
<SingleSelect
label={t('audit.filter.dictionary')}
options={dictionaryOptions}
@@ -399,11 +402,9 @@ function FilterPanel({
onChange={(e) => set('businessKey', e.target.value || undefined)}
onKeyDown={handleEnter}
/>
{/* DateRangePicker заменяет пару отдельных DatePicker'ов — один
* popover с двумя месяцами, выбор start/end в одном UI. ISO sтроки
* c local TZ offset формируются здесь, чтобы backend получал
* правильный bounds (T00:00:00 для from, T23:59:59 для to). */}
<div className="md:col-span-2">
{/* DateRangePicker — один popover с двумя месяцами, выбор start/end
в одном UI. ISO строки с local TZ offset формируются здесь чтобы
backend получал правильный bounds (T00:00:00 для from, T23:59:59 для to). */}
<DateRangePicker
label={t('audit.filter.range', { defaultValue: 'Период' })}
value={{ from: fromDate ?? undefined, to: toDate ?? undefined }}
@@ -422,8 +423,7 @@ function FilterPanel({
}}
/>
</div>
</div>
<div className="flex justify-end gap-2 pt-2 border-t border-line">
<div className="flex justify-end gap-2">
<Button type="button" variant="secondary" onClick={onReset}>
{t('audit.filter.reset')}
</Button>
@@ -161,7 +161,11 @@ export function DateRangePicker({
)}
</button>
</PopoverTrigger>
<PopoverContent align="start" className="p-3">
{/* PopoverContent default w-72 (288px) — DayPicker mode=range
numberOfMonths={2} требует ~560px, иначе второй месяц переносится
под первый и popover вылазит поверх контента ниже. На <620px
(mobile/narrow) — один месяц чтобы помещалось в w-72-aware viewport. */}
<PopoverContent align="start" className="p-3 w-auto max-w-[min(95vw,640px)]">
<PopoverPrimitive.Close className="hidden" />
<React.Suspense
fallback={