diff --git a/packages/client/src/components/admin-layout/datatable.tsx b/packages/client/src/components/admin-layout/datatable.tsx index 177a0db47..feaa9ded2 100644 --- a/packages/client/src/components/admin-layout/datatable.tsx +++ b/packages/client/src/components/admin-layout/datatable.tsx @@ -7,16 +7,7 @@ export default () => { name: 'collections', 'x-component': 'DatabaseCollection', 'x-component-props': {}, - default: [ - { - name: 'test1', - title: '数据表 1', - }, - { - name: 'test2', - title: '数据表 2', - }, - ], + default: [], properties: { title: { type: 'string', diff --git a/packages/client/src/components/schema-renderer/index.tsx b/packages/client/src/components/schema-renderer/index.tsx index 60bfeef9e..eca28d6bd 100644 --- a/packages/client/src/components/schema-renderer/index.tsx +++ b/packages/client/src/components/schema-renderer/index.tsx @@ -99,7 +99,7 @@ export const SchemaField = createSchemaField({ }, }); -export const DesignableContext = createContext(null); +export const DesignableContext = createContext({}); export function useSchema(path?: any) { const { schema, refresh } = useContext(DesignableContext); @@ -124,10 +124,14 @@ export function findPropertyByPath(schema: Schema, path?: any): Schema { let property = schema; while (arr.length) { const name = arr.shift(); + if (!property.properties) { + console.warn('property does not exist.'); + return null; + } property = property.properties[name]; if (!property) { - console.error('property does not exist.'); - break; + console.warn('property does not exist.'); + return null; } } return property; @@ -168,7 +172,7 @@ function setKeys(schema: ISchema, parentKey = null) { } export function useDesignable(path?: any) { - const { schema, refresh } = useContext(DesignableContext); + const { schema = new Schema({}), refresh } = useContext(DesignableContext); const schemaPath = path || useSchemaPath(); const fieldSchema = useFieldSchema(); const currentSchema = diff --git a/packages/client/src/schemas/action/index.tsx b/packages/client/src/schemas/action/index.tsx index 27832cfad..c0833c7c8 100644 --- a/packages/client/src/schemas/action/index.tsx +++ b/packages/client/src/schemas/action/index.tsx @@ -185,18 +185,20 @@ Action.Drawer = observer((props: any) => { }); Action.Dropdown = observer((props: any) => { + const { buttonProps = {}, ...others } = props; const { schema } = useDesignable(); const componentProps = schema.parent['x-component-props'] || {}; return ( } > - + ); }); diff --git a/packages/client/src/schemas/block-item/index.tsx b/packages/client/src/schemas/block-item/index.tsx index 4cfaa138b..e2e77f6e1 100644 --- a/packages/client/src/schemas/block-item/index.tsx +++ b/packages/client/src/schemas/block-item/index.tsx @@ -94,11 +94,11 @@ const Block = (props) => {
{ setActive(true); - console.log('e.onMouseEnter', new Date().toString()); + // console.log('e.onMouseEnter', new Date().toString()); }} onMouseLeave={(e) => { setActive(false); - console.log('e.onMouseLeave', new Date().toString()); + // console.log('e.onMouseLeave', new Date().toString()); }} className={cls('nb-grid-block', 'designable-form-item', { active })} > diff --git a/packages/client/src/schemas/database-field/index.tsx b/packages/client/src/schemas/database-field/index.tsx index c919ee689..d077c4e24 100644 --- a/packages/client/src/schemas/database-field/index.tsx +++ b/packages/client/src/schemas/database-field/index.tsx @@ -8,6 +8,7 @@ import { Schema, useFieldSchema, useForm, + FormConsumer, } from '@formily/react'; import { ArrayCollapse, FormLayout } from '@formily/antd'; import { uid } from '@formily/shared'; @@ -21,6 +22,9 @@ import { Select, Divider, Input, + Badge, + message, + Spin, } from 'antd'; import { options, interfaces } from './interfaces'; import { @@ -32,7 +36,7 @@ import { import cls from 'classnames'; import './style.less'; import Modal from 'antd/lib/modal/Modal'; -import { get } from 'lodash'; +import { clone, cloneDeep, get } from 'lodash'; import { useEffect } from 'react'; import { useRequest } from 'ahooks'; import { createOrUpdateCollection, deleteCollection } from '..'; @@ -46,19 +50,33 @@ export const DatabaseCollection = observer((props) => { const form = useForm(); const [newValue, setNewValue] = useState(''); - useRequest('collections:list?sort=-created_at', { + const { run, loading } = useRequest('collections:findAll', { formatResult: (result) => result?.data, onSuccess(data) { field.setValue(data); console.log('onSuccess', data); }, + manual: true, }); return (