fix: 'Allow multiple selection' option is not displayed in the data selector

This commit is contained in:
Zeke Zhang 2025-04-13 16:20:51 +08:00
parent c9b1c893e4
commit bd4f74b371
3 changed files with 62 additions and 6 deletions

View File

@ -17,13 +17,16 @@ import { SchemaSettings } from '../../../../application/schema-settings/SchemaSe
import { useCollectionManager_deprecated, useCollection_deprecated } from '../../../../collection-manager'; import { useCollectionManager_deprecated, useCollection_deprecated } from '../../../../collection-manager';
import { useFieldComponentName } from '../../../../common/useFieldComponentName'; import { useFieldComponentName } from '../../../../common/useFieldComponentName';
import { fieldComponentSettingsItem } from '../../../../data-source/commonsSettingsItem'; import { fieldComponentSettingsItem } from '../../../../data-source/commonsSettingsItem';
import { EditOperator, useDesignable, useValidateSchema, useCompile } from '../../../../schema-component'; import { EditOperator, useCompile, useDesignable, useValidateSchema } from '../../../../schema-component';
import { SchemaSettingsDefaultValue } from '../../../../schema-settings/SchemaSettingsDefaultValue'; import { SchemaSettingsDefaultValue } from '../../../../schema-settings/SchemaSettingsDefaultValue';
const fieldComponentNameMap = (name: string) => { const fieldComponentNameMap = (name: string) => {
if (name === 'Select') { if (name === 'Select') {
return 'FilterSelect'; return 'FilterSelect';
} }
if (name === 'Picker') {
return 'FilterPicker';
}
return name; return name;
}; };

View File

@ -17,7 +17,7 @@ import { useDesignable, useFieldModeOptions, useIsAddNewForm } from '../../../..
import { isSubMode } from '../../../../schema-component/antd/association-field/util'; import { isSubMode } from '../../../../schema-component/antd/association-field/util';
import { allowAddNew, useIsFieldReadPretty } from '../../../../schema-component/antd/form-item/FormItem.Settings'; import { allowAddNew, useIsFieldReadPretty } 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 { titleField } from '../Select/selectComponentFieldSettings'; import { getAllowMultiple, titleField } from '../Select/selectComponentFieldSettings';
const allowMultiple: any = { const allowMultiple: any = {
name: 'allowMultiple', name: 'allowMultiple',
@ -148,3 +148,52 @@ export const recordPickerComponentFieldSettings = new SchemaSettings({
titleField, titleField,
], ],
}); });
// For filter form fields
export const filterRecordPickerComponentFieldSettings = new SchemaSettings({
name: 'fieldSettings:component:FilterPicker',
items: [
fieldComponent,
{
name: 'popupSize',
type: 'select',
useVisible() {
const isFieldReadPretty = useIsFieldReadPretty();
return !isFieldReadPretty;
},
useComponentProps() {
const { t } = useTranslation();
const field = useField<Field>();
const { fieldSchema: tableColumnSchema } = useColumnSchema();
const schema = useFieldSchema();
const fieldSchema = tableColumnSchema || schema;
const { dn } = useDesignable();
return {
title: t('Popup size'),
options: [
{ label: t('Small'), value: 'small' },
{ label: t('Middle'), value: 'middle' },
{ label: t('Large'), value: 'large' },
],
value:
fieldSchema?.['x-component-props']?.['openSize'] ??
(fieldSchema?.['x-component-props']?.['openMode'] == 'modal' ? 'large' : 'middle'),
onChange: (value) => {
field.componentProps.openSize = value;
fieldSchema['x-component-props'] = { ...fieldSchema['x-component-props'], openSize: value };
dn.emit('patch', {
schema: {
'x-uid': fieldSchema['x-uid'],
'x-component-props': fieldSchema['x-component-props'],
},
});
dn.refresh();
},
};
},
},
allowAddNew,
getAllowMultiple({ title: 'Allow multiple selection' }),
titleField,
],
});

View File

@ -11,10 +11,10 @@ import { Plugin } from '../application/Plugin';
import { addChildActionSettings } from '../modules/actions/add-child/addChildActionSettings'; import { addChildActionSettings } from '../modules/actions/add-child/addChildActionSettings';
import { addNewActionSettings } from '../modules/actions/add-new/addNewActionSettings'; import { addNewActionSettings } from '../modules/actions/add-new/addNewActionSettings';
import { customizeAddRecordActionSettings } from '../modules/actions/add-record/customizeAddRecordActionSettings'; import { customizeAddRecordActionSettings } from '../modules/actions/add-record/customizeAddRecordActionSettings';
import { associateActionSettings } from '../modules/actions/associate/associateActionSettings';
import { bulkDeleteActionSettings } from '../modules/actions/bulk-destroy/bulkDeleteActionSettings'; import { bulkDeleteActionSettings } from '../modules/actions/bulk-destroy/bulkDeleteActionSettings';
import { deleteActionSettings } from '../modules/actions/delete/deleteActionSettings'; import { deleteActionSettings } from '../modules/actions/delete/deleteActionSettings';
import { disassociateActionSettings } from '../modules/actions/disassociate/disassociateActionSettings'; import { disassociateActionSettings } from '../modules/actions/disassociate/disassociateActionSettings';
import { associateActionSettings } from '../modules/actions/associate/associateActionSettings';
import { expendableActionSettings } from '../modules/actions/expand-collapse/expendableActionSettings'; import { expendableActionSettings } from '../modules/actions/expand-collapse/expendableActionSettings';
import { filterActionSettings } from '../modules/actions/filter/filterActionSettings'; import { filterActionSettings } from '../modules/actions/filter/filterActionSettings';
@ -66,9 +66,13 @@ import { markdownSettings } from '../modules/fields/component/Markdown/markdownS
import { markdownVditorSettings } from '../modules/fields/component/MarkdownVditor/markdownVditorSettings'; import { markdownVditorSettings } from '../modules/fields/component/MarkdownVditor/markdownVditorSettings';
import { richTextSettings } from '../modules/fields/component/RichText/richTextSettings'; import { richTextSettings } from '../modules/fields/component/RichText/richTextSettings';
// import { inputURLComponentFieldSettings } from '../modules/fields/component/Input.URL/settings'; // import { inputURLComponentFieldSettings } from '../modules/fields/component/Input.URL/settings';
import { dividerSettings } from '../modules/blocks/other-blocks/divider/dividerSettings';
import { inputNumberComponentFieldSettings } from '../modules/fields/component/InputNumber/inputNumberComponentFieldSettings'; import { inputNumberComponentFieldSettings } from '../modules/fields/component/InputNumber/inputNumberComponentFieldSettings';
import { subformComponentFieldSettings } from '../modules/fields/component/Nester/subformComponentFieldSettings'; import { subformComponentFieldSettings } from '../modules/fields/component/Nester/subformComponentFieldSettings';
import { recordPickerComponentFieldSettings } from '../modules/fields/component/Picker/recordPickerComponentFieldSettings'; import {
filterRecordPickerComponentFieldSettings,
recordPickerComponentFieldSettings,
} from '../modules/fields/component/Picker/recordPickerComponentFieldSettings';
import { subformPopoverComponentFieldSettings } from '../modules/fields/component/PopoverNester/subformPopoverComponentFieldSettings'; import { subformPopoverComponentFieldSettings } from '../modules/fields/component/PopoverNester/subformPopoverComponentFieldSettings';
import { import {
filterSelectComponentFieldSettings, filterSelectComponentFieldSettings,
@ -76,9 +80,8 @@ import {
} from '../modules/fields/component/Select/selectComponentFieldSettings'; } from '../modules/fields/component/Select/selectComponentFieldSettings';
import { subTablePopoverComponentFieldSettings } from '../modules/fields/component/SubTable/subTablePopoverComponentFieldSettings'; import { subTablePopoverComponentFieldSettings } from '../modules/fields/component/SubTable/subTablePopoverComponentFieldSettings';
import { tagComponentFieldSettings } from '../modules/fields/component/Tag/tagComponentFieldSettings'; import { tagComponentFieldSettings } from '../modules/fields/component/Tag/tagComponentFieldSettings';
import { unixTimestampComponentFieldSettings } from '../modules/fields/component/UnixTimestamp/unixTimestampComponentFieldSettings';
import { dividerSettings } from '../modules/blocks/other-blocks/divider/dividerSettings';
import { timePickerComponentFieldSettings } from '../modules/fields/component/TimePicker/timePickerComponentFieldSettings'; import { timePickerComponentFieldSettings } from '../modules/fields/component/TimePicker/timePickerComponentFieldSettings';
import { unixTimestampComponentFieldSettings } from '../modules/fields/component/UnixTimestamp/unixTimestampComponentFieldSettings';
export class SchemaSettingsPlugin extends Plugin { export class SchemaSettingsPlugin extends Plugin {
async load() { async load() {
// block settings // block settings
@ -127,6 +130,7 @@ export class SchemaSettingsPlugin extends Plugin {
this.schemaSettingsManager.add(selectComponentFieldSettings); this.schemaSettingsManager.add(selectComponentFieldSettings);
this.schemaSettingsManager.add(filterSelectComponentFieldSettings); this.schemaSettingsManager.add(filterSelectComponentFieldSettings);
this.schemaSettingsManager.add(recordPickerComponentFieldSettings); this.schemaSettingsManager.add(recordPickerComponentFieldSettings);
this.schemaSettingsManager.add(filterRecordPickerComponentFieldSettings);
this.schemaSettingsManager.add(subformComponentFieldSettings); this.schemaSettingsManager.add(subformComponentFieldSettings);
this.schemaSettingsManager.add(subformPopoverComponentFieldSettings); this.schemaSettingsManager.add(subformPopoverComponentFieldSettings);
this.schemaSettingsManager.add(subTablePopoverComponentFieldSettings); this.schemaSettingsManager.add(subTablePopoverComponentFieldSettings);