refactor: improve Settings supported field types validation (#4496)
* refactor: improve Settings supported field types validation Related to: #4084, #4295 * fix: fix wrong import
This commit is contained in:
@ -1,29 +1,38 @@
|
||||
import { SETTINGS_FIELD_METADATA_TYPES } from '@/settings/data-model/constants/SettingsFieldMetadataTypes';
|
||||
import omit from 'lodash.omit';
|
||||
|
||||
import {
|
||||
SETTINGS_FIELD_TYPE_CONFIGS,
|
||||
SettingsFieldTypeConfig,
|
||||
} from '@/settings/data-model/constants/SettingsFieldTypeConfigs';
|
||||
import { SettingsSupportedFieldType } from '@/settings/data-model/types/SettingsSupportedFieldType';
|
||||
import { Select, SelectOption } from '@/ui/input/components/Select';
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
|
||||
type SettingsDataModelFieldTypeSelectProps = {
|
||||
className?: string;
|
||||
disabled?: boolean;
|
||||
excludedFieldTypes?: FieldMetadataType[];
|
||||
onChange?: ({ type }: { type: FieldMetadataType }) => void;
|
||||
value?: FieldMetadataType;
|
||||
excludedFieldTypes?: SettingsSupportedFieldType[];
|
||||
onChange?: ({ type }: { type: SettingsSupportedFieldType }) => void;
|
||||
value?: SettingsSupportedFieldType;
|
||||
};
|
||||
|
||||
export const SettingsDataModelFieldTypeSelect = ({
|
||||
className,
|
||||
disabled,
|
||||
excludedFieldTypes,
|
||||
excludedFieldTypes = [],
|
||||
onChange,
|
||||
value,
|
||||
}: SettingsDataModelFieldTypeSelectProps) => {
|
||||
const fieldTypeOptions = Object.entries(SETTINGS_FIELD_METADATA_TYPES)
|
||||
.filter(([key]) => !excludedFieldTypes?.includes(key as FieldMetadataType))
|
||||
.map<SelectOption<FieldMetadataType>>(([key, dataTypeConfig]) => ({
|
||||
Icon: dataTypeConfig.Icon,
|
||||
label: dataTypeConfig.label,
|
||||
value: key as FieldMetadataType,
|
||||
}));
|
||||
const fieldTypeConfigs = omit(
|
||||
SETTINGS_FIELD_TYPE_CONFIGS,
|
||||
excludedFieldTypes,
|
||||
);
|
||||
const fieldTypeOptions = Object.entries<SettingsFieldTypeConfig>(
|
||||
fieldTypeConfigs,
|
||||
).map<SelectOption<SettingsSupportedFieldType>>(([key, dataTypeConfig]) => ({
|
||||
Icon: dataTypeConfig.Icon,
|
||||
label: dataTypeConfig.label,
|
||||
value: key as SettingsSupportedFieldType,
|
||||
}));
|
||||
|
||||
return (
|
||||
<Select
|
||||
|
||||
@ -4,6 +4,7 @@ import { v4 } from 'uuid';
|
||||
import { z } from 'zod';
|
||||
|
||||
import { CurrencyCode } from '@/object-record/record-field/types/CurrencyCode';
|
||||
import { SettingsSupportedFieldType } from '@/settings/data-model/types/SettingsSupportedFieldType';
|
||||
import { themeColorSchema } from '@/ui/theme/utils/themeColorSchema';
|
||||
import {
|
||||
FieldMetadataType,
|
||||
@ -17,7 +18,7 @@ type FormValues = {
|
||||
description?: string;
|
||||
icon: string;
|
||||
label: string;
|
||||
type: FieldMetadataType;
|
||||
type: SettingsSupportedFieldType;
|
||||
} & SettingsDataModelFieldSettingsFormValues;
|
||||
|
||||
export const fieldMetadataFormDefaultValues: FormValues = {
|
||||
|
||||
Reference in New Issue
Block a user