From 8d62c323d6559d2dfa6ddaae3d8be2936242fd30 Mon Sep 17 00:00:00 2001 From: Flaminia Cavallo Date: Mon, 21 Oct 2024 11:09:06 +0200 Subject: [PATCH] fix: minor changes to address pr comments --- src/lib/models/useCheckMaxLengthFromSchema.ts | 18 ++++++------------ src/lib/models/useFieldValidators.ts | 4 ++-- .../organisationUnits/form/ImageField.tsx | 2 +- .../form/OrganisationUnitSelector.tsx | 7 +++---- .../form/organisationUnitSchema.ts | 17 +++++------------ src/pages/organisationUnits/form/types.ts | 1 + 6 files changed, 18 insertions(+), 31 deletions(-) diff --git a/src/lib/models/useCheckMaxLengthFromSchema.ts b/src/lib/models/useCheckMaxLengthFromSchema.ts index af74e66b..9e657fd3 100644 --- a/src/lib/models/useCheckMaxLengthFromSchema.ts +++ b/src/lib/models/useCheckMaxLengthFromSchema.ts @@ -8,20 +8,14 @@ export function useCheckMaxLengthFromSchema( property: string ) { const schema = useSchema(model) - return useCheckMaxLengthFromProperty(schema.properties[property]) + return checkMaxLengthFromProperty(schema.properties[property]) } -export function useCheckMaxLengthFromProperty( +export function checkMaxLengthFromProperty( propertyDetails: SchemaFieldProperty -) { +): (value: unknown) => (string | undefined) { const maxLength = propertyDetails.length - const checkMaxLength = useMemo( - () => - maxLength == undefined - ? () => undefined - : createMaxCharacterLength(maxLength), - [maxLength] - ) - - return checkMaxLength + return maxLength == undefined + ? () => undefined + : createMaxCharacterLength(maxLength) } diff --git a/src/lib/models/useFieldValidators.ts b/src/lib/models/useFieldValidators.ts index 3369102a..3a9fc586 100644 --- a/src/lib/models/useFieldValidators.ts +++ b/src/lib/models/useFieldValidators.ts @@ -4,7 +4,7 @@ import { useParams } from 'react-router-dom' import { SchemaFieldPropertyType, SchemaSection } from '../../types' import { composeAsyncValidators, required } from '../form' import { useSchema } from '../schemas' -import { useCheckMaxLengthFromProperty } from './useCheckMaxLengthFromSchema' +import { checkMaxLengthFromProperty } from './useCheckMaxLengthFromSchema' import { useIsFieldValueUnique } from './useIsFieldValueUnique' export function useValidator({ @@ -20,7 +20,7 @@ export function useValidator({ const validators = useMemo(() => [] as Validator[], []) const params = useParams() const modelId = params.id as string - const checkMaxLength = useCheckMaxLengthFromProperty(propertyDetails) + const checkMaxLength = checkMaxLengthFromProperty(propertyDetails) const checkIsValueTaken = useIsFieldValueUnique({ model: schemaSection.namePlural, field: property, diff --git a/src/pages/organisationUnits/form/ImageField.tsx b/src/pages/organisationUnits/form/ImageField.tsx index 26f47d9d..3651f566 100644 --- a/src/pages/organisationUnits/form/ImageField.tsx +++ b/src/pages/organisationUnits/form/ImageField.tsx @@ -21,7 +21,7 @@ export function ImageField() { const ADD_NEW_FILE_RESOURCE_MUTATION = { resource: 'fileResources', type: 'create', - data: (de: object) => de, + data: fileToUpload, } as const const fileToUploadDetails = { name: fileToUpload.name, diff --git a/src/pages/organisationUnits/form/OrganisationUnitSelector.tsx b/src/pages/organisationUnits/form/OrganisationUnitSelector.tsx index 5c3253af..50a40cfe 100644 --- a/src/pages/organisationUnits/form/OrganisationUnitSelector.tsx +++ b/src/pages/organisationUnits/form/OrganisationUnitSelector.tsx @@ -31,10 +31,9 @@ export function OrganisationUnitSelector() {

{i18n.t( - 'New organisation unit will be created inside' - ) + - ' ' + - selectedOrgUnit} + 'New organisation unit will be created inside {{selectedOrgUnit}}', + { selectedOrgUnit } + )}

)} diff --git a/src/pages/organisationUnits/form/organisationUnitSchema.ts b/src/pages/organisationUnits/form/organisationUnitSchema.ts index d1b26e5f..267e6c27 100644 --- a/src/pages/organisationUnits/form/organisationUnitSchema.ts +++ b/src/pages/organisationUnits/form/organisationUnitSchema.ts @@ -1,22 +1,15 @@ import { z } from 'zod' -import { getDefaults } from '../../../lib' +import { getDefaults, modelFormSchemas } from '../../../lib' +import i18n from '@dhis2/d2-i18n' -export const organisationUnitSchema = z.object({ +const { withAttributeValues } = modelFormSchemas + +export const organisationUnitSchema = withAttributeValues.extend({ name: z.string().trim().default(''), shortName: z.string().trim().default(''), code: z.string().trim().optional(), description: z.string().trim().optional(), image: z.object({ id: z.string() }).optional(), - attributeValues: z - .array( - z.object({ - value: z.string().optional(), - attribute: z.object({ - id: z.string(), - }), - }) - ) - .optional(), phoneNumber: z.string().optional(), contactPerson: z.string().optional(), openingDate: z.string().default(''), diff --git a/src/pages/organisationUnits/form/types.ts b/src/pages/organisationUnits/form/types.ts index 3168a479..541f40c4 100644 --- a/src/pages/organisationUnits/form/types.ts +++ b/src/pages/organisationUnits/form/types.ts @@ -1,5 +1,6 @@ import { OrganisationUnit } from '../../../types/generated' export type FormValues = Omit & { + // this is an array as teh orgunit selector operates on arrays parent: { id: string }[] }