@snack-uikit/fields 0.36.3-preview-a2f98ef7.0 → 0.36.3-preview-bb2cdfb8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/cjs/components/FieldColor/FieldColor.d.ts +5 -0
- package/dist/cjs/components/FieldColor/FieldColor.js +5 -3
- package/dist/cjs/components/FieldDate/FieldDate.d.ts +3 -0
- package/dist/cjs/components/FieldDate/FieldDate.js +5 -3
- package/dist/cjs/components/FieldDecorator/FieldDecorator.d.ts +12 -1
- package/dist/cjs/components/FieldDecorator/FieldDecorator.js +5 -3
- package/dist/cjs/components/FieldSecure/FieldSecure.d.ts +3 -1
- package/dist/cjs/components/FieldSecure/FieldSecure.js +5 -3
- package/dist/cjs/components/FieldSelect/FieldSelectMultiple.d.ts +1 -0
- package/dist/cjs/components/FieldSelect/FieldSelectMultiple.js +4 -2
- package/dist/cjs/components/FieldSelect/FieldSelectSingle.d.ts +1 -0
- package/dist/cjs/components/FieldSelect/FieldSelectSingle.js +4 -2
- package/dist/cjs/components/FieldSelect/types.d.ts +3 -1
- package/dist/cjs/components/FieldSlider/FieldSlider.d.ts +3 -1
- package/dist/cjs/components/FieldSlider/FieldSlider.js +5 -3
- package/dist/cjs/components/FieldStepper/FieldStepper.d.ts +3 -1
- package/dist/cjs/components/FieldStepper/FieldStepper.js +5 -3
- package/dist/cjs/components/FieldText/FieldText.d.ts +3 -1
- package/dist/cjs/components/FieldText/FieldText.js +5 -3
- package/dist/cjs/components/FieldTextArea/FieldTextArea.d.ts +3 -1
- package/dist/cjs/components/FieldTextArea/FieldTextArea.js +5 -3
- package/dist/cjs/components/FieldTime/FieldTime.d.ts +3 -0
- package/dist/cjs/components/FieldTime/FieldTime.js +5 -3
- package/dist/esm/components/FieldColor/FieldColor.d.ts +5 -0
- package/dist/esm/components/FieldColor/FieldColor.js +2 -2
- package/dist/esm/components/FieldDate/FieldDate.d.ts +3 -0
- package/dist/esm/components/FieldDate/FieldDate.js +3 -3
- package/dist/esm/components/FieldDecorator/FieldDecorator.d.ts +12 -1
- package/dist/esm/components/FieldDecorator/FieldDecorator.js +4 -3
- package/dist/esm/components/FieldSecure/FieldSecure.d.ts +3 -1
- package/dist/esm/components/FieldSecure/FieldSecure.js +2 -2
- package/dist/esm/components/FieldSelect/FieldSelectMultiple.d.ts +1 -0
- package/dist/esm/components/FieldSelect/FieldSelectMultiple.js +2 -2
- package/dist/esm/components/FieldSelect/FieldSelectSingle.d.ts +1 -0
- package/dist/esm/components/FieldSelect/FieldSelectSingle.js +2 -2
- package/dist/esm/components/FieldSelect/types.d.ts +3 -1
- package/dist/esm/components/FieldSlider/FieldSlider.d.ts +3 -1
- package/dist/esm/components/FieldSlider/FieldSlider.js +2 -2
- package/dist/esm/components/FieldStepper/FieldStepper.d.ts +3 -1
- package/dist/esm/components/FieldStepper/FieldStepper.js +2 -2
- package/dist/esm/components/FieldText/FieldText.d.ts +3 -1
- package/dist/esm/components/FieldText/FieldText.js +2 -2
- package/dist/esm/components/FieldTextArea/FieldTextArea.d.ts +3 -1
- package/dist/esm/components/FieldTextArea/FieldTextArea.js +2 -2
- package/dist/esm/components/FieldTime/FieldTime.d.ts +3 -0
- package/dist/esm/components/FieldTime/FieldTime.js +3 -3
- package/package.json +9 -9
- package/src/components/FieldColor/FieldColor.tsx +5 -1
- package/src/components/FieldDate/FieldDate.tsx +15 -1
- package/src/components/FieldDecorator/FieldDecorator.tsx +49 -44
- package/src/components/FieldSecure/FieldSecure.tsx +5 -1
- package/src/components/FieldSelect/FieldSelectMultiple.tsx +2 -0
- package/src/components/FieldSelect/FieldSelectSingle.tsx +2 -0
- package/src/components/FieldSelect/types.ts +4 -1
- package/src/components/FieldSlider/FieldSlider.tsx +5 -0
- package/src/components/FieldStepper/FieldStepper.tsx +5 -0
- package/src/components/FieldText/FieldText.tsx +5 -0
- package/src/components/FieldTextArea/FieldTextArea.tsx +5 -1
- package/src/components/FieldTime/FieldTime.tsx +15 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import cn from 'classnames';
|
|
2
|
-
import { ReactNode } from 'react';
|
|
2
|
+
import { forwardRef, ReactNode } from 'react';
|
|
3
3
|
|
|
4
4
|
import { SIZE } from '@snack-uikit/input-private';
|
|
5
5
|
import { extractSupportProps, WithSupportProps } from '@snack-uikit/utils';
|
|
@@ -25,49 +25,54 @@ export type FieldDecoratorProps = WithSupportProps<
|
|
|
25
25
|
FooterProps
|
|
26
26
|
>;
|
|
27
27
|
|
|
28
|
-
export
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
28
|
+
export const FieldDecorator = forwardRef<HTMLDivElement, FieldDecoratorProps>(
|
|
29
|
+
(
|
|
30
|
+
{
|
|
31
|
+
children,
|
|
32
|
+
className,
|
|
33
|
+
label,
|
|
34
|
+
labelTooltip,
|
|
35
|
+
required,
|
|
36
|
+
labelFor,
|
|
37
|
+
caption,
|
|
38
|
+
length,
|
|
39
|
+
hint,
|
|
40
|
+
disabled,
|
|
41
|
+
readonly,
|
|
42
|
+
showHintIcon,
|
|
43
|
+
labelTooltipPlacement,
|
|
44
|
+
size = SIZE.S,
|
|
45
|
+
error,
|
|
46
|
+
validationState = VALIDATION_STATE.Default,
|
|
47
|
+
...rest
|
|
48
|
+
},
|
|
49
|
+
ref,
|
|
50
|
+
) => {
|
|
51
|
+
const isFieldActive = !disabled && !readonly;
|
|
52
|
+
const fieldValidationState = getValidationState({ validationState, error });
|
|
49
53
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
return (
|
|
55
|
+
<div className={cn(styles.decorator, className)} {...extractSupportProps(rest)} data-size={size} ref={ref}>
|
|
56
|
+
{label && (
|
|
57
|
+
<Header
|
|
58
|
+
labelTooltipPlacement={labelTooltipPlacement}
|
|
59
|
+
required={required}
|
|
60
|
+
label={label}
|
|
61
|
+
labelTooltip={labelTooltip}
|
|
62
|
+
labelFor={labelFor}
|
|
63
|
+
caption={caption}
|
|
64
|
+
size={size}
|
|
65
|
+
/>
|
|
66
|
+
)}
|
|
67
|
+
{children}
|
|
68
|
+
<Footer
|
|
69
|
+
length={isFieldActive ? length : undefined}
|
|
70
|
+
hint={error || hint}
|
|
71
|
+
showHintIcon={showHintIcon}
|
|
60
72
|
size={size}
|
|
73
|
+
validationState={isFieldActive ? fieldValidationState : VALIDATION_STATE.Default}
|
|
61
74
|
/>
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
hint={error || hint}
|
|
67
|
-
showHintIcon={showHintIcon}
|
|
68
|
-
size={size}
|
|
69
|
-
validationState={isFieldActive ? fieldValidationState : VALIDATION_STATE.Default}
|
|
70
|
-
/>
|
|
71
|
-
</div>
|
|
72
|
-
);
|
|
73
|
-
}
|
|
75
|
+
</div>
|
|
76
|
+
);
|
|
77
|
+
},
|
|
78
|
+
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import mergeRefs from 'merge-refs';
|
|
2
|
-
import { forwardRef, ReactElement, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import { ForwardedRef, forwardRef, ReactElement, useMemo, useRef, useState } from 'react';
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
InputPrivate,
|
|
@@ -55,6 +55,8 @@ type FieldSecureOwnProps = {
|
|
|
55
55
|
prefixIcon?: ReactElement;
|
|
56
56
|
/** Свойство позволяет грузить данные в поле по требованию */
|
|
57
57
|
asyncValueGetter?(): Promise<string>;
|
|
58
|
+
/** Ref для корневой обертки компонента */
|
|
59
|
+
decoratorRef?: ForwardedRef<HTMLDivElement>;
|
|
58
60
|
};
|
|
59
61
|
|
|
60
62
|
export type FieldSecureProps = WithSupportProps<FieldSecureOwnProps & InputProps & WrapperProps>;
|
|
@@ -91,6 +93,7 @@ export const FieldSecure = forwardRef<HTMLInputElement, FieldSecureProps>(
|
|
|
91
93
|
asyncValueGetter,
|
|
92
94
|
autoComplete,
|
|
93
95
|
onCopyButtonClick,
|
|
96
|
+
decoratorRef,
|
|
94
97
|
...rest
|
|
95
98
|
},
|
|
96
99
|
ref,
|
|
@@ -205,6 +208,7 @@ export const FieldSecure = forwardRef<HTMLInputElement, FieldSecureProps>(
|
|
|
205
208
|
size={size}
|
|
206
209
|
error={error}
|
|
207
210
|
validationState={fieldValidationState}
|
|
211
|
+
ref={decoratorRef}
|
|
208
212
|
{...extractSupportProps(rest)}
|
|
209
213
|
>
|
|
210
214
|
<FieldContainerPrivate
|
|
@@ -53,6 +53,7 @@ export const FieldSelectMultiple = forwardRef<HTMLInputElement, FieldSelectMulti
|
|
|
53
53
|
resetSearchOnOptionSelection = true,
|
|
54
54
|
onOpenChange,
|
|
55
55
|
selectedOptionFormatter = defaultSelectedOptionFormatter,
|
|
56
|
+
decoratorRef,
|
|
56
57
|
...rest
|
|
57
58
|
} = props;
|
|
58
59
|
const localRef = useRef<HTMLInputElement>(null);
|
|
@@ -180,6 +181,7 @@ export const FieldSelectMultiple = forwardRef<HTMLInputElement, FieldSelectMulti
|
|
|
180
181
|
{...extractSupportProps(rest)}
|
|
181
182
|
{...extractFieldDecoratorProps(props)}
|
|
182
183
|
validationState={fieldValidationState}
|
|
184
|
+
ref={decoratorRef}
|
|
183
185
|
>
|
|
184
186
|
<Droplist
|
|
185
187
|
{...extractListProps(props)}
|
|
@@ -60,6 +60,7 @@ export const FieldSelectSingle = forwardRef<HTMLInputElement, FieldSelectSingleP
|
|
|
60
60
|
selectedOptionFormatter = defaultSelectedOptionFormatter,
|
|
61
61
|
enableFuzzySearch = true,
|
|
62
62
|
onCopyButtonClick,
|
|
63
|
+
decoratorRef,
|
|
63
64
|
...rest
|
|
64
65
|
} = props;
|
|
65
66
|
const localRef = useRef<HTMLInputElement>(null);
|
|
@@ -196,6 +197,7 @@ export const FieldSelectSingle = forwardRef<HTMLInputElement, FieldSelectSingleP
|
|
|
196
197
|
{...extractSupportProps(rest)}
|
|
197
198
|
{...extractFieldDecoratorProps(props)}
|
|
198
199
|
validationState={fieldValidationState}
|
|
200
|
+
ref={decoratorRef}
|
|
199
201
|
>
|
|
200
202
|
<Droplist
|
|
201
203
|
{...extractListProps(props)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactElement, ReactNode } from 'react';
|
|
1
|
+
import { ForwardedRef, ReactElement, ReactNode } from 'react';
|
|
2
2
|
|
|
3
3
|
import { InputPrivateProps } from '@snack-uikit/input-private';
|
|
4
4
|
import {
|
|
@@ -135,6 +135,9 @@ type FiledSelectCommonProps = WithSupportProps<{
|
|
|
135
135
|
onOpenChange?(open: boolean): void;
|
|
136
136
|
|
|
137
137
|
selectedOptionFormatter?: SelectedOptionFormatter;
|
|
138
|
+
|
|
139
|
+
/** Ref для корневой обертки компонента */
|
|
140
|
+
decoratorRef?: ForwardedRef<HTMLDivElement>;
|
|
138
141
|
}> &
|
|
139
142
|
Pick<
|
|
140
143
|
DroplistProps,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import mergeRefs from 'merge-refs';
|
|
2
2
|
import {
|
|
3
3
|
FocusEvent,
|
|
4
|
+
ForwardedRef,
|
|
4
5
|
forwardRef,
|
|
5
6
|
KeyboardEvent,
|
|
6
7
|
ReactElement,
|
|
@@ -54,6 +55,8 @@ type FieldSliderOwnProps = {
|
|
|
54
55
|
prefix?: ReactNode;
|
|
55
56
|
/** Произвольный постфикс для поля */
|
|
56
57
|
postfix?: ReactNode;
|
|
58
|
+
/** Ref для корневой обертки компонента */
|
|
59
|
+
decoratorRef?: ForwardedRef<HTMLDivElement>;
|
|
57
60
|
};
|
|
58
61
|
|
|
59
62
|
export type FieldSliderProps = WithSupportProps<FieldSliderOwnProps & SliderProps & WrapperProps>;
|
|
@@ -106,6 +109,7 @@ export const FieldSlider = forwardRef<HTMLInputElement, FieldSliderProps>(
|
|
|
106
109
|
postfixIcon,
|
|
107
110
|
prefix,
|
|
108
111
|
postfix,
|
|
112
|
+
decoratorRef,
|
|
109
113
|
...rest
|
|
110
114
|
},
|
|
111
115
|
ref,
|
|
@@ -280,6 +284,7 @@ export const FieldSlider = forwardRef<HTMLInputElement, FieldSliderProps>(
|
|
|
280
284
|
showHintIcon={showHintIcon}
|
|
281
285
|
readonly={readonly}
|
|
282
286
|
size={size}
|
|
287
|
+
ref={decoratorRef}
|
|
283
288
|
{...extractSupportProps(rest)}
|
|
284
289
|
>
|
|
285
290
|
<FieldContainerPrivate
|
|
@@ -3,6 +3,7 @@ import mergeRefs from 'merge-refs';
|
|
|
3
3
|
import {
|
|
4
4
|
ChangeEvent,
|
|
5
5
|
FocusEvent,
|
|
6
|
+
ForwardedRef,
|
|
6
7
|
forwardRef,
|
|
7
8
|
KeyboardEventHandler,
|
|
8
9
|
MouseEvent,
|
|
@@ -59,6 +60,8 @@ type FieldStepperOwnProps = {
|
|
|
59
60
|
prefix?: ReactNode;
|
|
60
61
|
/** Произвольный постфикс для поля */
|
|
61
62
|
postfix?: ReactNode;
|
|
63
|
+
/** Ref для корневой обертки компонента */
|
|
64
|
+
decoratorRef?: ForwardedRef<HTMLDivElement>;
|
|
62
65
|
};
|
|
63
66
|
|
|
64
67
|
export type FieldStepperProps = WithSupportProps<FieldStepperOwnProps & InputProps & WrapperProps>;
|
|
@@ -111,6 +114,7 @@ export const FieldStepper = forwardRef<HTMLInputElement, FieldStepperProps>(
|
|
|
111
114
|
error,
|
|
112
115
|
prefix,
|
|
113
116
|
postfix,
|
|
117
|
+
decoratorRef,
|
|
114
118
|
...rest
|
|
115
119
|
},
|
|
116
120
|
ref,
|
|
@@ -223,6 +227,7 @@ export const FieldStepper = forwardRef<HTMLInputElement, FieldStepperProps>(
|
|
|
223
227
|
size={size}
|
|
224
228
|
validationState={fieldValidationState}
|
|
225
229
|
error={error}
|
|
230
|
+
ref={decoratorRef}
|
|
226
231
|
{...extractSupportProps(rest)}
|
|
227
232
|
>
|
|
228
233
|
<Tooltip
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import mergeRefs from 'merge-refs';
|
|
2
2
|
import {
|
|
3
|
+
ForwardedRef,
|
|
3
4
|
forwardRef,
|
|
4
5
|
KeyboardEventHandler,
|
|
5
6
|
ReactElement,
|
|
@@ -72,6 +73,8 @@ type FieldTextOwnProps = {
|
|
|
72
73
|
postfix?: ReactNode;
|
|
73
74
|
/** Кнопка действия внутри поля */
|
|
74
75
|
button?: Button;
|
|
76
|
+
/** Ref для корневой обертки компонента */
|
|
77
|
+
decoratorRef?: ForwardedRef<HTMLDivElement>;
|
|
75
78
|
};
|
|
76
79
|
|
|
77
80
|
export type FieldTextProps = WithSupportProps<FieldTextOwnProps & InputProps & WrapperProps>;
|
|
@@ -111,6 +114,7 @@ export const FieldText = forwardRef<HTMLInputElement, FieldTextProps>(
|
|
|
111
114
|
button: buttonProp,
|
|
112
115
|
onPaste,
|
|
113
116
|
onKeyDown,
|
|
117
|
+
decoratorRef,
|
|
114
118
|
...rest
|
|
115
119
|
},
|
|
116
120
|
ref,
|
|
@@ -224,6 +228,7 @@ export const FieldText = forwardRef<HTMLInputElement, FieldTextProps>(
|
|
|
224
228
|
size={size}
|
|
225
229
|
validationState={fieldValidationState}
|
|
226
230
|
error={error}
|
|
231
|
+
ref={decoratorRef}
|
|
227
232
|
{...extractSupportProps(rest)}
|
|
228
233
|
>
|
|
229
234
|
<FieldContainerPrivate
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import mergeRefs from 'merge-refs';
|
|
2
|
-
import { ChangeEvent, forwardRef, useMemo, useRef } from 'react';
|
|
2
|
+
import { ChangeEvent, ForwardedRef, forwardRef, useMemo, useRef } from 'react';
|
|
3
3
|
|
|
4
4
|
import { SIZE, useButtonNavigation, useClearButton } from '@snack-uikit/input-private';
|
|
5
5
|
import { Scroll } from '@snack-uikit/scroll';
|
|
@@ -50,6 +50,8 @@ type FieldTextAreaOwnProps = {
|
|
|
50
50
|
showClearButton?: boolean;
|
|
51
51
|
/** Можно ли вводить больше разрешённого кол-ва символов */
|
|
52
52
|
allowMoreThanMaxLength?: boolean;
|
|
53
|
+
/** Ref для корневой обертки компонента */
|
|
54
|
+
decoratorRef?: ForwardedRef<HTMLDivElement>;
|
|
53
55
|
};
|
|
54
56
|
|
|
55
57
|
export type FieldTextAreaProps = WithSupportProps<FieldTextAreaOwnProps & InputProps & WrapperProps>;
|
|
@@ -85,6 +87,7 @@ export const FieldTextArea = forwardRef<HTMLTextAreaElement, FieldTextAreaProps>
|
|
|
85
87
|
size = SIZE.S,
|
|
86
88
|
validationState = VALIDATION_STATE.Default,
|
|
87
89
|
onCopyButtonClick,
|
|
90
|
+
decoratorRef,
|
|
88
91
|
...rest
|
|
89
92
|
},
|
|
90
93
|
ref,
|
|
@@ -147,6 +150,7 @@ export const FieldTextArea = forwardRef<HTMLTextAreaElement, FieldTextAreaProps>
|
|
|
147
150
|
size={size}
|
|
148
151
|
error={error}
|
|
149
152
|
validationState={fieldValidationState}
|
|
153
|
+
ref={decoratorRef}
|
|
150
154
|
{...extractSupportProps(rest)}
|
|
151
155
|
>
|
|
152
156
|
<FieldContainerPrivate
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import mergeRefs from 'merge-refs';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
FocusEvent,
|
|
4
|
+
ForwardedRef,
|
|
5
|
+
forwardRef,
|
|
6
|
+
KeyboardEvent,
|
|
7
|
+
MouseEvent,
|
|
8
|
+
useCallback,
|
|
9
|
+
useEffect,
|
|
10
|
+
useMemo,
|
|
11
|
+
useRef,
|
|
12
|
+
} from 'react';
|
|
3
13
|
import { useUncontrolledProp } from 'uncontrollable';
|
|
4
14
|
|
|
5
15
|
import { TimePicker, TimePickerProps } from '@snack-uikit/calendar';
|
|
@@ -61,6 +71,8 @@ type FieldTimeOwnProps = {
|
|
|
61
71
|
* @default true
|
|
62
72
|
*/
|
|
63
73
|
showClearButton?: boolean;
|
|
74
|
+
/** Ref для корневой обертки компонента */
|
|
75
|
+
decoratorRef?: ForwardedRef<HTMLDivElement>;
|
|
64
76
|
};
|
|
65
77
|
|
|
66
78
|
export type FieldTimeProps = WithSupportProps<FieldTimeOwnProps & InputProps & WrapperProps>;
|
|
@@ -113,6 +125,7 @@ export const FieldTime = forwardRef<HTMLInputElement, FieldTimeProps>(
|
|
|
113
125
|
validationState = VALIDATION_STATE.Default,
|
|
114
126
|
error,
|
|
115
127
|
onCopyButtonClick,
|
|
128
|
+
decoratorRef,
|
|
116
129
|
...rest
|
|
117
130
|
},
|
|
118
131
|
ref,
|
|
@@ -290,6 +303,7 @@ export const FieldTime = forwardRef<HTMLInputElement, FieldTimeProps>(
|
|
|
290
303
|
size={size}
|
|
291
304
|
error={error}
|
|
292
305
|
validationState={fieldValidationState}
|
|
306
|
+
ref={decoratorRef}
|
|
293
307
|
{...extractSupportProps(rest)}
|
|
294
308
|
>
|
|
295
309
|
<Dropdown
|