import EventInterval from "../../../Types/Events/EventInterval"; import Recurring from "../../../Types/Events/Recurring"; import PositiveNumber from "../../../Types/PositiveNumber"; import React, { FunctionComponent, ReactElement, useState } from "react"; import RecurringFieldElement from "./RecurringFieldElement"; import Button, { ButtonSize, ButtonStyleType } from "../Button/Button"; import IconProp from "../../../Types/Icon/IconProp"; export interface ComponentProps { error?: string | undefined; onChange?: ((value: Array) => void) | undefined; initialValue?: Array | undefined; } const RecurringArrayFieldElement: FunctionComponent = ( props: ComponentProps, ): ReactElement => { const [recurrings, setRecurrings] = useState | undefined>( props.initialValue && props.initialValue.length > 0 ? Recurring.fromJSONArray(props.initialValue) : undefined, ); type UpdateRecurringFunction = (recurring: Recurring, index: number) => void; const updateRecurrings: UpdateRecurringFunction = ( recurring: Recurring, index: number, ): void => { const existingRecurrings: Array = [...(recurrings || [])]; existingRecurrings[index] = recurring; setRecurrings(existingRecurrings); if (props.onChange) { props.onChange(existingRecurrings); } }; return (
{recurrings && recurrings.map((recurring: Recurring, index: number) => { return (
{ updateRecurrings(recurring, index); }} />
); })}
{props.error && (

{props.error}

)}
); }; export default RecurringArrayFieldElement;