fix: Fix calendar change field error (#626) (#671)

* fix: calendar change field throw error

* fix: calendar change field throw error

* fix: calendar change field throw error

* Update Calendar.Designer.tsx

Co-authored-by: up_young <roc_up_young@163.com>
Co-authored-by: yangpeng <oncwnuFixr6B9ykxIme1UJHE_1U8@git.weixin.qq.com>
Co-authored-by: chenos <chenlinxh@gmail.com>
This commit is contained in:
Neal 2022-07-23 18:19:07 +08:00 committed by GitHub
parent cd41eb08ae
commit 54f993f327
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,10 +8,12 @@ import { useCollectionFilterOptions } from '../../../collection-manager/action-h
import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings'; import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings';
import { useSchemaTemplate } from '../../../schema-templates'; import { useSchemaTemplate } from '../../../schema-templates';
const useOptions = () => { const useOptions = (type = 'string') => {
const compile = useCompile(); const compile = useCompile();
const { fields } = useCollection(); const { fields } = useCollection();
const options = fields?.map((field) => { const options = fields
?.filter((field) => field.type === type)
?.map((field) => {
return { return {
value: field.name, value: field.name,
label: compile(field?.uiSchema?.title), label: compile(field?.uiSchema?.title),
@ -31,7 +33,6 @@ export const CalendarDesigner = () => {
const { t } = useTranslation(); const { t } = useTranslation();
const template = useSchemaTemplate(); const template = useSchemaTemplate();
const defaultFilter = fieldSchema?.['x-decorator-props']?.params?.filter || {}; const defaultFilter = fieldSchema?.['x-decorator-props']?.params?.filter || {};
const options = useOptions();
const fieldNames = fieldSchema?.['x-decorator-props']?.['fieldNames'] || {}; const fieldNames = fieldSchema?.['x-decorator-props']?.['fieldNames'] || {};
const defaultResource = fieldSchema?.['x-decorator-props']?.resource; const defaultResource = fieldSchema?.['x-decorator-props']?.resource;
return ( return (
@ -40,12 +41,14 @@ export const CalendarDesigner = () => {
<SchemaSettings.SelectItem <SchemaSettings.SelectItem
title={t('Title field')} title={t('Title field')}
value={fieldNames.title} value={fieldNames.title}
options={options} options={useOptions('string')}
onChange={(title) => { onChange={(title) => {
const fieldNames = field.decoratorProps.fieldNames || {}; const fieldNames = field.decoratorProps.fieldNames || {};
fieldNames['title'] = title; fieldNames['title'] = title;
field.decoratorProps.params = fieldNames; field.decoratorProps.params = fieldNames;
fieldSchema['x-decorator-props']['params'] = fieldNames; fieldSchema['x-decorator-props']['params'] = fieldNames;
// Select切换option后value未按照预期切换固增加以下代码
fieldSchema['x-decorator-props']['fieldNames'] = fieldNames;
service.refresh(); service.refresh();
dn.emit('patch', { dn.emit('patch', {
schema: { schema: {
@ -59,12 +62,12 @@ export const CalendarDesigner = () => {
<SchemaSettings.SelectItem <SchemaSettings.SelectItem
title={t('Start date field')} title={t('Start date field')}
value={fieldNames.start} value={fieldNames.start}
options={options} options={useOptions('date')}
onChange={(start) => { onChange={(start) => {
const fieldNames = field.decoratorProps.fieldNames || {}; const fieldNames = field.decoratorProps.fieldNames || {};
fieldNames['start'] = start; fieldNames['start'] = start;
field.decoratorProps.params = fieldNames; field.decoratorProps.fieldNames = fieldNames;
fieldSchema['x-decorator-props']['params'] = fieldNames; fieldSchema['x-decorator-props']['fieldNames'] = fieldNames;
service.refresh(); service.refresh();
dn.emit('patch', { dn.emit('patch', {
schema: { schema: {
@ -78,12 +81,12 @@ export const CalendarDesigner = () => {
<SchemaSettings.SelectItem <SchemaSettings.SelectItem
title={t('End date field')} title={t('End date field')}
value={fieldNames.end} value={fieldNames.end}
options={options} options={useOptions('date')}
onChange={(end) => { onChange={(end) => {
const fieldNames = field.decoratorProps.fieldNames || {}; const fieldNames = field.decoratorProps.fieldNames || {};
fieldNames['end'] = end; fieldNames['end'] = end;
field.decoratorProps.params = fieldNames; field.decoratorProps.fieldNames = fieldNames;
fieldSchema['x-decorator-props']['params'] = fieldNames; fieldSchema['x-decorator-props']['fieldNames'] = fieldNames;
service.refresh(); service.refresh();
dn.emit('patch', { dn.emit('patch', {
schema: { schema: {