import { ISchema, useField, useFieldSchema } from '@formily/react'; import React from 'react'; import { useTranslation } from 'react-i18next'; import { useCompile, useDesignable } from '../..'; import { useCalendarBlockContext } from '../../../block-provider'; import { useCollection } from '../../../collection-manager'; import { useCollectionFilterOptions } from '../../../collection-manager/action-hooks'; import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings'; import { useSchemaTemplate } from '../../../schema-templates'; const useOptions = () => { const compile = useCompile(); const { fields } = useCollection(); const options = fields?.map((field) => { return { value: field.name, label: compile(field?.uiSchema?.title), }; }); return options; } export const CalendarDesigner = () => { const field = useField(); const fieldSchema = useFieldSchema(); const { name, title, fields } = useCollection(); const dataSource = useCollectionFilterOptions(name); const { service } = useCalendarBlockContext(); const { dn } = useDesignable(); const compile = useCompile(); const { t } = useTranslation(); const template = useSchemaTemplate(); const defaultFilter = fieldSchema?.['x-decorator-props']?.params?.filter || {}; const options = useOptions(); const fieldNames = fieldSchema?.['x-decorator-props']?.['fieldNames'] || {}; return ( { const fieldNames = field.decoratorProps.fieldNames || {}; fieldNames['title'] = title; field.decoratorProps.params = fieldNames; fieldSchema['x-decorator-props']['params'] = fieldNames; service.refresh(); dn.emit('patch', { schema: { ['x-uid']: fieldSchema['x-uid'], 'x-decorator-props': field.decoratorProps, }, }); dn.refresh(); }} /> { const fieldNames = field.decoratorProps.fieldNames || {}; fieldNames['start'] = start; field.decoratorProps.params = fieldNames; fieldSchema['x-decorator-props']['params'] = fieldNames; service.refresh(); dn.emit('patch', { schema: { ['x-uid']: fieldSchema['x-uid'], 'x-decorator-props': field.decoratorProps, }, }); dn.refresh(); }} /> { const fieldNames = field.decoratorProps.fieldNames || {}; fieldNames['end'] = end; field.decoratorProps.params = fieldNames; fieldSchema['x-decorator-props']['params'] = fieldNames; service.refresh(); dn.emit('patch', { schema: { ['x-uid']: fieldSchema['x-uid'], 'x-decorator-props': field.decoratorProps, }, }); dn.refresh(); }} /> { const params = field.decoratorProps.params || {}; params.filter = filter; field.decoratorProps.params = params; fieldSchema['x-decorator-props']['params'] = params; service.run({ ...service?.params?.[0], filter }); dn.emit('patch', { schema: { ['x-uid']: fieldSchema['x-uid'], 'x-decorator-props': field.decoratorProps, }, }); }} /> ); };