From a1f5e5e539a8975a2f034725ce4c289bfb3370ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Sun, 9 Aug 2026 01:14:57 +0300 Subject: [PATCH] =?UTF-8?q?Claude=20g=C3=BCncellemesi=20Editor=20Options?= =?UTF-8?q?=20Builder=20Modal=20g=C3=BCncellemeleri?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../edit/form-fields/FormFieldTabDetails.tsx | 38 +- .../EditorOptionsBuilderDialog.tsx | 1523 +++++++---------- .../editor-options/OptionField.tsx | 256 +++ .../editor-options/jsonUtils.ts | 181 ++ .../editor-options/optionSpecs.ts | 902 ++++++++++ .../editor-options/presets.ts | 267 +++ ui/src/views/list/CardView.tsx | 4 +- ui/src/views/list/Tree.tsx | 2 + ui/src/views/list/useListFormColumns.ts | 10 +- 9 files changed, 2233 insertions(+), 950 deletions(-) create mode 100644 ui/src/views/admin/listForm/edit/json-row-operations/editor-options/OptionField.tsx create mode 100644 ui/src/views/admin/listForm/edit/json-row-operations/editor-options/jsonUtils.ts create mode 100644 ui/src/views/admin/listForm/edit/json-row-operations/editor-options/optionSpecs.ts create mode 100644 ui/src/views/admin/listForm/edit/json-row-operations/editor-options/presets.ts diff --git a/ui/src/views/admin/listForm/edit/form-fields/FormFieldTabDetails.tsx b/ui/src/views/admin/listForm/edit/form-fields/FormFieldTabDetails.tsx index 2a683dc7..0d45d55d 100644 --- a/ui/src/views/admin/listForm/edit/form-fields/FormFieldTabDetails.tsx +++ b/ui/src/views/admin/listForm/edit/form-fields/FormFieldTabDetails.tsx @@ -8,21 +8,31 @@ import { FaSlidersH } from 'react-icons/fa' import { bool, number, object, string } from 'yup' import { dbSourceTypeOptions, listFormAlignmentOptions } from '../options' import EditorOptionsBuilderDialog from '../json-row-operations/EditorOptionsBuilderDialog' +import { isValidJsonText } from '../json-row-operations/editor-options/jsonUtils' import { FormFieldEditProps } from './FormFields' import { tooltipFormatListOptions } from '@/proxy/admin/list-form/options' const schema = object().shape({ fieldName: string().required().max(100), - captionName: string(), - placeHolder: string(), - bandName: string(), - isActive: bool().required(), - visible: bool().required(), - allowSearch: bool().required(), + captionName: string().nullable(), + placeHolder: string().nullable(), + bandName: string().nullable(), + // Bu alanlar veritabanında null olabiliyor; `required()` bırakıldığında form + // sessizce submit edilmiyor ve "kaydettim ama değişmedi" durumu oluşuyordu. + isActive: bool().nullable(), + visible: bool().nullable(), + allowSearch: bool().nullable(), sourceDbType: number().required(), - alignment: string(), - format: string(), - editorOptions: string(), + // Format listesindeki "None" seçeneği null döndürüyor. + alignment: string().nullable(), + format: string().nullable(), + editorOptions: string() + .nullable() + .test( + 'is-json-object', + 'editorOptions geçerli bir JSON nesnesi olmalıdır.', + (value) => !value?.trim() || isValidJsonText(value), + ), }) function FormFieldTabDetails({ @@ -103,13 +113,18 @@ function FormFieldTabDetails({ - + + {/* Temizlenirse zorunlu alan doğrulaması formu sessizce bloke ediyordu. */} {({ field, form }: FieldProps) => (