diff --git a/packages/manager/apps/pci-private-registry/src/components/CIDR/CIDR.component.tsx b/packages/manager/apps/pci-private-registry/src/components/CIDR/CIDR.component.tsx index c269561adf96..3b5989e5b021 100644 --- a/packages/manager/apps/pci-private-registry/src/components/CIDR/CIDR.component.tsx +++ b/packages/manager/apps/pci-private-registry/src/components/CIDR/CIDR.component.tsx @@ -7,7 +7,7 @@ import { useEffect } from 'react'; import { useMutationState } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; -import * as z from 'zod'; + import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming'; import { useForm, FormProvider } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; @@ -25,60 +25,8 @@ import { useDatagridColumn } from '@/pages/CIDR/useDatagridColumn'; import Filters from '@/components/CIDR/Filters.component'; import { getRegistryQueyPrefixWithId } from '@/api/hooks/useIpRestrictions'; import useDataGridContext from '@/pages/CIDR/useDatagridContext'; -import { FilterRestrictionsEnum } from '@/types'; - -const schemaAddCidr = (dataCIDR: string[], isUpdating: boolean) => - z.object({ - description: z.string().optional(), - ipBlock: z - .string() - .trim() - .transform((value) => { - try { - z.string() - .cidr() - .parse(value); - } catch (err) { - return `${value}/32`; - } - return value; - }) - .superRefine((value, ctx) => { - try { - z.string() - .cidr() - .parse(value); - } catch (err) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: 'private_registry_cidr_validation_ipBlock', - }); - } - if (!isUpdating) { - // verify duplication cidr - const existingIpBlocks = dataCIDR.map((item) => item); - if (existingIpBlocks.includes(value)) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: 'private_registry_cidr_already_exist', - }); - } - } - }), - authorization: z - .array( - z.enum([ - FilterRestrictionsEnum.MANAGEMENT, - FilterRestrictionsEnum.REGISTRY, - ]), - ) - .default([]) - .refine((auth) => auth.length > 0, { - message: 'private_registry_cidr_validation_authorization', - }), - }); - -export type ConfirmCIDRSchemaType = z.infer>; +import { ConfirmCIDRSchemaType } from '@/types'; +import { schemaAddCidr } from '@/schema/formSchema'; export default function CIDR() { const { t } = useTranslation(['ip-restrictions', 'common']); diff --git a/packages/manager/apps/pci-private-registry/src/schema/formSchema.ts b/packages/manager/apps/pci-private-registry/src/schema/formSchema.ts new file mode 100644 index 000000000000..25d40d4e5baf --- /dev/null +++ b/packages/manager/apps/pci-private-registry/src/schema/formSchema.ts @@ -0,0 +1,53 @@ +import * as z from 'zod'; +import { FilterRestrictionsEnum } from '@/types'; + +export const schemaAddCidr = (dataCIDR: string[], isUpdating: boolean) => + z.object({ + description: z.string().optional(), + ipBlock: z + .string() + .trim() + .transform((value) => { + try { + z.string() + .cidr() + .parse(value); + } catch (err) { + return `${value}/32`; + } + return value; + }) + .superRefine((value, ctx) => { + try { + z.string() + .cidr() + .parse(value); + } catch (err) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'private_registry_cidr_validation_ipBlock', + }); + } + if (!isUpdating) { + // verify duplication cidr + const existingIpBlocks = dataCIDR.map((item) => item); + if (existingIpBlocks.includes(value)) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'private_registry_cidr_already_exist', + }); + } + } + }), + authorization: z + .array( + z.enum([ + FilterRestrictionsEnum.MANAGEMENT, + FilterRestrictionsEnum.REGISTRY, + ]), + ) + .default([]) + .refine((auth) => auth.length > 0, { + message: 'private_registry_cidr_validation_authorization', + }), + }); diff --git a/packages/manager/apps/pci-private-registry/src/types/index.ts b/packages/manager/apps/pci-private-registry/src/types/index.ts index b4cbe63ad878..ffe399d62e07 100644 --- a/packages/manager/apps/pci-private-registry/src/types/index.ts +++ b/packages/manager/apps/pci-private-registry/src/types/index.ts @@ -1,3 +1,6 @@ +import z from 'zod'; +import { schemaAddCidr } from '@/schema/formSchema'; + export type FilterRestrictionsServer = 'management' | 'registry'; export enum FilterRestrictionsEnum { @@ -31,3 +34,5 @@ export type TIPRestrictionsDefault = TIPRestrictions & TIPRestrictionsMethod; export type TIPRestrictionsData = TIPRestrictions & TIPRestrictionsDraft & TIPRestrictionsMethod; + +export type ConfirmCIDRSchemaType = z.infer>;