import { SendButton } from '@/components/SendButton' import { InputSubmitContent } from '@/types' import { DateInputBlock } from '@indite.io/schemas' import { createSignal } from 'solid-js' import { defaultDateInputOptions } from '@indite.io/schemas/features/blocks/inputs/date/constants' import clsx from 'clsx' type Props = { onSubmit: (inputValue: InputSubmitContent) => void options?: DateInputBlock['options'] defaultValue?: string } export const DateForm = (props: Props) => { const [inputValues, setInputValues] = createSignal( parseDefaultValue(props.defaultValue ?? '') ) const submit = () => { if (inputValues().from === '' && inputValues().to === '') return props.onSubmit({ type: 'text', value: `${inputValues().from}${props.options?.isRange ? ` to ${inputValues().to}` : '' }`, }) } return (
{ e.preventDefault() submit() }} >
{props.options?.isRange && (

{props.options.labels?.from ?? defaultDateInputOptions.labels.from}

)} setInputValues({ ...inputValues(), from: e.currentTarget.value, }) } min={props.options?.min} max={props.options?.max} data-testid="from-date" />
{props.options?.isRange && (
{props.options.isRange && (

{props.options.labels?.to ?? defaultDateInputOptions.labels.to}

)} setInputValues({ ...inputValues(), to: e.currentTarget.value, }) } min={props.options?.min} max={props.options?.max} data-testid="to-date" />
)}
{props.options?.labels?.button}
) } const parseDefaultValue = (defaultValue: string) => { if (!defaultValue.includes('to')) return { from: defaultValue, to: '' } const [from, to] = defaultValue.split(' to ') return { from, to } }