import React, { ChangeEvent, useRef, useState } from "react"; import { zeroAppend } from "../../other/utils"; import { OlTooltip } from "./oltooltip"; export function OlNumberInput(props: { value: number; min: number; max: number; minLength?: number; className?: string; tooltip?: string | (() => JSX.Element | JSX.Element[]); tooltipPosition?: string; tooltipRelativeToParent?: boolean; decimalPlaces?: number; onDecrease: () => void; onIncrease: () => void; onChange: (e: ChangeEvent) => void; }) { const [hover, setHover] = useState(false); const [hoverTimeout, setHoverTimeout] = useState(null as number | null); var buttonRef = useRef(null); return (
{ setHoverTimeout( window.setTimeout(() => { setHover(true); setHoverTimeout(null); }, 400) ); }} onMouseLeave={() => { setHover(false); if (hoverTimeout) { window.clearTimeout(hoverTimeout); setHoverTimeout(null); } }} > { e.stopPropagation(); setHover(false); }} min={props.min} max={props.max} className={` block h-10 w-full border-[2px] bg-gray-50 py-2.5 text-center text-sm text-gray-900 dark:border-gray-700 dark:bg-olympus-600 dark:text-white dark:placeholder-gray-400 dark:focus:border-blue-700 dark:focus:ring-blue-700 focus:border-blue-700 focus:ring-blue-500 `} value={zeroAppend(props.value, props.minLength ?? 0, props.decimalPlaces !== undefined, props.decimalPlaces ?? 0)} />
{hover && props.tooltip && ( )}
); }