import React from 'react'; import PropTypes from 'prop-types'; import { InputProps } from '../input'; import InputNumberFoundation, { BaseInputNumberState, InputNumberAdapter } from '@douyinfe/semi-foundation/lib/es/inputNumber/foundation'; import BaseComponent from '../_base/baseComponent'; import { strings } from '@douyinfe/semi-foundation/lib/es/inputNumber/constants'; import '@douyinfe/semi-foundation/lib/es/inputNumber/inputNumber.css'; import { ArrayElement } from '../_base/base'; export interface ScientificNotationConfig { /** Number of digits threshold to trigger scientific notation display */ threshold?: number; } export interface InputNumberProps extends InputProps { autofocus?: boolean; className?: string; clearIcon?: React.ReactNode; currency?: string | boolean; currencyDisplay?: 'code' | 'symbol' | 'name'; defaultValue?: number | string; defaultCurrency?: string; disabled?: boolean; formatter?: (value: number | string) => string; forwardedRef?: React.MutableRefObject | ((instance: HTMLInputElement) => void); hideButtons?: boolean; innerButtons?: boolean; insetLabel?: React.ReactNode; insetLabelId?: string; keepFocus?: boolean; localeCode?: string; max?: number; min?: number; minimumFractionDigits?: number; maximumFractionDigits?: number; parser?: (value: string) => string; precision?: number; prefixCls?: string; pressInterval?: number; pressTimeout?: number; shiftStep?: number; showClear?: boolean; showCurrencySymbol?: boolean; size?: ArrayElement; step?: number; style?: React.CSSProperties; suffix?: React.ReactNode; value?: number | string; /** Enable scientific notation display for long numbers, display full number when focused */ scientificNotation?: boolean | ScientificNotationConfig; onBlur?: (e: React.FocusEvent) => void; onChange?: (value: number | string, e?: React.ChangeEvent) => void; onDownClick?: (value: string, e: React.MouseEvent) => void; onFocus?: (e: React.FocusEvent) => void; onKeyDown?: React.KeyboardEventHandler; onNumberChange?: (value: number, e?: React.ChangeEvent) => void; onUpClick?: (value: string, e: React.MouseEvent) => void; } export interface InputNumberState extends BaseInputNumberState { } declare class InputNumber extends BaseComponent { static propTypes: { 'aria-label': PropTypes.Requireable; 'aria-labelledby': PropTypes.Requireable; 'aria-invalid': PropTypes.Requireable; 'aria-errormessage': PropTypes.Requireable; 'aria-describedby': PropTypes.Requireable; 'aria-required': PropTypes.Requireable; autofocus: PropTypes.Requireable; clearIcon: PropTypes.Requireable; className: PropTypes.Requireable; defaultValue: PropTypes.Requireable>; disabled: PropTypes.Requireable; formatter: PropTypes.Requireable<(...args: any[]) => any>; forwardedRef: PropTypes.Requireable; hideButtons: PropTypes.Requireable; innerButtons: PropTypes.Requireable; insetLabel: PropTypes.Requireable; insetLabelId: PropTypes.Requireable; keepFocus: PropTypes.Requireable; max: PropTypes.Requireable; min: PropTypes.Requireable; parser: PropTypes.Requireable<(...args: any[]) => any>; precision: PropTypes.Requireable; prefixCls: PropTypes.Requireable; pressInterval: PropTypes.Requireable; pressTimeout: PropTypes.Requireable; preventScroll: PropTypes.Requireable; shiftStep: PropTypes.Requireable; showCurrencySymbol: PropTypes.Requireable; step: PropTypes.Requireable; style: PropTypes.Requireable; suffix: PropTypes.Requireable; value: PropTypes.Requireable>; scientificNotation: PropTypes.Requireable>; onBlur: PropTypes.Requireable<(...args: any[]) => any>; onChange: PropTypes.Requireable<(...args: any[]) => any>; onDownClick: PropTypes.Requireable<(...args: any[]) => any>; onKeyDown: PropTypes.Requireable<(...args: any[]) => any>; onNumberChange: PropTypes.Requireable<(...args: any[]) => any>; onUpClick: PropTypes.Requireable<(...args: any[]) => any>; }; static defaultProps: InputNumberProps; get adapter(): InputNumberAdapter; inputNode: HTMLInputElement; clickUpOrDown: boolean; cursorStart: number; cursorEnd: number; currentValue: number | string; cursorBefore: string; cursorAfter: string; foundation: InputNumberFoundation; constructor(props: InputNumberProps); /** * Calculate initial state for first render. * Keep logic aligned with componentDidUpdate (non-focusing branch). */ _getInitState(props: InputNumberProps): { value: string; number: number | null; }; componentDidUpdate(prevProps: InputNumberProps): void; setInputRef: (node: HTMLInputElement) => void; handleInputFocus: (e: React.FocusEvent) => void; handleInputChange: (value: string, event: React.ChangeEvent) => void; handleInputBlur: (e: React.FocusEvent) => void; handleInputKeyDown: (e: React.KeyboardEvent) => void; handleInputMouseEnter: (e: React.MouseEvent) => void; handleInputMouseLeave: (e: React.MouseEvent) => void; handleInputMouseMove: (e: React.MouseEvent) => void; handleUpClick: (e: React.KeyboardEvent) => void; handleDownClick: (e: React.KeyboardEvent) => void; handleMouseUp: (e: React.MouseEvent) => void; handleMouseLeave: (e: React.MouseEvent) => void; renderButtons: () => React.JSX.Element; renderSuffix: () => string | number | boolean | Iterable | React.JSX.Element; render(): React.JSX.Element; } declare const _default: React.ForwardRefExoticComponent>; export default _default; export { InputNumber };