fix(AssociationSelect): missing field title in details (#1275)

* fix: missing title in default

* fix: detail

* refactor: avoid nullish
This commit is contained in:
Dunqing 2022-12-21 17:29:13 +08:00 committed by GitHub
parent b27e82edf8
commit ee7185c51c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 11 deletions

View File

@ -14,7 +14,7 @@ import {
useCollectionFilterOptions,
} from '../../../collection-manager';
import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings';
import { useDesignable, useCompile, useFieldComponentOptions } from '../../hooks';
import { useDesignable, useCompile, useFieldComponentOptions, useFieldTitle } from '../../hooks';
import { RemoteSelect, RemoteSelectProps } from '../remote-select';
import { defaultFieldNames } from '../select';
import { ReadPretty } from './ReadPretty';
@ -66,12 +66,6 @@ const InternalAssociationSelect = connect(
}
}, [props.value, normalizeValues]);
useEffect(() => {
if (!field.title) {
field.title = collectionField.uiSchema.title;
}
}, collectionField.title);
return <RemoteSelect {...props} objectValue={objectValue} value={value} service={service}></RemoteSelect>;
},
mapProps(
@ -118,11 +112,12 @@ AssociationSelect.Designer = () => {
const initialValue = {
title: field.title === originalTitle ? undefined : field.title,
};
const sortFields = useSortFields(collectionField.target);
const sortFields = useSortFields(collectionField?.target);
const defaultSort = field.componentProps?.service?.params?.sort || [];
const defaultFilter = field.componentProps?.service?.params?.filter || {};
const dataSource = useCollectionFilterOptions(collectionField.target);
console.log(collectionField?.target, ['CollectionField', 'AssociationSelect'].includes(fieldSchema['x-component']));
const dataSource = useCollectionFilterOptions(collectionField?.target);
useFieldTitle();
const sort = defaultSort?.map((item: string) => {
return item.startsWith('-')

View File

@ -1,10 +1,11 @@
import { observer } from '@formily/react';
import React from 'react';
import { useFieldTitle } from '../../hooks';
import { RemoteSelect } from '../remote-select';
import useServiceOptions from './useServiceOptions';
export const ReadPretty = observer((props: any) => {
const service = useServiceOptions(props);
useFieldTitle();
return <RemoteSelect.ReadPretty {...props} service={service}></RemoteSelect.ReadPretty>;
});

View File

@ -6,4 +6,5 @@ export * from './useDesigner';
export * from './useFieldProps';
export * from './useSchemaComponentContext';
export * from './useFieldComponentOptions';
export * from './useFieldTitle';

View File

@ -0,0 +1,17 @@
import { Field } from "@formily/core";
import { useField, useFieldSchema } from "@formily/react";
import { useEffect } from "react";
import { useCollection, useCollectionManager } from "../../collection-manager";
export const useFieldTitle = () => {
const field = useField<Field>();
const fieldSchema = useFieldSchema();
const { getField, } = useCollection();
const { getCollectionJoinField } = useCollectionManager();
const collectionField = getField(fieldSchema['name']) || getCollectionJoinField(fieldSchema['x-collection-field']);
useEffect(() => {
if (!field?.title) {
field.title = collectionField?.uiSchema?.title;
}
}, [collectionField?.uiSchema?.title]);
}