import { Control, useFieldArray, UseFormRegister } from 'react-hook-form'; import { Button, IconButton, Input, Switch } from '@chakra-ui/react'; import { FiChevronUp } from '@react-icons/all-files/fi/FiChevronUp'; import { IoRemove } from '@react-icons/all-files/io5/IoRemove'; import { Subscription, TimerLifeCycle } from 'ontime-types'; import { useEmitLog } from '../../../common/stores/logger'; import collapseStyles from '../../../common/components/collapse-bar/CollapseBar.module.scss'; import styles from '../Modal.module.scss'; interface SubscriptionRowProps { cycle: TimerLifeCycle; title: string; subtitle: string; visible: boolean; setShowSection: (cycle: TimerLifeCycle) => void; register: UseFormRegister; control: Control; placeholder: string; } export default function SubscriptionRow(props: SubscriptionRowProps) { const { cycle, title, subtitle, visible, setShowSection, register, control, placeholder } = props; const { emitError } = useEmitLog(); const { fields, append, remove } = useFieldArray({ name: cycle, control, }); const hasTooManyOptions = fields.length >= 3; const headerStyle = `${styles.splitSection} ${visible ? '' : styles.showPointer}`; const sectionTitle = `${title} ${fields.length ? fields.length : '-'} / 3`; const handleAddNew = () => { if (hasTooManyOptions) { emitError('Maximum amount of onLoad subscriptions reached (3)'); return; } append({ message: '', enabled: false, }); }; return ( <>
setShowSection(cycle)}>
{sectionTitle} {visible && {subtitle}}
{visible && ( <> {fields.map((subscription, index) => (
} onClick={() => remove(index)} aria-label='delete' size='xs' colorScheme='red' />
))} )} ); }