@snack-uikit/fields 0.36.3 → 0.36.5-preview-c8fb5dcc.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/CHANGELOG.md +10 -0
- 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/cjs/helperComponents/ButtonFieldList/ButtonFieldList.d.ts +1 -1
- package/dist/cjs/helperComponents/ButtonFieldList/ButtonFieldList.js +4 -2
- package/dist/cjs/types/allFields.d.ts +1 -1
- 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/dist/esm/helperComponents/ButtonFieldList/ButtonFieldList.d.ts +1 -1
- package/dist/esm/helperComponents/ButtonFieldList/ButtonFieldList.js +2 -2
- package/dist/esm/types/allFields.d.ts +1 -1
- package/package.json +4 -4
- 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
- package/src/helperComponents/ButtonFieldList/ButtonFieldList.tsx +2 -1
- package/src/types/allFields.ts +1 -1
|
@@ -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 { Calendar, CalendarProps } from '@snack-uikit/calendar';
|
|
@@ -66,6 +76,8 @@ type FieldDateOwnProps = {
|
|
|
66
76
|
*/
|
|
67
77
|
showClearButton?: boolean;
|
|
68
78
|
mode: Mode;
|
|
79
|
+
/** Ref для корневой обертки компонента */
|
|
80
|
+
decoratorRef?: ForwardedRef<HTMLDivElement>;
|
|
69
81
|
} & Pick<CalendarProps, 'buildCellProps'> &
|
|
70
82
|
(
|
|
71
83
|
| {
|
|
@@ -105,6 +117,7 @@ export const FieldDate = forwardRef<HTMLInputElement, FieldDateProps>(
|
|
|
105
117
|
error,
|
|
106
118
|
mode,
|
|
107
119
|
onCopyButtonClick,
|
|
120
|
+
decoratorRef,
|
|
108
121
|
...rest
|
|
109
122
|
},
|
|
110
123
|
ref,
|
|
@@ -307,6 +320,7 @@ export const FieldDate = forwardRef<HTMLInputElement, FieldDateProps>(
|
|
|
307
320
|
size={size}
|
|
308
321
|
error={error}
|
|
309
322
|
validationState={fieldValidationState}
|
|
323
|
+
ref={decoratorRef}
|
|
310
324
|
{...extractSupportProps(rest)}
|
|
311
325
|
>
|
|
312
326
|
<Dropdown
|
|
@@ -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
|
|
@@ -11,7 +11,7 @@ import styles from './styles.module.scss';
|
|
|
11
11
|
type ButtonFieldListProps = Omit<ButtonFieldProps, 'arrowOpen' | 'hasArrow'> & NativeDroplistProps;
|
|
12
12
|
|
|
13
13
|
export const ButtonFieldList = forwardRef<HTMLButtonElement, ButtonFieldListProps>(
|
|
14
|
-
({ items, selection, open, onOpenChange, ...rest }, ref) => {
|
|
14
|
+
({ items, selection, open, onOpenChange, search, ...rest }, ref) => {
|
|
15
15
|
const [isOpen, setIsOpen] = useUncontrolledProp(open, false, onOpenChange);
|
|
16
16
|
const placement = getPlacement(rest);
|
|
17
17
|
|
|
@@ -23,6 +23,7 @@ export const ButtonFieldList = forwardRef<HTMLButtonElement, ButtonFieldListProp
|
|
|
23
23
|
open={isOpen}
|
|
24
24
|
onOpenChange={setIsOpen}
|
|
25
25
|
closeDroplistOnItemClick={true}
|
|
26
|
+
search={search}
|
|
26
27
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
27
28
|
// @ts-ignore
|
|
28
29
|
triggerElemRef={ref}
|
package/src/types/allFields.ts
CHANGED
|
@@ -13,7 +13,7 @@ export type ButtonVariant = ValueOf<typeof BUTTON_VARIANT>;
|
|
|
13
13
|
|
|
14
14
|
export type AsyncValueRequest = Promise<{ success: boolean; value?: string }>;
|
|
15
15
|
|
|
16
|
-
export type NativeDroplistProps = Pick<DroplistProps, 'items' | 'open' | 'onOpenChange'> & {
|
|
16
|
+
export type NativeDroplistProps = Pick<DroplistProps, 'items' | 'open' | 'onOpenChange' | 'search'> & {
|
|
17
17
|
selection?: Omit<SelectionSingleState, 'mode'>;
|
|
18
18
|
};
|
|
19
19
|
|