From f91955a42eb352383d1d7d1d431bb03596e9ffc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Tue, 4 Nov 2025 22:09:31 +0300 Subject: [PATCH] =?UTF-8?q?Komponent=20editor=20k=C4=B1sm=C4=B1nda=20otoma?= =?UTF-8?q?tik=20kod=20olu=C5=9Fturma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Seeds/LanguagesData.json | 6 ++ .../developerKit/ComponentEditor.tsx | 61 ++++++++++++++++++- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/LanguagesData.json index bfc06491..c2d645e1 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/LanguagesData.json @@ -10657,6 +10657,12 @@ "en": "Dependencies", "tr": "Bağımlılıklar" }, + { + "resourceName": "Platform", + "key": "App.DeveloperKit.ComponentEditor.Code", + "en": "Code", + "tr": "Kod" + }, { "resourceName": "Platform", "key": "App.DeveloperKit.ComponentEditor.Description", diff --git a/ui/src/components/developerKit/ComponentEditor.tsx b/ui/src/components/developerKit/ComponentEditor.tsx index 59714746..fd450256 100644 --- a/ui/src/components/developerKit/ComponentEditor.tsx +++ b/ui/src/components/developerKit/ComponentEditor.tsx @@ -113,6 +113,24 @@ const ComponentEditor: React.FC = () => { } }, [id, isEditing, getComponent, isLoaded, parseAndUpdateComponents]) + // Generate component template based on name + const generateComponentTemplate = (componentName: string): string => { + if (!componentName.trim()) return '' + + // Convert component name to PascalCase if not already + const pascalCaseName = componentName.charAt(0).toUpperCase() + componentName.slice(1) + + return `const ${pascalCaseName}Component = ({ + title = "${pascalCaseName}" +}) => { + return ( + {title} + ); +}; + +export default ${pascalCaseName}Component;` + } + const handleSubmit = async (values: typeof initialValues, { setSubmitting }: any) => { if (!values.name.trim()) { alert('Please enter a component name') @@ -239,9 +257,9 @@ const ComponentEditor: React.FC = () => {
{/* Left Side - Component Settings */} -
+
-
+
@@ -259,6 +277,27 @@ const ComponentEditor: React.FC = () => { type="text" component={Input} placeholder="e.g., Button, Card, Modal" + onChange={(e: React.ChangeEvent) => { + const newName = e.target.value + setFieldValue('name', newName) + + // Auto-generate code template if this is a new component (not editing) + // and only if the code field is empty or contains the default template + if (!isEditing && newName.trim()) { + const currentCode = values.code.trim() + const isCodeEmpty = !currentCode + const isCodeDefaultTemplate = + currentCode.includes('Component = ({') && + currentCode.includes('export default') && + currentCode.includes('{title}') + + if (isCodeEmpty || isCodeDefaultTemplate) { + const template = generateComponentTemplate(newName) + setFieldValue('code', template) + parseAndUpdateComponents(template) + } + } + }} /> @@ -275,6 +314,24 @@ const ComponentEditor: React.FC = () => { /> + + ) => { + setFieldValue('code', e.target.value) + }} + /> + +