/* eslint-disable */ // @ts-nocheck import { DatePicker, Flex, FlexItem, FormGroup, NumberInput, Radio, Split, SplitItem, TimePicker, } from "../../../../shared/@patternfly/react-core"; import { useState } from "react"; import { FormErrorText, HelpItem } from "../../../../shared/keycloak-ui-shared"; import { useTranslation } from "react-i18next"; import { Controller, useFormContext } from "react-hook-form"; const DATE_TIME_FORMAT = /(\d\d\d\d-\d\d-\d\d)? (\d\d?):(\d\d?)/; const padDateSegment = (value: number) => value.toString().padStart(2, "0"); const DateTime = ({ name }: { name: string }) => { const { control } = useFormContext(); const parseDate = (value: string, date?: Date): string => { if (!date) { return value; } const parts = DATE_TIME_FORMAT.exec(value); const parsedDate = [ date.getFullYear(), padDateSegment(date.getMonth() + 1), padDateSegment(date.getDate()), ].join("-"); return `${parsedDate} ${parts ? parts[2] : "00"}:${ parts ? parts[3] : "00" }:00`; }; const parseTime = ( value: string, hour?: number | null, minute?: number | null, ): string => { const parts = DATE_TIME_FORMAT.exec(value); if (minute !== undefined && minute !== null) { return `${parts ? parts[1] : ""} ${hour}:${ minute < 10 ? `0${minute}` : minute }:00`; } return value; }; return ( { const dateTime = field.value.match(DATE_TIME_FORMAT) || [ "", "", "0", "00", ]; return ( { field.onChange(parseDate(field.value, date)); }} /> field.onChange(parseTime(field.value, hour, minute)) } is24Hour /> ); }} /> ); }; type NumberControlProps = { name: string; min: number; max: number; }; const NumberControl = ({ name, min, max }: NumberControlProps) => { const { control } = useFormContext(); const setValue = (newValue: number) => Math.max(min, Math.min(newValue, max)); return ( ( field.onChange(setValue(Number(field.value) + 1))} onMinus={() => field.onChange(setValue(Number(field.value) - 1))} onChange={(event) => { const newValue = Number(event.currentTarget.value); field.onChange(setValue(!isNaN(newValue) ? newValue : 0)); }} /> )} /> ); }; const FromTo = ({ name, ...rest }: NumberControlProps) => { const { t } = useTranslation(); return ( } > {t("to")} ); }; export const Time = () => { const { t } = useTranslation(); const { getValues, formState: { errors }, } = useFormContext(); const [repeat, setRepeat] = useState(getValues("month")); return ( <> } > setRepeat(false)} label={t("notRepeat")} className="pf-v5-u-mb-md" /> setRepeat(true)} label={t("repeat")} className="pf-v5-u-mb-md" /> {repeat && ( <> )} } isRequired > {errors.notBefore && } } isRequired > {errors.notOnOrAfter && } ); };