diff --git a/ordinis-admin-ui/src/components/form/SchemaDrivenForm.tsx b/ordinis-admin-ui/src/components/form/SchemaDrivenForm.tsx
index 99f218a..919d54e 100644
--- a/ordinis-admin-ui/src/components/form/SchemaDrivenForm.tsx
+++ b/ordinis-admin-ui/src/components/form/SchemaDrivenForm.tsx
@@ -802,15 +802,21 @@ type DateTimeFieldProps = {
const DateTimeField = ({ label, value, defaultTime, onChange, hint, error }: DateTimeFieldProps) => {
const dateValue = parseFormDate(value)
const timeValue = extractTime(value, defaultTime)
+ // flex-wrap вместо fixed grid: на узких ячейках (drawer 520px ÷ 2 cols =
+ // ~210px) time wraps под date. На wide (880px ÷ 2 = ~410px) — inline.
+ // min-w на date обеспечивает разумный размер до wrap'a. Время 6rem (96px)
+ // достаточно для HH:mm + tap target 44px touch-safe.
return (
-
- onChange(combineDateTime(d, timeValue, value ?? ''))}
- />
-
+
+
+ onChange(combineDateTime(d, timeValue, value ?? ''))}
+ />
+
+
void
dictionaryName: string
businessKey: string | undefined
+ /** Optional — invoked when user clicks "Сравнить с текущим" на старой версии.
+ * Parent открывает diff view (например ConflictDiffModal с server vs that
+ * version'ом). Если не предоставлен, кнопка скрыта. */
+ onCompare?: (versionData: unknown, displayVersion: number) => void
+ /** Optional — invoked для "Откатить к v1.X.X". Parent submits update
+ * mutation с этой версией как payload. Если undefined — кнопка скрыта. */
+ onRevert?: (versionData: unknown, displayVersion: number) => void
}
-export const RecordHistoryDrawer = ({ open, onClose, dictionaryName, businessKey }: Props) => {
+export const RecordHistoryDrawer = ({
+ open, onClose, dictionaryName, businessKey, onCompare, onRevert,
+}: Props) => {
const { t } = useTranslation()
const { data, isLoading, error } = useRecordHistory(dictionaryName, open ? businessKey : undefined)
+ // Per-row collapsible JSON viewer — выносим из чтобы хранить
+ // expanded state поверх renders.
+ const [expanded, setExpanded] = useState>(new Set())
return (
)}
-
-
- {t('history.viewData')}
-
-
+ {/* Per-version action row — Compare / Revert + JSON toggle.
+ * Compare показываем для не-current versions (нечего сравнивать
+ * с самим собой). Revert тоже только для старых (на текущей
+ * uno-op). Wrap чтобы планшетный portrait делал stack. */}
+