import clsx from "clsx"; import { ComponentPropsWithRef, FocusEventHandler, KeyboardEventHandler, MouseEventHandler, ReactNode, } from "react"; import { ThemeColor } from "../../../types"; import { inputConfig, sizeVariant } from "../text/Input"; import { Button } from "../../button"; export interface InputButtonProps extends Omit< ComponentPropsWithRef<"div">, "prefix" | "size" | "onClick" | "onFocus" | "onBlur" > { label?: string; variant?: "normal" | "ghost"; disabled?: boolean; prefix?: ReactNode; color?: ThemeColor; size?: "small" | "medium" | "large" | "custom"; flexibleWidth?: boolean; readOnly?: boolean; placeholder?: string; onClick?: MouseEventHandler; onFocus?: FocusEventHandler; onBlur?: FocusEventHandler; } export function InputButton({ id, variant = "normal", color = "yellow", disabled = false, prefix, className, readOnly = false, size = "medium", flexibleWidth = true, label, placeholder = "", onClick, onFocus, onBlur, ...rest }: InputButtonProps) { const handleKeyDown: KeyboardEventHandler = (event) => { if (disabled) return; if (event.key === "Enter" || event.key === " ") { event.preventDefault(); event.currentTarget.click(); } }; return (
{prefix && (
{prefix}
)}
{label || placeholder}
); }