From 8b3648e77be9e1f44f44e5a2396cacd25f1d8fc7 Mon Sep 17 00:00:00 2001 From: typescreep Date: Tue, 3 Jun 2025 01:34:09 +0300 Subject: [PATCH 1/2] wip --- src/App.tsx | 2 + .../FactoryAdminPage/AddComponentModal.tsx | 52 +++++++ src/pages/FactoryAdminPage/AntdCardForm.tsx | 73 ++++++++++ src/pages/FactoryAdminPage/AntdTextForm.tsx | 55 ++++++++ .../FactoryAdminPage/AppComponentAdmin.tsx | 127 ++++++++++++++++++ src/pages/FactoryAdminPage/ComponentForm.tsx | 15 +++ src/pages/FactoryAdminPage/ComponentForm2.tsx | 27 ++++ src/pages/FactoryAdminPage/ComponentNode.tsx | 64 +++++++++ .../FactoryAdminPage/DynamicComponentForm.tsx | 111 +++++++++++++++ .../FactoryAdminPage/EditComponentModal.tsx | 34 +++++ src/pages/FactoryAdminPage/TextWithIdForm.tsx | 39 ++++++ src/pages/FactoryAdminPage/index.ts | 1 + src/pages/FactoryAdminPage/types.ts | 26 ++++ src/pages/FactoryAdminPage/utils.ts | 111 +++++++++++++++ src/pages/index.ts | 1 + 15 files changed, 738 insertions(+) create mode 100644 src/pages/FactoryAdminPage/AddComponentModal.tsx create mode 100644 src/pages/FactoryAdminPage/AntdCardForm.tsx create mode 100644 src/pages/FactoryAdminPage/AntdTextForm.tsx create mode 100644 src/pages/FactoryAdminPage/AppComponentAdmin.tsx create mode 100644 src/pages/FactoryAdminPage/ComponentForm.tsx create mode 100644 src/pages/FactoryAdminPage/ComponentForm2.tsx create mode 100644 src/pages/FactoryAdminPage/ComponentNode.tsx create mode 100644 src/pages/FactoryAdminPage/DynamicComponentForm.tsx create mode 100644 src/pages/FactoryAdminPage/EditComponentModal.tsx create mode 100644 src/pages/FactoryAdminPage/TextWithIdForm.tsx create mode 100644 src/pages/FactoryAdminPage/index.ts create mode 100644 src/pages/FactoryAdminPage/types.ts create mode 100644 src/pages/FactoryAdminPage/utils.ts diff --git a/src/App.tsx b/src/App.tsx index 5e3e969..02321fc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -29,6 +29,7 @@ import { FormApiPage, FormCrdPage, FactoryPage, + FactoryAdminPage, } from 'pages' import { getBasePrefix } from 'utils/getBaseprefix' import { colorsLight, colorsDark, sizes } from 'constants/colors' @@ -127,6 +128,7 @@ export const App: FC = ({ isFederation, forcedTheme }) => { element={} /> } /> + } /> ) diff --git a/src/pages/FactoryAdminPage/AddComponentModal.tsx b/src/pages/FactoryAdminPage/AddComponentModal.tsx new file mode 100644 index 0000000..f2d7616 --- /dev/null +++ b/src/pages/FactoryAdminPage/AddComponentModal.tsx @@ -0,0 +1,52 @@ +import React, { useState } from 'react' +import { Modal, Button, Form, Select } from 'antd' +import { ComponentType } from './types' + +export const componentTypes: ComponentType[] = [ + 'antdText', + 'antdCard', + 'antdFlex', + 'antdRow', + 'antdCol', + 'partsOfUrl', + 'multiQuery', + 'parsedText', +] + +interface AddComponentModalProps { + onAdd: (type: ComponentType) => void + title?: string +} + +export const AddComponentModal: React.FC = ({ onAdd, title = 'Add Component' }) => { + const [visible, setVisible] = useState(false) + const [form] = Form.useForm() + + const handleSubmit = (values: { type: ComponentType }) => { + onAdd(values.type) + setVisible(false) + form.resetFields() + } + + return ( + <> + + setVisible(false)} footer={null}> +
+ + + + +
+
+ + ) +} diff --git a/src/pages/FactoryAdminPage/AntdCardForm.tsx b/src/pages/FactoryAdminPage/AntdCardForm.tsx new file mode 100644 index 0000000..7e97207 --- /dev/null +++ b/src/pages/FactoryAdminPage/AntdCardForm.tsx @@ -0,0 +1,73 @@ +/* eslint-disable no-console */ +/* eslint-disable no-param-reassign */ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import React, { useEffect } from 'react' +import { Form, Input, Select, Button, Switch } from 'antd' + +const { TextArea } = Input +const { Option } = Select + +interface AntdCardFormProps { + initialValues: any // This would be `TDynamicComponentsAppTypeMap['antdCard']` + onSave: (data: any) => void +} + +export const AntdCardForm: React.FC = ({ initialValues, onSave }) => { + const [form] = Form.useForm() + + useEffect(() => { + form.setFieldsValue(initialValues) + }, [initialValues, form]) + + const handleSubmit = (values: any) => { + try { + if (values.style) { + values.style = JSON.parse(values.style) + } + } catch (e) { + console.log('Invalid JSON for style', e) + return + } + + onSave(values) + } + + return ( +
+ + + + + + + + + + + + + + + + + +