fix: 修改组件创建树形结构时默认为级联组件 (#948)
Reviewed-on: daoyoucloud/tachybase#948 Reviewed-by: sealday <zhanglin@daoyoucloud.com> Co-authored-by: wjh <wwwjh0710@163.com> Co-committed-by: wjh <wwwjh0710@163.com>
This commit is contained in:
parent
3bf232d952
commit
3072cd67db
@ -2,21 +2,24 @@ import { Field } from '@tachybase/schema';
|
|||||||
import { useField, useFieldSchema } from '@tachybase/schema';
|
import { useField, useFieldSchema } from '@tachybase/schema';
|
||||||
import { useIsFileField } from '../schema-component/antd/form-item/FormItem.Settings';
|
import { useIsFileField } from '../schema-component/antd/form-item/FormItem.Settings';
|
||||||
import { useColumnSchema } from '../schema-component/antd/table-v2/Table.Column.Decorator';
|
import { useColumnSchema } from '../schema-component/antd/table-v2/Table.Column.Decorator';
|
||||||
import { useCollectionField } from '../data-source';
|
import { useCollectionField, useCollectionManager } from '../data-source';
|
||||||
|
|
||||||
export function useFieldComponentName(): string {
|
export function useFieldComponentName(): string {
|
||||||
const { fieldSchema: tableColumnSchema, collectionField: tableColumnField } = useColumnSchema();
|
const { fieldSchema: tableColumnSchema, collectionField: tableColumnField } = useColumnSchema();
|
||||||
const field = useField<Field>();
|
const field = useField<Field>();
|
||||||
|
const cm = useCollectionManager();
|
||||||
const isFileField = useIsFileField();
|
const isFileField = useIsFileField();
|
||||||
const schema = useFieldSchema();
|
const schema = useFieldSchema();
|
||||||
const targetCollectionField = useCollectionField();
|
const targetCollectionField = useCollectionField();
|
||||||
|
const targetCollection = cm.getCollection(targetCollectionField?.target);
|
||||||
|
const isTreeCollection = targetCollection?.template === 'tree';
|
||||||
const fieldSchema = tableColumnSchema || schema;
|
const fieldSchema = tableColumnSchema || schema;
|
||||||
const collectionField = tableColumnField || targetCollectionField;
|
const collectionField = tableColumnField || targetCollectionField;
|
||||||
|
|
||||||
const map = {
|
const map = {
|
||||||
// AssociationField 的 mode 默认值是 Select
|
// AssociationField 的 mode 默认值是 Select
|
||||||
AssociationField: 'Select',
|
AssociationField: isTreeCollection ? 'Cascader' : 'Select',
|
||||||
};
|
};
|
||||||
|
|
||||||
const fieldComponentName =
|
const fieldComponentName =
|
||||||
fieldSchema?.['x-component-props']?.['mode'] ||
|
fieldSchema?.['x-component-props']?.['mode'] ||
|
||||||
field?.componentProps?.['mode'] ||
|
field?.componentProps?.['mode'] ||
|
||||||
|
@ -23,8 +23,16 @@ export const AssociationFieldProvider = observer(
|
|||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
[fieldSchema['x-collection-field']],
|
[fieldSchema['x-collection-field']],
|
||||||
);
|
);
|
||||||
|
const isTreeCollection = useMemo(
|
||||||
|
() => getCollection(collectionField?.target)?.template === 'tree',
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
[fieldSchema['x-collection-field']],
|
||||||
|
);
|
||||||
|
|
||||||
const currentMode = useMemo(
|
const currentMode = useMemo(
|
||||||
() => fieldSchema['x-component-props']?.mode || (isFileCollection ? 'FileManager' : 'Select'),
|
() =>
|
||||||
|
fieldSchema['x-component-props']?.mode ||
|
||||||
|
(isTreeCollection ? 'Cascader' : isFileCollection ? 'FileManager' : 'Select'),
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
[fieldSchema['x-component-props']?.mode],
|
[fieldSchema['x-component-props']?.mode],
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user