diff --git a/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx b/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx index d6461f84a..17fb099c9 100644 --- a/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx +++ b/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx @@ -11,7 +11,7 @@ export const ActionDesigner = (props) => { const { t } = useTranslation(); const isPopupAction = ['create', 'update', 'view'].includes(fieldSchema['x-action'] || ''); return ( - + { const { t } = useTranslation(); const nonfilterable = fieldSchema?.['x-component-props']?.nonfilterable || []; return ( - + {fields.map((field) => { const checked = !nonfilterable.includes(field.name); diff --git a/packages/core/client/src/schema-component/antd/grid/Grid.tsx b/packages/core/client/src/schema-component/antd/grid/Grid.tsx index b312d2a0e..52dbd71e0 100644 --- a/packages/core/client/src/schema-component/antd/grid/Grid.tsx +++ b/packages/core/client/src/schema-component/antd/grid/Grid.tsx @@ -9,6 +9,7 @@ import { DndContext } from '../../common/dnd-context'; const GridRowContext = createContext(null); const GridColContext = createContext(null); +const GridContext = createContext({}); const ColDivider = (props) => { const { isOver, setNodeRef } = useDroppable({ @@ -147,6 +148,10 @@ const DndWrapper = (props) => { return {props.children}; }; +export const useGridContext = () => { + return useContext(GridContext); +}; + export const Grid: any = observer((props: any) => { const field = useField(); const fieldSchema = useFieldSchema(); @@ -154,26 +159,28 @@ export const Grid: any = observer((props: any) => { const addr = field.address.toString(); const rows = useRowProperties(); return ( -
- - - {rows.map((schema, index) => { - return ( - - - - - ); - })} - - {render()} -
+ +
+ + + {rows.map((schema, index) => { + return ( + + + + + ); + })} + + {render()} +
+
); }); diff --git a/packages/core/client/src/schema-component/antd/table-v2/Table.Column.Designer.tsx b/packages/core/client/src/schema-component/antd/table-v2/Table.Column.Designer.tsx index 93044677e..6a8002c38 100644 --- a/packages/core/client/src/schema-component/antd/table-v2/Table.Column.Designer.tsx +++ b/packages/core/client/src/schema-component/antd/table-v2/Table.Column.Designer.tsx @@ -32,7 +32,7 @@ export const TableColumnDesigner = (props) => { fieldSchema?.['x-component-props']?.['fieldNames'] || uiSchema?.['x-component-props']?.['fieldNames']; const options = useLabelFields(collectionField?.target); return ( - + { const template = useSchemaTemplate(); const { dragSort } = field.decoratorProps; return ( - + { const { dn } = useDesignable(); const { t } = useTranslation(); return ( - + { const { t } = useTranslation(); + const { insertPosition, component } = props; return ( { }, }, ]} - > - {t('Configure fields')} - + insertPosition={insertPosition} + component={component} + title={component ? null : t('Configure fields')} + /> ); }; diff --git a/packages/core/client/src/schema-initializer/buttons/ReadPrettyFormItemInitializers.tsx b/packages/core/client/src/schema-initializer/buttons/ReadPrettyFormItemInitializers.tsx index 598235146..7e13fedf2 100644 --- a/packages/core/client/src/schema-initializer/buttons/ReadPrettyFormItemInitializers.tsx +++ b/packages/core/client/src/schema-initializer/buttons/ReadPrettyFormItemInitializers.tsx @@ -5,6 +5,7 @@ import { gridRowColWrap, useFormItemInitializerFields } from '../utils'; export const ReadPrettyFormItemInitializers = (props: any) => { const { t } = useTranslation(); + const { insertPosition, component } = props; return ( { }, }, ]} - > - {t('Configure fields')} - + insertPosition={insertPosition} + component={component} + title={component ? null : t('Configure fields')} + /> ); }; diff --git a/packages/core/client/src/schema-initializer/buttons/RecordBlockInitializers.tsx b/packages/core/client/src/schema-initializer/buttons/RecordBlockInitializers.tsx index fc92fb63b..c6cd218f2 100644 --- a/packages/core/client/src/schema-initializer/buttons/RecordBlockInitializers.tsx +++ b/packages/core/client/src/schema-initializer/buttons/RecordBlockInitializers.tsx @@ -20,10 +20,13 @@ const useRelationFields = () => { export const RecordBlockInitializers = (props: any) => { const { t } = useTranslation(); + const { insertPosition, component } = props; return ( { - const { title, template, draggable = true } = props; + const { disableInitializer, title, template, draggable = true } = props; const { dn, designable } = useDesignable(); const field = useField(); const { t } = useTranslation(); @@ -45,14 +45,21 @@ export const GeneralSchemaDesigner = (props: any) => { if (!designable) { return null; } - const templateName = ['FormItem', 'ReadPrettyFormItem'].includes(template?.componentName) ? `${template?.name} ${t('(Fields only)')}` : template?.name; + const ctx = useGridContext(); + const templateName = ['FormItem', 'ReadPrettyFormItem'].includes(template?.componentName) + ? `${template?.name} ${t('(Fields only)')}` + : template?.name; return (
{title && (
{compile(title)} - {template && {t('Reference template')}: {templateName || t('Untitled')}} + {template && ( + + {t('Reference template')}: {templateName || t('Untitled')} + + )}
)} @@ -63,6 +70,10 @@ export const GeneralSchemaDesigner = (props: any) => { )} + {!disableInitializer && ctx?.renderSchemaInitializer?.({ + insertPosition: 'afterEnd', + component: , + })} } {...schemaSettingsProps}> {props.children}