import { SendButton } from '@/components/SendButton' import { InputSubmitContent } from '@/types' import type { RatingInputBlock } from '@indite.io/schemas' import { createSignal, For, Match, Switch, Show } from 'solid-js' import { isDefined, isEmpty, isNotDefined } from '@indite.io/lib' import { Button } from '@/components/Button' import { defaultRatingInputOptions } from '@indite.io/schemas/features/blocks/inputs/rating/constants' type Props = { block: RatingInputBlock defaultValue?: string onSubmit: (value: InputSubmitContent) => void } export const RatingForm = (props: Props) => { const [rating, setRating] = createSignal( props.defaultValue ? Number(props.defaultValue) : undefined ) const handleSubmit = (e: SubmitEvent) => { e.preventDefault() const selectedRating = rating() if (isNotDefined(selectedRating)) return props.onSubmit({ type: 'text', value: selectedRating.toString() }) } const handleClick = (rating: number) => { if (props.block.options?.isOneClickSubmitEnabled) props.onSubmit({ type: 'text', value: rating.toString() }) setRating(rating) } return (
{props.block.options?.labels?.left && ( {props.block.options.labels.left} )}
{(_, idx) => ( )}
{props.block.options?.labels?.right && ( {props.block.options.labels.right} )}
{isDefined(rating()) && ( {props.block.options?.labels?.button ?? defaultRatingInputOptions.labels.button} )}
) } type RatingButtonProps = { rating?: number idx: number onClick: (rating: number) => void } & RatingInputBlock['options'] const RatingButton = (props: RatingButtonProps) => { const handleClick = (e: MouseEvent) => { e.preventDefault() props.onClick(props.idx) } return (
props.onClick(props.idx)} /> ) } const defaultIcon = ``