1 | import * as React from 'react';
|
2 | import {StyletronComponent} from 'styletron-react';
|
3 | import {Override} from '../overrides';
|
4 |
|
5 | export interface STATE_CHANGE_TYPE {
|
6 | change: 'change';
|
7 | }
|
8 | export interface ADJOINED {
|
9 | none: 'none';
|
10 | left: 'left';
|
11 | right: 'right';
|
12 | both: 'both';
|
13 | }
|
14 | export interface SIZE {
|
15 | mini: 'mini';
|
16 | default: 'default';
|
17 | compact: 'compact';
|
18 | large: 'large';
|
19 | }
|
20 |
|
21 | export interface CUSTOM_INPUT_TYPE {
|
22 | textarea: 'textarea';
|
23 | }
|
24 |
|
25 | export interface ENHANCER_POSITION {
|
26 | start: 'start';
|
27 | end: 'end';
|
28 | }
|
29 |
|
30 | export interface BaseInputOverrides<T> {
|
31 | InputContainer?: Override<T>;
|
32 | Input?: Override<T>;
|
33 | Before?: Override<T>;
|
34 | After?: Override<T>;
|
35 | }
|
36 |
|
37 | export interface BaseInputProps<T> {
|
38 | 'aria-errormessage'?: string;
|
39 | 'aria-label'?: string;
|
40 | 'aria-labelledby'?: string;
|
41 | 'aria-describedby'?: string;
|
42 | adjoined?: ADJOINED[keyof ADJOINED];
|
43 | autoComplete?: string;
|
44 | autoFocus?: boolean;
|
45 | clearable?: boolean;
|
46 | clearOnEscape?: boolean;
|
47 | maxLength?: number;
|
48 | disabled?: boolean;
|
49 | error?: boolean;
|
50 | positive?: boolean;
|
51 | id?: string;
|
52 | 'data-baseweb'?: string;
|
53 | inputMode?: string;
|
54 | pattern?: string;
|
55 | inputRef?: React.Ref<T>;
|
56 | name?: string;
|
57 | onBlur?: React.FocusEventHandler<T>;
|
58 | onChange?: React.FormEventHandler<T>;
|
59 | onKeyDown?: React.KeyboardEventHandler<T>;
|
60 | onKeyPress?: React.KeyboardEventHandler<T>;
|
61 | onKeyUp?: React.KeyboardEventHandler<T>;
|
62 | onFocus?: React.FocusEventHandler<T>;
|
63 | overrides?: BaseInputOverrides<SharedProps>;
|
64 | placeholder?: string;
|
65 | required?: boolean;
|
66 | size?: SIZE[keyof SIZE];
|
67 | type?: string;
|
68 | value?: string | number;
|
69 | rows?: number;
|
70 | min?: number;
|
71 | max?: number;
|
72 | step?: number;
|
73 | }
|
74 |
|
75 | export interface State {
|
76 | value?: string | number;
|
77 | }
|
78 |
|
79 | export type InputOverrides = BaseInputOverrides<SharedProps> & {
|
80 | Root?: Override<SharedProps>;
|
81 | StartEnhancer?: Override<SharedProps>;
|
82 | EndEnhancer?: Override<SharedProps>;
|
83 | ClearIcon?: Override<SharedProps>;
|
84 | ClearIconContainer?: Override<SharedProps>;
|
85 | MaskToggleButton?: Override<SharedProps>;
|
86 | MaskToggleHideIcon?: Override<SharedProps>;
|
87 | MaskToggleShowIcon?: Override<SharedProps>;
|
88 | };
|
89 |
|
90 | export type SharedProps = {
|
91 |
|
92 | $isFocused: boolean;
|
93 |
|
94 | $disabled: boolean;
|
95 |
|
96 | $error: boolean;
|
97 |
|
98 | $positive: boolean;
|
99 |
|
100 | $adjoined: keyof ADJOINED;
|
101 |
|
102 | $size: keyof SIZE;
|
103 |
|
104 | $required: boolean;
|
105 | $position: keyof ENHANCER_POSITION;
|
106 |
|
107 | $hasIconTrailing: boolean;
|
108 | };
|
109 |
|
110 | export interface InputProps extends BaseInputProps<HTMLInputElement> {
|
111 | startEnhancer?: ((args: SharedProps) => React.ReactNode) | React.ReactNode;
|
112 | endEnhancer?: ((args: SharedProps) => React.ReactNode) | React.ReactNode;
|
113 | overrides?: InputOverrides;
|
114 | }
|
115 |
|
116 | export interface InternalState {
|
117 | isFocused?: boolean;
|
118 | isMasked?: boolean;
|
119 | }
|
120 |
|
121 | export class Input extends React.Component<InputProps, InternalState> {
|
122 | onFocus(e: React.FocusEvent<HTMLInputElement>): void;
|
123 | onBlur(e: React.FocusEvent<HTMLInputElement>): void;
|
124 | }
|
125 |
|
126 | export class BaseInput extends React.Component<
|
127 | BaseInputProps<HTMLInputElement>,
|
128 | InternalState
|
129 | > {
|
130 | onFocus(e: React.FocusEvent<HTMLInputElement>): void;
|
131 | onBlur(e: React.FocusEvent<HTMLInputElement>): void;
|
132 | }
|
133 |
|
134 | export interface MaskedInputProps extends InputProps {
|
135 | mask?: string;
|
136 | maskChar?: string;
|
137 | }
|
138 |
|
139 | export const MaskedInput: React.FC<MaskedInputProps>;
|
140 |
|
141 | export interface StatefulContainerProps {
|
142 | children?: React.ReactNode;
|
143 | initialState?: State;
|
144 | stateReducer?: (
|
145 | stateType: STATE_CHANGE_TYPE[keyof STATE_CHANGE_TYPE],
|
146 | nextState: State,
|
147 | currentState: State,
|
148 | ) => State;
|
149 | onChange?: React.FormEventHandler<HTMLInputElement>;
|
150 | }
|
151 |
|
152 | export type StatefulInputProps = InputProps &
|
153 | StatefulContainerProps & {children?: never};
|
154 |
|
155 | export const StatefulInput: React.FC<StatefulInputProps>;
|
156 | export const StatefulContainer: React.FC<StatefulContainerProps>;
|
157 |
|
158 | export const StyledRoot: StyletronComponent<any>;
|
159 | export const StyledInputEnhancer: StyletronComponent<any>;
|
160 | export const StyledStartEnhancer: StyletronComponent<any>;
|
161 | export const StyledEndEnhancer: StyletronComponent<any>;
|
162 | export const StyledInputContainer: StyletronComponent<any>;
|
163 | export const StyledInput: StyletronComponent<any>;
|
164 |
|
165 | export const STATE_CHANGE_TYPE: STATE_CHANGE_TYPE;
|
166 | export const CUSTOM_INPUT_TYPE: CUSTOM_INPUT_TYPE;
|
167 | export const ADJOINED: ADJOINED;
|
168 | export const SIZE: SIZE;
|
169 | export const ENHANCER_POSITION: ENHANCER_POSITION;
|