4778 multi select field front implement multi select type (#4887)
This commit is contained in:
@ -1,10 +1,9 @@
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { FieldMetadataOption } from '@/object-metadata/types/FieldMetadataOption.ts';
|
||||
import { Field } from '~/generated/graphql';
|
||||
import { FieldMetadataType } from '~/generated-metadata/graphql';
|
||||
|
||||
import { FieldMetadataItem } from '../types/FieldMetadataItem';
|
||||
import { FieldMetadataOption } from '../types/FieldMetadataOption';
|
||||
import { formatFieldMetadataItemInput } from '../utils/formatFieldMetadataItemInput';
|
||||
|
||||
import { useCreateOneFieldMetadataItem } from './useCreateOneFieldMetadataItem';
|
||||
@ -17,22 +16,22 @@ export const useFieldMetadataItem = () => {
|
||||
const { deleteOneFieldMetadataItem } = useDeleteOneFieldMetadataItem();
|
||||
|
||||
const createMetadataField = (
|
||||
input: Pick<Field, 'label' | 'icon' | 'description' | 'defaultValue'> & {
|
||||
defaultValue?: unknown;
|
||||
input: Pick<
|
||||
Field,
|
||||
'label' | 'icon' | 'description' | 'defaultValue' | 'type' | 'options'
|
||||
> & {
|
||||
objectMetadataId: string;
|
||||
options?: Omit<FieldMetadataOption, 'id'>[];
|
||||
type: FieldMetadataType;
|
||||
},
|
||||
) => {
|
||||
const formatedInput = formatFieldMetadataItemInput(input);
|
||||
const formattedInput = formatFieldMetadataItemInput(input);
|
||||
const defaultValue = input.defaultValue
|
||||
? typeof input.defaultValue == 'string'
|
||||
? `'${input.defaultValue}'`
|
||||
: input.defaultValue
|
||||
: formatedInput.defaultValue ?? undefined;
|
||||
: formattedInput.defaultValue ?? undefined;
|
||||
|
||||
return createOneFieldMetadataItem({
|
||||
...formatedInput,
|
||||
...formattedInput,
|
||||
defaultValue,
|
||||
objectMetadataId: input.objectMetadataId,
|
||||
type: input.type,
|
||||
@ -42,17 +41,21 @@ export const useFieldMetadataItem = () => {
|
||||
const editMetadataField = (
|
||||
input: Pick<
|
||||
Field,
|
||||
'id' | 'label' | 'icon' | 'description' | 'defaultValue'
|
||||
> & {
|
||||
options?: FieldMetadataOption[];
|
||||
},
|
||||
| 'id'
|
||||
| 'label'
|
||||
| 'icon'
|
||||
| 'description'
|
||||
| 'defaultValue'
|
||||
| 'type'
|
||||
| 'options'
|
||||
>,
|
||||
) => {
|
||||
const formatedInput = formatFieldMetadataItemInput(input);
|
||||
const formattedInput = formatFieldMetadataItemInput(input);
|
||||
const defaultValue = input.defaultValue
|
||||
? typeof input.defaultValue == 'string'
|
||||
? `'${input.defaultValue}'`
|
||||
: input.defaultValue
|
||||
: formatedInput.defaultValue ?? undefined;
|
||||
: formattedInput.defaultValue ?? undefined;
|
||||
|
||||
return updateOneFieldMetadataItem({
|
||||
fieldMetadataIdToUpdate: input.id,
|
||||
@ -61,7 +64,7 @@ export const useFieldMetadataItem = () => {
|
||||
defaultValue,
|
||||
// In Edit mode, all options need an id,
|
||||
// so we generate an id for newly created options.
|
||||
options: input.options?.map((option) =>
|
||||
options: input.options?.map((option: FieldMetadataOption) =>
|
||||
option.id ? option : { ...option, id: v4() },
|
||||
),
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user