From 2606f28059ac89f5fcda91ca9f978694c8602268 Mon Sep 17 00:00:00 2001 From: chenos Date: Mon, 19 Jul 2021 18:33:03 +0800 Subject: [PATCH] lots of updates --- .../src/components/admin-layout/datatable.tsx | 11 +- .../src/components/schema-renderer/index.tsx | 12 +- packages/client/src/schemas/action/index.tsx | 4 +- .../client/src/schemas/block-item/index.tsx | 4 +- .../src/schemas/database-field/index.tsx | 121 +++++-- .../database-field/interfaces/select.ts | 8 +- .../database-field/interfaces/string.ts | 6 +- .../database-field/interfaces/subTable.ts | 4 +- .../database-field/interfaces/textarea.ts | 6 +- .../src/schemas/database-field/style.less | 13 + packages/client/src/schemas/index.tsx | 10 + packages/client/src/schemas/menu/index.tsx | 321 ++++++++++++++++-- packages/client/src/schemas/menu/style.less | 23 ++ .../plugin-collections/src/actions/index.ts | 14 + .../src/collections/collections.ts | 4 + .../src/collections/fields.ts | 5 + .../src/models/collection.ts | 34 ++ .../plugin-collections/src/models/field.ts | 43 +++ packages/plugin-collections/src/server.ts | 6 +- .../src/actions/getAccessible.ts | 4 +- .../src/collections/routes.ts | 5 + .../plugin-ui-schema/src/models/ui-schema.ts | 17 + 22 files changed, 570 insertions(+), 105 deletions(-) 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 (