From 2b3a9f768b2850e4c0c1504eca97acd3231d937f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=D1=81=20=D0=A1=D1=83=D0=BB=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2?= Date: Wed, 15 Jul 2026 15:38:22 +0300 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=D0=BF=D0=BB=D0=BE=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D0=B9=20inline-=D0=BE=D0=B2=D0=B5=D1=80=D0=BB=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=B8=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=B0=D0=BA=D1=82=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=BE=D1=80=20?= =?UTF-8?q?=D0=BD=D0=BE=D0=BC=D0=B5=D1=80=D0=B0=20=D0=B4=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=D0=B2=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - FieldOverlay: border-input, shadow-sm, убран overflow-hidden по умолчанию - TaskDetail: input-редакторы h-7 leading-6, для contract-number fitOverlay=false - ContractNumberField: добавлен compact-режим, подполя не обрезаются - Создание задачи оставлено с вертикальным layout --- client/src/components/ContractNumberField.tsx | 69 +++++++++++-------- client/src/components/fields/FieldOverlay.tsx | 2 +- client/src/pages/TaskDetail.tsx | 16 +++-- 3 files changed, 53 insertions(+), 34 deletions(-) diff --git a/client/src/components/ContractNumberField.tsx b/client/src/components/ContractNumberField.tsx index 6ce476d..dae6c23 100644 --- a/client/src/components/ContractNumberField.tsx +++ b/client/src/components/ContractNumberField.tsx @@ -11,6 +11,7 @@ import { } from "@/components/ui/select"; import { apiRequest } from "@/lib/queryClient"; import { useQuery } from "@tanstack/react-query"; +import { cn } from "@/lib/utils"; import { FileSignature, Loader2 } from "lucide-react"; export interface ContractNumberValue { @@ -33,6 +34,7 @@ interface ContractNumberFieldProps { config?: ContractNumberConfig; formId?: number; fieldId?: number; + compact?: boolean; } function parseValue(val: ContractNumberValue | string | undefined): ContractNumberValue { @@ -54,6 +56,7 @@ export default function ContractNumberField({ config, formId, fieldId, + compact = false, }: ContractNumberFieldProps) { const parsed = parseValue(value); const [mode, setMode] = useState<'mine' | 'customer'>(parsed.mode); @@ -127,35 +130,39 @@ export default function ContractNumberField({ const isGenerated = !!(parsed.mode === 'mine' && parsed.value && parsed.value !== ''); return ( -
-
- handleModeChange(checked ? 'mine' : 'customer')} - disabled={disabled || isGenerated} - /> - -
+
+
+
+ handleModeChange(checked ? 'mine' : 'customer')} + disabled={disabled || isGenerated} + /> + +
- +
+ +
+
{mode === 'customer' ? ( handleCustomerChange(e.target.value)} placeholder="Введите шифр заказчика" disabled={disabled} + className={cn(compact && 'h-7 leading-6 px-2')} /> ) : (
-
+
{isGenerated ? ( {parsed.value} diff --git a/client/src/components/fields/FieldOverlay.tsx b/client/src/components/fields/FieldOverlay.tsx index 857ffc1..b53a61c 100644 --- a/client/src/components/fields/FieldOverlay.tsx +++ b/client/src/components/fields/FieldOverlay.tsx @@ -42,7 +42,7 @@ export function FieldOverlay({ return createPortal(
{ const inputClass = cn( - 'border border-input rounded px-1.5 py-0.5 text-sm bg-background focus:outline-none focus:ring-1 focus:ring-ring w-full max-w-[280px]', + 'border border-input rounded px-1.5 text-sm bg-background focus:outline-none focus:ring-1 focus:ring-ring w-full max-w-[280px] h-7 leading-6', errorMessage && 'border-destructive ring-destructive' ); const textareaClass = cn( @@ -1160,6 +1160,7 @@ function FieldValueRow({ config={cnConfig} formId={formId} fieldId={field.id} + compact />
); @@ -1295,6 +1296,7 @@ function FieldValueRow({ const readViewNode = renderReadValue(); const editorNode = renderEditor(); const canShowInlineEditor = isGlobalEditMode && isEditable && !fieldState.immutable && !readOnly && editorNode != null; + const isContractNumberField = field.type === 'contract-number'; return canShowInlineEditor ? (