{"version":3,"file":"index.cjs","sources":["../../../../src/components/date-input/index.tsx"],"sourcesContent":["import React, {\n    forwardRef,\n    useRef,\n    useState,\n    useCallback,\n    useId,\n    useEffect,\n} from \"react\";\nimport type { ReactElement } from \"react\";\nimport type { BaseInputProps } from \"../commons/input\";\nimport dayjs from \"dayjs\";\nimport { TextInput } from \"../text-input\";\nimport { Modal } from \"../modal\";\nimport { Popover } from \"../popover\";\nimport Calendar from \"../../icons/calendar\";\nimport { DatePicker, type DatePickerProps } from \"./picker\";\nimport { useClickAway } from \"react-use\";\n\nexport type DateInputProps = Omit<\n    BaseInputProps<Date>,\n    \"onChange\" | \"min\" | \"max\" | \"id\"\n> &\n    Omit<DatePickerProps, \"dataTestIds\"> & {\n        dataTestIds?: {\n            textInput?: string;\n            datePickerInput?: DatePickerProps[\"dataTestIds\"];\n        };\n        id?: string;\n    };\n\nexport const DateInput = forwardRef<HTMLInputElement, DateInputProps>(\n    function DateInput(\n        {\n            id,\n            label,\n            errorText,\n            error = false,\n            info,\n            variant,\n            border,\n            className,\n            value,\n            onChange,\n            min,\n            max,\n            loading,\n            disabled,\n            dataTestIds,\n            ...rest\n        },\n        ref,\n    ): ReactElement {\n        const generatedId = useId();\n        const [anchorEl, setAnchorEl] = useState<HTMLInputElement | null>(null);\n        const popoverRef = useRef<HTMLDivElement>(null);\n        const [open, setOpen] = useState(false);\n        const [modal, setModal] = useState(false);\n\n        const resolvedId = id || generatedId;\n\n        useClickAway(popoverRef, () => {\n            setOpen(false);\n        });\n\n        useEffect(() => {\n            const resizeObserver = new ResizeObserver((entries) => {\n                const { width } = entries[0].contentRect;\n                if (width < 640) setModal(true);\n                else setModal(false);\n            });\n\n            resizeObserver.observe(document.body);\n            return () => {\n                // eslint-disable-next-line react-hooks/exhaustive-deps\n                resizeObserver.unobserve(document.body);\n            };\n        });\n\n        const handlePickerOpen = useCallback(() => {\n            if (!open && (disabled || loading)) return;\n            setOpen(true);\n        }, [disabled, loading, open]);\n\n        const handlePickerClose = useCallback(() => {\n            setOpen(false);\n        }, []);\n\n        const handleChange = useCallback(\n            (value: Date) => {\n                if (onChange) onChange(value);\n                setOpen(false);\n            },\n            [onChange],\n        );\n\n        return (\n            <>\n                <TextInput\n                    data-testid={dataTestIds?.textInput}\n                    ref={(element) => {\n                        if (ref) {\n                            if (typeof ref === \"function\") ref(element);\n                            else ref.current = element;\n                        }\n                        setAnchorEl(element);\n                    }}\n                    readOnly\n                    id={resolvedId}\n                    label={label}\n                    error={error}\n                    variant={variant}\n                    border={border}\n                    errorText={errorText}\n                    info={info}\n                    icon={Calendar}\n                    disabled={disabled}\n                    loading={loading}\n                    className={{\n                        ...className,\n                        input: `cui-cursor-pointer ${className?.input}`,\n                        inputIconWrapper: `cui-cursor-pointer ${className?.inputIconWrapper}`,\n                    }}\n                    {...rest}\n                    onClick={handlePickerOpen}\n                    value={value ? dayjs(value).format(\"L\") : undefined}\n                />\n                {modal ? (\n                    <Modal open={open} onDismiss={handlePickerClose}>\n                        <div className=\"cui-p-3 cui-rounded-xxl cui-bg-white dark:cui-bg-black\">\n                            <DatePicker\n                                value={value}\n                                onChange={handleChange}\n                                min={min}\n                                max={max}\n                                dataTestIds={dataTestIds?.datePickerInput}\n                            />\n                        </div>\n                    </Modal>\n                ) : (\n                    <Popover\n                        anchor={anchorEl}\n                        ref={popoverRef}\n                        open={open}\n                        placement=\"bottom-start\"\n                        className={{\n                            root: \"cui-p-3 cui-flex cui-flex-col cui-gap-3\",\n                        }}\n                    >\n                        <DatePicker\n                            onChange={handleChange}\n                            value={value}\n                            min={min}\n                            max={max}\n                            dataTestIds={dataTestIds?.datePickerInput}\n                        />\n                    </Popover>\n                )}\n            </>\n        );\n    },\n);\n"],"names":["forwardRef","DateInput","useId","useState","useRef","modal","useEffect","useCallback","value","TextInput","Calendar","dayjs","Modal","DatePicker","Popover"],"mappings":"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"}