import { useState } from 'react' import CountsCandidatePicker from '@/components/counts/CountsCandidatePicker' import DateTimeField from '@/components/common/DateTimeField' import { Button } from '@/components/ui/button' import useDialogue from '@/lib/dialogues/useDialogue' import { inputClass } from '@/lib/utils' import { useUITranslation } from '@/lib/useUITranslation' import type { CountsCondition, CountsDefinition, CountsFieldMetadata } from '@/lib/countsDefinitions' const CountsConditionValues = ( { condition, field, definition, params, maximum, change }: { condition: CountsCondition; field: CountsFieldMetadata; definition: CountsDefinition params: URLSearchParams; maximum: number change: (values: (string | number | boolean)[]) => void }, ) => { const { label, message } = useUITranslation ('counts') const dialogue = useDialogue () const [draft, setDraft] = useState ('') const values = condition.values ?? [] const pick = () => { void dialogue.form ({ title: label (field.candidateSource === 'tags' ? 'counts:pattern.link' : 'counts:pattern.pattern'), size: 'large', footerLayout: 'inline', body: controls => }) } if (condition.input === 'list' || field.candidateSource === 'tags') return const append = () => { if (draft === '' || values.length >= maximum || values.some (value => String (value) === draft)) return change ([...values, draft]) setDraft ('') } const input = () => { if (field.type === 'datetime') return setDraft (value ?? '')}/> if (field.type === 'boolean' || field.choices != null) { const choices = field.choices ?? ['true', 'false'].map (value => ({ value, label: `counts:truthValues.${value}` })) return } return setDraft (event.target.value)}/> } const display = (value: string | number | boolean) => { const choice = field.choices?.find (choice => choice.value === String (value)) if (choice != null) return message (choice.label).text if (field.type === 'boolean') return message (`truthValues.${value}`).text return String (value) } return
{values.map ((value, index) => {display (value)} )} {input ()}
} export default CountsConditionValues