@vkontakte/vkui 7.8.2 → 7.9.1
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/dist/components/Box/Box.d.ts +11 -0
- package/dist/components/Box/Box.d.ts.map +1 -0
- package/dist/components/Box/Box.js +25 -0
- package/dist/components/Box/Box.js.map +1 -0
- package/dist/components/CarouselBase/CarouselBase.d.ts +1 -1
- package/dist/components/CarouselBase/CarouselBase.d.ts.map +1 -1
- package/dist/components/CarouselBase/CarouselBase.js +6 -4
- package/dist/components/CarouselBase/CarouselBase.js.map +1 -1
- package/dist/components/CarouselBase/constants.d.ts +1 -1
- package/dist/components/CarouselBase/constants.d.ts.map +1 -1
- package/dist/components/CarouselBase/constants.js +1 -1
- package/dist/components/CarouselBase/constants.js.map +1 -1
- package/dist/components/CarouselBase/hooks.d.ts +3 -1
- package/dist/components/CarouselBase/hooks.d.ts.map +1 -1
- package/dist/components/CarouselBase/hooks.js +46 -6
- package/dist/components/CarouselBase/hooks.js.map +1 -1
- package/dist/components/CarouselBase/types.d.ts +12 -0
- package/dist/components/CarouselBase/types.d.ts.map +1 -1
- package/dist/components/CarouselBase/types.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.d.ts +11 -2
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +44 -10
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts +16 -3
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js +32 -19
- package/dist/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -1
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +1 -1
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -1
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js +39 -10
- package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.d.ts +1 -1
- package/dist/components/ChipsInput/ChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInput/ChipsInput.js +32 -13
- package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.d.ts +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/ChipsInputBase.js +52 -26
- package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +13 -4
- package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/types.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +67 -38
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +16 -2
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +99 -50
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts +6 -2
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js +38 -20
- package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
- package/dist/components/CustomSelect/helpers.d.ts +1 -0
- package/dist/components/CustomSelect/helpers.d.ts.map +1 -1
- package/dist/components/CustomSelect/helpers.js +11 -0
- package/dist/components/CustomSelect/helpers.js.map +1 -1
- package/dist/components/Div/Div.d.ts +3 -0
- package/dist/components/Div/Div.d.ts.map +1 -1
- package/dist/components/Div/Div.js +11 -1
- package/dist/components/Div/Div.js.map +1 -1
- package/dist/components/File/File.d.ts +16 -3
- package/dist/components/File/File.d.ts.map +1 -1
- package/dist/components/File/File.js +29 -17
- package/dist/components/File/File.js.map +1 -1
- package/dist/components/Input/Input.d.ts +16 -3
- package/dist/components/Input/Input.d.ts.map +1 -1
- package/dist/components/Input/Input.js +28 -13
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.d.ts +17 -3
- package/dist/components/NativeSelect/NativeSelect.d.ts.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js +37 -14
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/Radio/Radio.d.ts +18 -3
- package/dist/components/Radio/Radio.d.ts.map +1 -1
- package/dist/components/Radio/Radio.js +31 -11
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Radio/RadioInput/RadioInput.d.ts +16 -3
- package/dist/components/Radio/RadioInput/RadioInput.d.ts.map +1 -1
- package/dist/components/Radio/RadioInput/RadioInput.js +22 -11
- package/dist/components/Radio/RadioInput/RadioInput.js.map +1 -1
- package/dist/components/Search/Search.d.ts +16 -3
- package/dist/components/Search/Search.d.ts.map +1 -1
- package/dist/components/Search/Search.js +50 -28
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.js +10 -4
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts +2 -2
- package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts +10 -1
- package/dist/components/Snackbar/Snackbar.d.ts.map +1 -1
- package/dist/components/Snackbar/Snackbar.js +20 -6
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.d.ts +16 -3
- package/dist/components/SplitLayout/SplitLayout.d.ts.map +1 -1
- package/dist/components/SplitLayout/SplitLayout.js +24 -9
- package/dist/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +16 -3
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/Switch.js +32 -20
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Textarea/Textarea.d.ts +16 -3
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js +36 -18
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/WriteBar/WriteBar.d.ts +16 -3
- package/dist/components/WriteBar/WriteBar.d.ts.map +1 -1
- package/dist/components/WriteBar/WriteBar.js +28 -11
- package/dist/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/Box/Box.js +19 -0
- package/dist/cssm/components/Box/Box.js.map +1 -0
- package/dist/cssm/components/CarouselBase/CarouselBase.js +4 -4
- package/dist/cssm/components/CarouselBase/CarouselBase.js.map +1 -1
- package/dist/cssm/components/CarouselBase/constants.js +1 -1
- package/dist/cssm/components/CarouselBase/constants.js.map +1 -1
- package/dist/cssm/components/CarouselBase/hooks.js +46 -6
- package/dist/cssm/components/CarouselBase/hooks.js.map +1 -1
- package/dist/cssm/components/CarouselBase/types.js.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.js +29 -6
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js +24 -13
- package/dist/cssm/components/Checkbox/CheckboxInput/CheckboxInput.js.map +1 -1
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js +24 -6
- package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -1
- package/dist/cssm/components/ChipsInput/ChipsInput.js +25 -11
- package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +30 -12
- package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +49 -30
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +73 -41
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js +20 -9
- package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
- package/dist/cssm/components/CustomSelect/helpers.js +11 -0
- package/dist/cssm/components/CustomSelect/helpers.js.map +1 -1
- package/dist/cssm/components/Div/Div.js +11 -1
- package/dist/cssm/components/Div/Div.js.map +1 -1
- package/dist/cssm/components/File/File.js +20 -7
- package/dist/cssm/components/File/File.js.map +1 -1
- package/dist/cssm/components/Input/Input.js +20 -7
- package/dist/cssm/components/Input/Input.js.map +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.module.css +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +25 -8
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.js +28 -8
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/Radio/RadioInput/RadioInput.js +18 -6
- package/dist/cssm/components/Radio/RadioInput/RadioInput.js.map +1 -1
- package/dist/cssm/components/Search/Search.js +34 -17
- package/dist/cssm/components/Search/Search.js.map +1 -1
- package/dist/cssm/components/Select/Select.js +9 -1
- package/dist/cssm/components/Select/Select.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.js +11 -2
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/SplitLayout/SplitLayout.js +22 -8
- package/dist/cssm/components/SplitLayout/SplitLayout.js.map +1 -1
- package/dist/cssm/components/Switch/Switch.js +29 -17
- package/dist/cssm/components/Switch/Switch.js.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js +22 -8
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.js +24 -9
- package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/hooks/useMergeProps.js +38 -0
- package/dist/cssm/hooks/useMergeProps.js.map +1 -0
- package/dist/cssm/index.js +2 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/animation/useCSSTransition.js +1 -1
- package/dist/cssm/lib/animation/useCSSTransition.js.map +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +1 -1
- package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/cssm/lib/fx.js +55 -8
- package/dist/cssm/lib/fx.js.map +1 -1
- package/dist/cssm/lib/layouts/gaps.js.map +1 -1
- package/dist/cssm/lib/layouts/helpers.js +21 -0
- package/dist/cssm/lib/layouts/helpers.js.map +1 -0
- package/dist/cssm/lib/layouts/index.js +1 -0
- package/dist/cssm/lib/layouts/index.js.map +1 -1
- package/dist/cssm/lib/layouts/layoutProps.js +89 -0
- package/dist/cssm/lib/layouts/layoutProps.js.map +1 -0
- package/dist/cssm/lib/layouts/resolveLayoutProps.js +36 -0
- package/dist/cssm/lib/layouts/resolveLayoutProps.js.map +1 -0
- package/dist/cssm/lib/layouts/types.js +3 -0
- package/dist/cssm/lib/layouts/types.js.map +1 -0
- package/dist/cssm/lib/warnOnce.js +1 -1
- package/dist/cssm/lib/warnOnce.js.map +1 -1
- package/dist/cssm/styles/layout.css +922 -0
- package/dist/hooks/useMergeProps.d.ts +6 -0
- package/dist/hooks/useMergeProps.d.ts.map +1 -0
- package/dist/hooks/useMergeProps.js +42 -0
- package/dist/hooks/useMergeProps.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/animation/useCSSTransition.js +1 -1
- package/dist/lib/animation/useCSSTransition.js.map +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +1 -1
- package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
- package/dist/lib/fx.d.ts +8 -1
- package/dist/lib/fx.d.ts.map +1 -1
- package/dist/lib/fx.js +55 -8
- package/dist/lib/fx.js.map +1 -1
- package/dist/lib/layouts/gaps.d.ts +4 -5
- package/dist/lib/layouts/gaps.d.ts.map +1 -1
- package/dist/lib/layouts/gaps.js.map +1 -1
- package/dist/lib/layouts/helpers.d.ts +17 -0
- package/dist/lib/layouts/helpers.d.ts.map +1 -0
- package/dist/lib/layouts/helpers.js +21 -0
- package/dist/lib/layouts/helpers.js.map +1 -0
- package/dist/lib/layouts/index.d.ts +2 -0
- package/dist/lib/layouts/index.d.ts.map +1 -1
- package/dist/lib/layouts/index.js +1 -0
- package/dist/lib/layouts/index.js.map +1 -1
- package/dist/lib/layouts/layoutProps.d.ts +33 -0
- package/dist/lib/layouts/layoutProps.d.ts.map +1 -0
- package/dist/lib/layouts/layoutProps.js +89 -0
- package/dist/lib/layouts/layoutProps.js.map +1 -0
- package/dist/lib/layouts/resolveLayoutProps.d.ts +18 -0
- package/dist/lib/layouts/resolveLayoutProps.d.ts.map +1 -0
- package/dist/lib/layouts/resolveLayoutProps.js +35 -0
- package/dist/lib/layouts/resolveLayoutProps.js.map +1 -0
- package/dist/lib/layouts/types.d.ts +123 -0
- package/dist/lib/layouts/types.d.ts.map +1 -0
- package/dist/lib/layouts/types.js +3 -0
- package/dist/lib/layouts/types.js.map +1 -0
- package/dist/lib/warnOnce.js +1 -1
- package/dist/lib/warnOnce.js.map +1 -1
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +2 -2
- package/src/components/Box/Box.tsx +26 -0
- package/src/components/CarouselBase/CarouselBase.tsx +11 -4
- package/src/components/CarouselBase/constants.ts +1 -1
- package/src/components/CarouselBase/hooks.ts +31 -6
- package/src/components/CarouselBase/types.ts +13 -0
- package/src/components/Checkbox/Checkbox.tsx +57 -7
- package/src/components/Checkbox/CheckboxInput/CheckboxInput.tsx +51 -18
- package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.tsx +36 -6
- package/src/components/ChipsInput/ChipsInput.tsx +38 -11
- package/src/components/ChipsInputBase/ChipsInputBase.tsx +60 -17
- package/src/components/ChipsInputBase/types.ts +15 -4
- package/src/components/ChipsSelect/ChipsSelect.tsx +71 -33
- package/src/components/CustomSelect/CustomSelect.tsx +135 -45
- package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.tsx +48 -17
- package/src/components/CustomSelect/helpers.ts +23 -0
- package/src/components/Div/Div.tsx +13 -3
- package/src/components/File/File.tsx +48 -11
- package/src/components/Input/Input.tsx +51 -14
- package/src/components/MiniInfoCell/MiniInfoCell.module.css +1 -1
- package/src/components/NativeSelect/NativeSelect.tsx +57 -18
- package/src/components/Radio/Radio.tsx +51 -8
- package/src/components/Radio/RadioInput/RadioInput.tsx +35 -11
- package/src/components/Search/Search.tsx +80 -29
- package/src/components/Select/Select.tsx +22 -3
- package/src/components/SelectionControl/SelectionControl.tsx +2 -1
- package/src/components/Snackbar/Snackbar.tsx +35 -5
- package/src/components/SplitLayout/SplitLayout.tsx +46 -12
- package/src/components/Switch/Switch.tsx +62 -31
- package/src/components/Textarea/Textarea.tsx +58 -14
- package/src/components/WriteBar/WriteBar.tsx +59 -13
- package/src/hooks/useMergeProps.ts +66 -0
- package/src/index.ts +3 -0
- package/src/lib/animation/useCSSTransition.ts +1 -1
- package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +1 -1
- package/src/lib/fx.ts +63 -8
- package/src/lib/layouts/gaps.ts +4 -5
- package/src/lib/layouts/helpers.ts +24 -0
- package/src/lib/layouts/index.ts +13 -0
- package/src/lib/layouts/layoutProps.ts +75 -0
- package/src/lib/layouts/resolveLayoutProps.ts +51 -0
- package/src/lib/layouts/types.ts +142 -0
- package/src/lib/warnOnce.ts +1 -1
- package/src/styles/layout.css +1 -0
- package/src/styles/layout.css.d.ts.map +1 -0
|
@@ -1,14 +1,21 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
2
3
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
3
4
|
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
4
5
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
6
|
import * as React from "react";
|
|
7
|
+
import { useMergeProps } from "../../hooks/useMergeProps.js";
|
|
8
|
+
import { warnOnce } from "../../lib/warnOnce.js";
|
|
6
9
|
import { Button } from "../Button/Button.js";
|
|
7
10
|
import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
11
|
+
const warn = warnOnce('File');
|
|
8
12
|
/**
|
|
9
13
|
* @see https://vkui.io/components/file
|
|
10
14
|
*/ export const File = (_param)=>{
|
|
11
|
-
var { children = 'Выберите файл', align = 'left', size, mode, stretched, before, after, loading,
|
|
15
|
+
var { getRootRef, className, style, children = 'Выберите файл', align = 'left', size, mode, stretched, before, after, loading, getRef, appearance, slotProps } = _param, restProps = _object_without_properties(_param, [
|
|
16
|
+
"getRootRef",
|
|
17
|
+
"className",
|
|
18
|
+
"style",
|
|
12
19
|
"children",
|
|
13
20
|
"align",
|
|
14
21
|
"size",
|
|
@@ -17,16 +24,24 @@ import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
|
17
24
|
"before",
|
|
18
25
|
"after",
|
|
19
26
|
"loading",
|
|
20
|
-
"className",
|
|
21
|
-
"style",
|
|
22
27
|
"getRef",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
28
|
+
"appearance",
|
|
29
|
+
"slotProps"
|
|
25
30
|
]);
|
|
26
|
-
|
|
31
|
+
/* istanbul ignore if: не проверяем в тестах */ if (process.env.NODE_ENV === 'development' && getRef) {
|
|
32
|
+
warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');
|
|
33
|
+
}
|
|
34
|
+
const rootProps = useMergeProps({
|
|
35
|
+
className,
|
|
36
|
+
style,
|
|
37
|
+
getRootRef: getRootRef
|
|
38
|
+
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root);
|
|
39
|
+
const inputRest = useMergeProps(_object_spread({
|
|
40
|
+
getRootRef: getRef
|
|
41
|
+
}, restProps), slotProps === null || slotProps === void 0 ? void 0 : slotProps.input);
|
|
42
|
+
return /*#__PURE__*/ _jsxs(Button, _object_spread_props(_object_spread({
|
|
27
43
|
Component: "label",
|
|
28
44
|
align: align,
|
|
29
|
-
className: className,
|
|
30
45
|
stretched: stretched,
|
|
31
46
|
mode: mode,
|
|
32
47
|
appearance: appearance,
|
|
@@ -34,20 +49,17 @@ import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
|
34
49
|
before: before,
|
|
35
50
|
after: after,
|
|
36
51
|
loading: loading,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
disabled: restProps.disabled,
|
|
52
|
+
disabled: inputRest.disabled
|
|
53
|
+
}, rootProps), {
|
|
40
54
|
children: [
|
|
41
|
-
/*#__PURE__*/ _jsx(VisuallyHidden,
|
|
42
|
-
title: ""
|
|
43
|
-
}, restProps), {
|
|
55
|
+
/*#__PURE__*/ _jsx(VisuallyHidden, _object_spread({
|
|
56
|
+
title: "",
|
|
44
57
|
Component: "input",
|
|
45
|
-
type: "file"
|
|
46
|
-
|
|
47
|
-
})),
|
|
58
|
+
type: "file"
|
|
59
|
+
}, inputRest)),
|
|
48
60
|
children
|
|
49
61
|
]
|
|
50
|
-
});
|
|
62
|
+
}));
|
|
51
63
|
};
|
|
52
64
|
|
|
53
65
|
//# sourceMappingURL=File.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/File/File.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/components/File/File.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { Button, type VKUIButtonProps } from '../Button/Button';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\n\nconst warn = warnOnce('File');\n\nexport interface FileProps\n extends Omit<VKUIButtonProps, 'type'>,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'>,\n HasRootRef<HTMLElement> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLInputElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'children'> &\n HasRootRef<HTMLLabelElement> &\n HasDataAttribute;\n input?: Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> &\n HasRootRef<HTMLInputElement> &\n HasDataAttribute;\n };\n}\n\n/**\n * @see https://vkui.io/components/file\n */\nexport const File = ({\n getRootRef,\n className,\n style,\n children = 'Выберите файл',\n align = 'left',\n size,\n mode,\n stretched,\n before,\n after,\n loading,\n getRef,\n appearance,\n slotProps,\n ...restProps\n}: FileProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development' && getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n const rootProps = useMergeProps(\n {\n className,\n style,\n getRootRef: getRootRef as React.Ref<HTMLLabelElement>,\n },\n slotProps?.root,\n );\n const inputRest = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n return (\n <Button\n Component=\"label\"\n align={align}\n stretched={stretched}\n mode={mode}\n appearance={appearance}\n size={size}\n before={before}\n after={after}\n loading={loading}\n disabled={inputRest.disabled}\n {...rootProps}\n >\n <VisuallyHidden title=\"\" Component=\"input\" type=\"file\" {...inputRest} />\n {children}\n </Button>\n );\n};\n"],"names":["React","useMergeProps","warnOnce","Button","VisuallyHidden","warn","File","getRootRef","className","style","children","align","size","mode","stretched","before","after","loading","getRef","appearance","slotProps","restProps","process","env","NODE_ENV","rootProps","root","inputRest","input","Component","disabled","title","type"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,MAAM,QAA8B,sBAAmB;AAChE,SAASC,cAAc,QAAQ,sCAAmC;AAElE,MAAMC,OAAOH,SAAS;AAyBtB;;CAEC,GACD,OAAO,MAAMI,OAAO;QAAC,EACnBC,UAAU,EACVC,SAAS,EACTC,KAAK,EACLC,WAAW,eAAe,EAC1BC,QAAQ,MAAM,EACdC,IAAI,EACJC,IAAI,EACJC,SAAS,EACTC,MAAM,EACNC,KAAK,EACLC,OAAO,EACPC,MAAM,EACNC,UAAU,EACVC,SAAS,EAEC,WADPC;QAdHd;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,6CAA6C,GAC7C,IAAIE,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBN,QAAQ;QACpDb,KAAK;IACP;IAEA,MAAMoB,YAAYxB,cAChB;QACEO;QACAC;QACAF,YAAYA;IACd,GACAa,sBAAAA,gCAAAA,UAAWM,IAAI;IAEjB,MAAMC,YAAY1B,cAAc;QAAEM,YAAYW;OAAWG,YAAaD,sBAAAA,gCAAAA,UAAWQ,KAAK;IAEtF,qBACE,MAACzB;QACC0B,WAAU;QACVlB,OAAOA;QACPG,WAAWA;QACXD,MAAMA;QACNM,YAAYA;QACZP,MAAMA;QACNG,QAAQA;QACRC,OAAOA;QACPC,SAASA;QACTa,UAAUH,UAAUG,QAAQ;OACxBL;;0BAEJ,KAACrB;gBAAe2B,OAAM;gBAAGF,WAAU;gBAAQG,MAAK;eAAWL;YAC1DjB;;;AAGP,EAAE"}
|
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { HasAlign,
|
|
2
|
+
import type { HasAlign, HasDataAttribute, HasRootRef } from '../../types';
|
|
3
3
|
import { type FormFieldProps } from '../FormField/FormField';
|
|
4
|
-
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement>,
|
|
4
|
+
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRootRef<HTMLDivElement>, HasAlign, Omit<FormFieldProps, 'maxHeight'> {
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.
|
|
7
|
+
*/
|
|
8
|
+
getRef?: React.Ref<HTMLInputElement>;
|
|
9
|
+
/**
|
|
10
|
+
* Свойства, которые можно прокинуть внутрь компонента:
|
|
11
|
+
* - `root`: свойства для прокидывания в корень компонента;
|
|
12
|
+
* - `input`: свойства для прокидывания в поле ввода.
|
|
13
|
+
*/
|
|
14
|
+
slotProps?: {
|
|
15
|
+
root?: React.HTMLAttributes<HTMLDivElement> & HasRootRef<HTMLDivElement> & HasDataAttribute;
|
|
16
|
+
input?: React.InputHTMLAttributes<HTMLInputElement> & HasRootRef<HTMLInputElement> & HasDataAttribute;
|
|
17
|
+
};
|
|
5
18
|
}
|
|
6
19
|
/**
|
|
7
20
|
* @see https://vkui.io/components/input
|
|
8
21
|
*/
|
|
9
|
-
export declare const Input: ({ type, align, getRef, className, getRootRef, style, before, after, status, mode, ...restProps }: InputProps) => React.ReactNode;
|
|
22
|
+
export declare const Input: ({ type, align, getRef, className: rootClassName, getRootRef, style, before, after, status, mode, slotProps, ...restProps }: InputProps) => React.ReactNode;
|
|
10
23
|
//# sourceMappingURL=Input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/Input/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAWxE,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACjD,UAAU,CAAC,cAAc,CAAC,EAC1B,QAAQ,EACR,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;IACnC;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;QAC5F,KAAK,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GACjD,UAAU,CAAC,gBAAgB,CAAC,GAC5B,gBAAgB,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,KAAK,GAAI,4HAcnB,UAAU,KAAG,KAAK,CAAC,SA+CrB,CAAC"}
|
|
@@ -6,8 +6,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
6
6
|
import * as React from "react";
|
|
7
7
|
import { classNames } from "@vkontakte/vkjs";
|
|
8
8
|
import { useAdaptivity } from "../../hooks/useAdaptivity.js";
|
|
9
|
+
import { useMergeProps } from "../../hooks/useMergeProps.js";
|
|
10
|
+
import { warnOnce } from "../../lib/warnOnce.js";
|
|
9
11
|
import { FormField } from "../FormField/FormField.js";
|
|
10
12
|
import { UnstyledTextField } from "../UnstyledTextField/UnstyledTextField.js";
|
|
13
|
+
const warn = warnOnce('Input');
|
|
11
14
|
const sizeYClassNames = {
|
|
12
15
|
none: "vkuiInput__sizeYNone",
|
|
13
16
|
compact: "vkuiInput__sizeYCompact"
|
|
@@ -15,7 +18,7 @@ const sizeYClassNames = {
|
|
|
15
18
|
/**
|
|
16
19
|
* @see https://vkui.io/components/input
|
|
17
20
|
*/ export const Input = (_param)=>{
|
|
18
|
-
var { type = 'text', align = 'left', getRef, className, getRootRef, style, before, after, status, mode } = _param, restProps = _object_without_properties(_param, [
|
|
21
|
+
var { type = 'text', align = 'left', getRef, className: rootClassName, getRootRef, style, before, after, status, mode, slotProps } = _param, restProps = _object_without_properties(_param, [
|
|
19
22
|
"type",
|
|
20
23
|
"align",
|
|
21
24
|
"getRef",
|
|
@@ -25,25 +28,37 @@ const sizeYClassNames = {
|
|
|
25
28
|
"before",
|
|
26
29
|
"after",
|
|
27
30
|
"status",
|
|
28
|
-
"mode"
|
|
31
|
+
"mode",
|
|
32
|
+
"slotProps"
|
|
29
33
|
]);
|
|
34
|
+
/* istanbul ignore if: не проверяем в тестах */ if (process.env.NODE_ENV === 'development' && getRef) {
|
|
35
|
+
warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');
|
|
36
|
+
}
|
|
30
37
|
const { sizeY = 'none' } = useAdaptivity();
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
const _useMergeProps = useMergeProps({
|
|
39
|
+
className: rootClassName,
|
|
40
|
+
getRootRef,
|
|
41
|
+
style
|
|
42
|
+
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), { className } = _useMergeProps, rootProps = _object_without_properties(_useMergeProps, [
|
|
43
|
+
"className"
|
|
44
|
+
]);
|
|
45
|
+
const inputRest = useMergeProps(_object_spread({
|
|
46
|
+
className: "vkuiInput__el",
|
|
47
|
+
getRootRef: getRef
|
|
48
|
+
}, restProps), slotProps === null || slotProps === void 0 ? void 0 : slotProps.input);
|
|
49
|
+
return /*#__PURE__*/ _jsx(FormField, _object_spread_props(_object_spread({
|
|
33
50
|
className: classNames("vkuiInput__host", align === 'right' && "vkuiInput__alignRight", align === 'center' && "vkuiInput__alignCenter", sizeY !== 'regular' && sizeYClassNames[sizeY], before && "vkuiInput__hasBefore", after && "vkuiInput__hasAfter", className),
|
|
34
|
-
getRootRef: getRootRef,
|
|
35
51
|
before: before,
|
|
36
52
|
after: after,
|
|
37
|
-
disabled:
|
|
53
|
+
disabled: inputRest.disabled,
|
|
38
54
|
mode: mode,
|
|
39
|
-
status: status
|
|
40
|
-
|
|
55
|
+
status: status
|
|
56
|
+
}, rootProps), {
|
|
57
|
+
children: /*#__PURE__*/ _jsx(UnstyledTextField, _object_spread({
|
|
41
58
|
as: "input",
|
|
42
|
-
type: type
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}))
|
|
46
|
-
});
|
|
59
|
+
type: type
|
|
60
|
+
}, inputRest))
|
|
61
|
+
}));
|
|
47
62
|
};
|
|
48
63
|
|
|
49
64
|
//# sourceMappingURL=Input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport type { HasAlign,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasAlign, HasDataAttribute, HasRootRef } from '../../types';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport { UnstyledTextField } from '../UnstyledTextField/UnstyledTextField';\nimport styles from './Input.module.css';\n\nconst warn = warnOnce('Input');\n\nconst sizeYClassNames = {\n none: styles.sizeYNone,\n compact: styles.sizeYCompact,\n};\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n Omit<FormFieldProps, 'maxHeight'> {\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLInputElement>;\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в поле ввода.\n */\n slotProps?: {\n root?: React.HTMLAttributes<HTMLDivElement> & HasRootRef<HTMLDivElement> & HasDataAttribute;\n input?: React.InputHTMLAttributes<HTMLInputElement> &\n HasRootRef<HTMLInputElement> &\n HasDataAttribute;\n };\n}\n\n/**\n * @see https://vkui.io/components/input\n */\nexport const Input = ({\n type = 'text',\n align = 'left',\n getRef,\n className: rootClassName,\n getRootRef,\n style,\n before,\n after,\n status,\n mode,\n\n slotProps,\n ...restProps\n}: InputProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development' && getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const { className, ...rootProps } = useMergeProps(\n {\n className: rootClassName,\n getRootRef,\n style,\n },\n slotProps?.root,\n );\n\n const inputRest = useMergeProps(\n {\n className: styles.el,\n getRootRef: getRef,\n ...restProps,\n },\n slotProps?.input,\n );\n\n return (\n <FormField\n className={classNames(\n styles.host,\n align === 'right' && styles.alignRight,\n align === 'center' && styles.alignCenter,\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n before && styles.hasBefore,\n after && styles.hasAfter,\n className,\n )}\n before={before}\n after={after}\n disabled={inputRest.disabled}\n mode={mode}\n status={status}\n {...rootProps}\n >\n <UnstyledTextField as=\"input\" type={type} {...inputRest} />\n </FormField>\n );\n};\n"],"names":["React","classNames","useAdaptivity","useMergeProps","warnOnce","FormField","UnstyledTextField","warn","sizeYClassNames","none","compact","Input","type","align","getRef","className","rootClassName","getRootRef","style","before","after","status","mode","slotProps","restProps","process","env","NODE_ENV","sizeY","root","rootProps","inputRest","input","disabled","as"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,SAAS,QAA6B,4BAAyB;AACxE,SAASC,iBAAiB,QAAQ,4CAAyC;AAG3E,MAAMC,OAAOH,SAAS;AAEtB,MAAMI,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AAwBA;;CAEC,GACD,OAAO,MAAMC,QAAQ;QAAC,EACpBC,OAAO,MAAM,EACbC,QAAQ,MAAM,EACdC,MAAM,EACNC,WAAWC,aAAa,EACxBC,UAAU,EACVC,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,IAAI,EAEJC,SAAS,EAEE,WADRC;QAZHZ;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;;IAGA,6CAA6C,GAC7C,IAAIE,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiBb,QAAQ;QACpDP,KAAK;IACP;IAEA,MAAM,EAAEqB,QAAQ,MAAM,EAAE,GAAG1B;IAE3B,MAAoCC,iBAAAA,cAClC;QACEY,WAAWC;QACXC;QACAC;IACF,GACAK,sBAAAA,gCAAAA,UAAWM,IAAI,GANX,EAAEd,SAAS,EAAgB,GAAGZ,gBAAd2B,uCAAc3B;QAA5BY;;IASR,MAAMgB,YAAY5B,cAChB;QACEY,SAAS;QACTE,YAAYH;OACTU,YAELD,sBAAAA,gCAAAA,UAAWS,KAAK;IAGlB,qBACE,KAAC3B;QACCU,WAAWd,8BAETY,UAAU,oCACVA,UAAU,sCACVe,UAAU,aAAapB,eAAe,CAACoB,MAAM,EAC7CT,kCACAC,gCACAL;QAEFI,QAAQA;QACRC,OAAOA;QACPa,UAAUF,UAAUE,QAAQ;QAC5BX,MAAMA;QACND,QAAQA;OACJS;kBAEJ,cAAA,KAACxB;YAAkB4B,IAAG;YAAQtB,MAAMA;WAAUmB;;AAGpD,EAAE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ChangeEvent } from 'react';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import type { HasAlign,
|
|
3
|
+
import type { HasAlign, HasDataAttribute, HasRootRef } from '../../types';
|
|
4
4
|
import { type FormFieldProps } from '../FormField/FormField';
|
|
5
5
|
import type { SelectType } from '../Select/Select';
|
|
6
6
|
export type SelectValue = Exclude<React.SelectHTMLAttributes<HTMLSelectElement>['value'], undefined> | null;
|
|
@@ -14,7 +14,21 @@ export declare const NOT_SELECTED: {
|
|
|
14
14
|
*/
|
|
15
15
|
export declare const remapFromSelectValueToNativeValue: (value: SelectValue) => NativeSelectValue;
|
|
16
16
|
export declare const remapFromNativeValueToSelectValue: (value: NativeSelectValue) => SelectValue;
|
|
17
|
-
export
|
|
17
|
+
export type NativeHTMLSelectProps = Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'multiple' | 'value' | 'defaultValue' | 'onChange'>;
|
|
18
|
+
export interface NativeSelectProps extends NativeHTMLSelectProps, HasRootRef<HTMLDivElement>, HasAlign, Pick<FormFieldProps, 'before' | 'status'> {
|
|
19
|
+
/**
|
|
20
|
+
* Свойства, которые можно прокинуть внутрь компонента:
|
|
21
|
+
* - `root`: свойства для прокидывания в корень компонента;
|
|
22
|
+
* - `select`: свойства для прокидывания в нативный `select`.
|
|
23
|
+
*/
|
|
24
|
+
slotProps?: {
|
|
25
|
+
root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> & HasDataAttribute & HasRootRef<HTMLDivElement>;
|
|
26
|
+
select?: NativeHTMLSelectProps & HasRootRef<HTMLSelectElement> & HasDataAttribute;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ select: { getRootRef: ... } }`.
|
|
30
|
+
*/
|
|
31
|
+
getRef?: React.Ref<HTMLSelectElement>;
|
|
18
32
|
/**
|
|
19
33
|
* Выбранное значение.
|
|
20
34
|
*
|
|
@@ -54,5 +68,5 @@ export interface NativeSelectProps extends Omit<React.SelectHTMLAttributes<HTMLS
|
|
|
54
68
|
/**
|
|
55
69
|
* @see https://vkui.io/components/native-select
|
|
56
70
|
*/
|
|
57
|
-
export declare const NativeSelect: ({ style
|
|
71
|
+
export declare const NativeSelect: ({ style: rootStyle, className: rootClassName, getRootRef: rootGetRootRef, align, placeholder, children, getRef, multiline, selectType, status, icon, before, onChange, value, defaultValue, slotProps, ...restProps }: NativeSelectProps) => React.ReactNode;
|
|
58
72
|
//# sourceMappingURL=NativeSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeSelect.d.ts","sourceRoot":"","sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeSelect.d.ts","sourceRoot":"","sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,OAAO,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAWnD,MAAM,MAAM,WAAW,GAAG,OAAO,CAC/B,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EACtD,SAAS,CACV,GAAG,IAAI,CAAC;AAET,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAE3D,eAAO,MAAM,YAAY;;;CAGxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iCAAiC,GAAI,OAAO,WAAW,KAAG,iBACV,CAAC;AAE9D,eAAO,MAAM,iCAAiC,GAAI,OAAO,iBAAiB,KAAG,WAChB,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAC7C,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,CACnD,CAAC;AAEF,MAAM,WAAW,iBACf,SAAQ,qBAAqB,EAC3B,UAAU,CAAC,cAAc,CAAC,EAC1B,QAAQ,EACR,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3C;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAC3D,gBAAgB,GAChB,UAAU,CAAC,cAAc,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,qBAAqB,GAAG,UAAU,CAAC,iBAAiB,CAAC,GAAG,gBAAgB,CAAC;KACnF,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACtC;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9E;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,uNAmB1B,iBAAiB,KAAG,KAAK,CAAC,SAwF5B,CAAC"}
|
|
@@ -7,12 +7,16 @@ import * as React from "react";
|
|
|
7
7
|
import { classNames } from "@vkontakte/vkjs";
|
|
8
8
|
import { useAdaptivity } from "../../hooks/useAdaptivity.js";
|
|
9
9
|
import { useExternRef } from "../../hooks/useExternRef.js";
|
|
10
|
+
import { useMergeProps } from "../../hooks/useMergeProps.js";
|
|
10
11
|
import { callMultiple } from "../../lib/callMultiple.js";
|
|
11
12
|
import { getFormFieldModeFromSelectType } from "../../lib/select.js";
|
|
12
13
|
import { useIsomorphicLayoutEffect } from "../../lib/useIsomorphicLayoutEffect.js";
|
|
14
|
+
import { warnOnce } from "../../lib/warnOnce.js";
|
|
13
15
|
import { DropdownIcon } from "../DropdownIcon/DropdownIcon.js";
|
|
14
16
|
import { FormField } from "../FormField/FormField.js";
|
|
17
|
+
import { RootComponent } from "../RootComponent/RootComponent.js";
|
|
15
18
|
import { SelectTypography } from "../SelectTypography/SelectTypography.js";
|
|
19
|
+
const warn = warnOnce('NativeSelect');
|
|
16
20
|
const sizeYClassNames = {
|
|
17
21
|
none: "vkuiSelect__sizeYNone",
|
|
18
22
|
compact: "vkuiSelect__sizeYCompact"
|
|
@@ -28,15 +32,14 @@ export const remapFromNativeValueToSelectValue = (value)=>value === NOT_SELECTED
|
|
|
28
32
|
/**
|
|
29
33
|
* @see https://vkui.io/components/native-select
|
|
30
34
|
*/ export const NativeSelect = (_param)=>{
|
|
31
|
-
var { style
|
|
35
|
+
var { style: rootStyle, className: rootClassName, getRootRef: rootGetRootRef, align, placeholder, children, getRef, multiline, selectType = 'default', status, icon = /*#__PURE__*/ _jsx(DropdownIcon, {}), before, onChange, value, defaultValue, slotProps } = _param, restProps = _object_without_properties(_param, [
|
|
32
36
|
"style",
|
|
37
|
+
"className",
|
|
38
|
+
"getRootRef",
|
|
33
39
|
"align",
|
|
34
40
|
"placeholder",
|
|
35
41
|
"children",
|
|
36
|
-
"className",
|
|
37
42
|
"getRef",
|
|
38
|
-
"getRootRef",
|
|
39
|
-
"disabled",
|
|
40
43
|
"multiline",
|
|
41
44
|
"selectType",
|
|
42
45
|
"status",
|
|
@@ -44,12 +47,30 @@ export const remapFromNativeValueToSelectValue = (value)=>value === NOT_SELECTED
|
|
|
44
47
|
"before",
|
|
45
48
|
"onChange",
|
|
46
49
|
"value",
|
|
47
|
-
"defaultValue"
|
|
50
|
+
"defaultValue",
|
|
51
|
+
"slotProps"
|
|
48
52
|
]);
|
|
53
|
+
/* istanbul ignore if: не проверяем в тестах */ if (process.env.NODE_ENV === 'development' && getRef) {
|
|
54
|
+
warn('Свойство `getRef` устаревшее, используйте `slotProps={ select: { getRootRef: ... } }`');
|
|
55
|
+
}
|
|
49
56
|
const [title, setTitle] = React.useState('');
|
|
50
57
|
const [empty, setEmpty] = React.useState(false);
|
|
51
|
-
const selectRef = useExternRef(getRef);
|
|
52
58
|
const { sizeY = 'none' } = useAdaptivity();
|
|
59
|
+
const _useMergeProps = useMergeProps({
|
|
60
|
+
style: rootStyle,
|
|
61
|
+
className: rootClassName,
|
|
62
|
+
getRootRef: rootGetRootRef
|
|
63
|
+
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.root), { className, style, getRootRef } = _useMergeProps, rootRest = _object_without_properties(_useMergeProps, [
|
|
64
|
+
"className",
|
|
65
|
+
"style",
|
|
66
|
+
"getRootRef"
|
|
67
|
+
]);
|
|
68
|
+
const _useMergeProps1 = useMergeProps(_object_spread({
|
|
69
|
+
getRootRef: getRef
|
|
70
|
+
}, restProps), slotProps === null || slotProps === void 0 ? void 0 : slotProps.select), { getRootRef: getSelectRef } = _useMergeProps1, selectRest = _object_without_properties(_useMergeProps1, [
|
|
71
|
+
"getRootRef"
|
|
72
|
+
]);
|
|
73
|
+
const selectRef = useExternRef(getSelectRef);
|
|
53
74
|
const checkSelectedOption = ()=>{
|
|
54
75
|
var _selectRef_current;
|
|
55
76
|
const selectedOption = (_selectRef_current = selectRef.current) === null || _selectRef_current === void 0 ? void 0 : _selectRef_current.options[selectRef.current.selectedIndex];
|
|
@@ -71,24 +92,26 @@ export const remapFromNativeValueToSelectValue = (value)=>value === NOT_SELECTED
|
|
|
71
92
|
useIsomorphicLayoutEffect(checkSelectedOption, [
|
|
72
93
|
children
|
|
73
94
|
]);
|
|
74
|
-
return /*#__PURE__*/ _jsxs(FormField, {
|
|
95
|
+
return /*#__PURE__*/ _jsxs(FormField, _object_spread_props(_object_spread({
|
|
75
96
|
Component: "div",
|
|
76
97
|
className: classNames("vkuiSelect__host", 'vkuiInternalNativeSelect', before && "vkuiSelect__hasBefore", empty && "vkuiSelect__empty", multiline && "vkuiSelect__multiline", align === 'center' && "vkuiSelect__alignCenter", align === 'right' && "vkuiSelect__alignRight", sizeY !== 'regular' && sizeYClassNames[sizeY], className),
|
|
77
98
|
style: style,
|
|
78
99
|
getRootRef: getRootRef,
|
|
79
|
-
disabled: disabled,
|
|
100
|
+
disabled: selectRest.disabled,
|
|
80
101
|
before: before,
|
|
81
102
|
after: icon,
|
|
82
103
|
status: status,
|
|
83
|
-
mode: getFormFieldModeFromSelectType(selectType)
|
|
104
|
+
mode: getFormFieldModeFromSelectType(selectType)
|
|
105
|
+
}, rootRest), {
|
|
84
106
|
children: [
|
|
85
|
-
/*#__PURE__*/ _jsxs(
|
|
107
|
+
/*#__PURE__*/ _jsxs(RootComponent, _object_spread_props(_object_spread({
|
|
108
|
+
Component: "select",
|
|
109
|
+
baseClassName: "vkuiSelect__el",
|
|
86
110
|
value: value !== undefined ? remapFromSelectValueToNativeValue(value) : value,
|
|
87
111
|
defaultValue: defaultValue !== undefined ? remapFromSelectValueToNativeValue(defaultValue) : defaultValue,
|
|
88
|
-
disabled: disabled,
|
|
89
|
-
className: "vkuiSelect__el",
|
|
90
112
|
onChange: callMultiple(_onChange, checkSelectedOption),
|
|
91
|
-
|
|
113
|
+
getRootRef: selectRef
|
|
114
|
+
}, selectRest), {
|
|
92
115
|
children: [
|
|
93
116
|
placeholder && /*#__PURE__*/ _jsx("option", {
|
|
94
117
|
value: NOT_SELECTED.NATIVE,
|
|
@@ -107,7 +130,7 @@ export const remapFromNativeValueToSelectValue = (value)=>value === NOT_SELECTED
|
|
|
107
130
|
})
|
|
108
131
|
})
|
|
109
132
|
]
|
|
110
|
-
});
|
|
133
|
+
}));
|
|
111
134
|
};
|
|
112
135
|
|
|
113
136
|
//# sourceMappingURL=NativeSelect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"sourcesContent":["'use client';\n\nimport { type ChangeEvent, type ChangeEventHandler } from 'react';\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { getFormFieldModeFromSelectType } from '../../lib/select';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport type { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles.sizeYNone,\n compact: styles.sizeYCompact,\n};\n\nexport type SelectValue = Exclude<\n React.SelectHTMLAttributes<HTMLSelectElement>['value'],\n undefined\n> | null;\n\nexport type NativeSelectValue = Exclude<SelectValue, null>;\n\nexport const NOT_SELECTED = {\n NATIVE: '__vkui_internal_Select_not_selected__',\n CUSTOM: null,\n};\n\n/**\n * @visibleName NativeSelect\n */\nexport const remapFromSelectValueToNativeValue = (value: SelectValue): NativeSelectValue =>\n value === NOT_SELECTED.CUSTOM ? NOT_SELECTED.NATIVE : value;\n\nexport const remapFromNativeValueToSelectValue = (value: NativeSelectValue): SelectValue =>\n value === NOT_SELECTED.NATIVE ? NOT_SELECTED.CUSTOM : value;\n\nexport interface NativeSelectProps\n extends Omit<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n 'multiple' | 'value' | 'defaultValue' | 'onChange'\n >,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n Pick<FormFieldProps, 'before' | 'status'> {\n /**\n * Выбранное значение.\n *\n * > ⚠️ Важно: При прокидывании `undefined` компонент будет считаться `Uncontrolled`.\n * >\n * > Не используйте `undefined`, чтобы показать невыбранное состояние. Вместо этого используйте `null`.\n */\n value?: SelectValue;\n /**\n * См. `value`.\n */\n defaultValue?: SelectValue;\n /**\n * Обработчик, срабатывающий при изменении выбранного значения.\n * Вторым параметром прокидывается новое значение.\n *\n * > ⚠️ Лучше использовать второй параметр при работе с компонентом.\n */\n onChange?: (e: ChangeEvent<HTMLSelectElement>, newValue: SelectValue) => void;\n /**\n * Текст-подсказка при отсутствии выбранного значения.\n */\n placeholder?: string;\n /**\n * Флаг для включения многострочного режима.\n */\n multiline?: boolean;\n /**\n * Тип селекта, влияющий на отображение.\n */\n selectType?: SelectType;\n /**\n * Иконка раскрывающегося списка.\n */\n icon?: React.ReactNode;\n}\n\n/**\n * @see https://vkui.io/components/native-select\n */\nexport const NativeSelect = ({\n style,\n align,\n placeholder,\n children,\n className,\n getRef,\n getRootRef,\n disabled,\n multiline,\n selectType = 'default',\n status,\n icon = <DropdownIcon />,\n before,\n onChange,\n value,\n defaultValue,\n ...restProps\n}: NativeSelectProps): React.ReactNode => {\n const [title, setTitle] = React.useState('');\n const [empty, setEmpty] = React.useState(false);\n const selectRef = useExternRef(getRef);\n const { sizeY = 'none' } = useAdaptivity();\n\n const checkSelectedOption = () => {\n const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setEmpty(selectedOption.value === NOT_SELECTED.NATIVE && placeholder != null);\n }\n };\n\n const _onChange: ChangeEventHandler<HTMLSelectElement> = (e) => {\n const newValue = remapFromNativeValueToSelectValue(e.target.value);\n if (e.target.value === NOT_SELECTED.NATIVE) {\n e.target.value = '';\n }\n if (e.currentTarget.value === NOT_SELECTED.NATIVE) {\n e.currentTarget.value = '';\n }\n onChange?.(e, newValue);\n };\n useIsomorphicLayoutEffect(checkSelectedOption, [children]);\n\n return (\n <FormField\n Component=\"div\"\n className={classNames(\n styles.host,\n 'vkuiInternalNativeSelect',\n before && styles.hasBefore,\n empty && styles.empty,\n multiline && styles.multiline,\n align === 'center' && styles.alignCenter,\n align === 'right' && styles.alignRight,\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n className,\n )}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n before={before}\n after={icon}\n status={status}\n mode={getFormFieldModeFromSelectType(selectType)}\n >\n <select\n {...restProps}\n value={value !== undefined ? remapFromSelectValueToNativeValue(value) : value}\n defaultValue={\n defaultValue !== undefined\n ? remapFromSelectValueToNativeValue(defaultValue)\n : defaultValue\n }\n disabled={disabled}\n className={styles.el}\n onChange={callMultiple(_onChange, checkSelectedOption)}\n ref={selectRef}\n >\n {placeholder && <option value={NOT_SELECTED.NATIVE}>{placeholder}</option>}\n {children}\n </select>\n <div className={styles.container} aria-hidden>\n <SelectTypography className={styles.title} selectType={selectType}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n"],"names":["React","classNames","useAdaptivity","useExternRef","callMultiple","getFormFieldModeFromSelectType","useIsomorphicLayoutEffect","DropdownIcon","FormField","SelectTypography","sizeYClassNames","none","compact","NOT_SELECTED","NATIVE","CUSTOM","remapFromSelectValueToNativeValue","value","remapFromNativeValueToSelectValue","NativeSelect","style","align","placeholder","children","className","getRef","getRootRef","disabled","multiline","selectType","status","icon","before","onChange","defaultValue","restProps","title","setTitle","useState","empty","setEmpty","selectRef","sizeY","checkSelectedOption","selectedOption","current","options","selectedIndex","text","_onChange","e","newValue","target","currentTarget","Component","after","mode","select","undefined","ref","option","div","aria-hidden"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"sourcesContent":["'use client';\n\nimport { type ChangeEvent, type ChangeEventHandler } from 'react';\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { getFormFieldModeFromSelectType } from '../../lib/select';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasAlign, HasDataAttribute, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst warn = warnOnce('NativeSelect');\n\nconst sizeYClassNames = {\n none: styles.sizeYNone,\n compact: styles.sizeYCompact,\n};\n\nexport type SelectValue = Exclude<\n React.SelectHTMLAttributes<HTMLSelectElement>['value'],\n undefined\n> | null;\n\nexport type NativeSelectValue = Exclude<SelectValue, null>;\n\nexport const NOT_SELECTED = {\n NATIVE: '__vkui_internal_Select_not_selected__',\n CUSTOM: null,\n};\n\n/**\n * @visibleName NativeSelect\n */\nexport const remapFromSelectValueToNativeValue = (value: SelectValue): NativeSelectValue =>\n value === NOT_SELECTED.CUSTOM ? NOT_SELECTED.NATIVE : value;\n\nexport const remapFromNativeValueToSelectValue = (value: NativeSelectValue): SelectValue =>\n value === NOT_SELECTED.NATIVE ? NOT_SELECTED.CUSTOM : value;\n\nexport type NativeHTMLSelectProps = Omit<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n 'multiple' | 'value' | 'defaultValue' | 'onChange'\n>;\n\nexport interface NativeSelectProps\n extends NativeHTMLSelectProps,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n Pick<FormFieldProps, 'before' | 'status'> {\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `select`: свойства для прокидывания в нативный `select`.\n */\n slotProps?: {\n root?: Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> &\n HasDataAttribute &\n HasRootRef<HTMLDivElement>;\n select?: NativeHTMLSelectProps & HasRootRef<HTMLSelectElement> & HasDataAttribute;\n };\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ select: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLSelectElement>;\n /**\n * Выбранное значение.\n *\n * > ⚠️ Важно: При прокидывании `undefined` компонент будет считаться `Uncontrolled`.\n * >\n * > Не используйте `undefined`, чтобы показать невыбранное состояние. Вместо этого используйте `null`.\n */\n value?: SelectValue;\n /**\n * См. `value`.\n */\n defaultValue?: SelectValue;\n /**\n * Обработчик, срабатывающий при изменении выбранного значения.\n * Вторым параметром прокидывается новое значение.\n *\n * > ⚠️ Лучше использовать второй параметр при работе с компонентом.\n */\n onChange?: (e: ChangeEvent<HTMLSelectElement>, newValue: SelectValue) => void;\n /**\n * Текст-подсказка при отсутствии выбранного значения.\n */\n placeholder?: string;\n /**\n * Флаг для включения многострочного режима.\n */\n multiline?: boolean;\n /**\n * Тип селекта, влияющий на отображение.\n */\n selectType?: SelectType;\n /**\n * Иконка раскрывающегося списка.\n */\n icon?: React.ReactNode;\n}\n\n/**\n * @see https://vkui.io/components/native-select\n */\nexport const NativeSelect = ({\n style: rootStyle,\n className: rootClassName,\n getRootRef: rootGetRootRef,\n align,\n placeholder,\n children,\n getRef,\n multiline,\n selectType = 'default',\n status,\n icon = <DropdownIcon />,\n before,\n onChange,\n value,\n defaultValue,\n\n slotProps,\n ...restProps\n}: NativeSelectProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development' && getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ select: { getRootRef: ... } }`');\n }\n\n const [title, setTitle] = React.useState('');\n const [empty, setEmpty] = React.useState(false);\n const { sizeY = 'none' } = useAdaptivity();\n\n const { className, style, getRootRef, ...rootRest } = useMergeProps(\n { style: rootStyle, className: rootClassName, getRootRef: rootGetRootRef },\n slotProps?.root,\n );\n\n const { getRootRef: getSelectRef, ...selectRest } = useMergeProps(\n { getRootRef: getRef, ...restProps },\n slotProps?.select,\n );\n\n const selectRef = useExternRef(getSelectRef);\n\n const checkSelectedOption = () => {\n const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setEmpty(selectedOption.value === NOT_SELECTED.NATIVE && placeholder != null);\n }\n };\n\n const _onChange: ChangeEventHandler<HTMLSelectElement> = (e) => {\n const newValue = remapFromNativeValueToSelectValue(e.target.value);\n if (e.target.value === NOT_SELECTED.NATIVE) {\n e.target.value = '';\n }\n if (e.currentTarget.value === NOT_SELECTED.NATIVE) {\n e.currentTarget.value = '';\n }\n onChange?.(e, newValue);\n };\n useIsomorphicLayoutEffect(checkSelectedOption, [children]);\n\n return (\n <FormField\n Component=\"div\"\n className={classNames(\n styles.host,\n 'vkuiInternalNativeSelect',\n before && styles.hasBefore,\n empty && styles.empty,\n multiline && styles.multiline,\n align === 'center' && styles.alignCenter,\n align === 'right' && styles.alignRight,\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n className,\n )}\n style={style}\n getRootRef={getRootRef}\n disabled={selectRest.disabled}\n before={before}\n after={icon}\n status={status}\n mode={getFormFieldModeFromSelectType(selectType)}\n {...rootRest}\n >\n <RootComponent\n Component=\"select\"\n baseClassName={styles.el}\n value={value !== undefined ? remapFromSelectValueToNativeValue(value) : value}\n defaultValue={\n defaultValue !== undefined\n ? remapFromSelectValueToNativeValue(defaultValue)\n : defaultValue\n }\n onChange={callMultiple(_onChange, checkSelectedOption)}\n getRootRef={selectRef}\n {...selectRest}\n >\n {placeholder && <option value={NOT_SELECTED.NATIVE}>{placeholder}</option>}\n {children}\n </RootComponent>\n <div className={styles.container} aria-hidden>\n <SelectTypography className={styles.title} selectType={selectType}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n"],"names":["React","classNames","useAdaptivity","useExternRef","useMergeProps","callMultiple","getFormFieldModeFromSelectType","useIsomorphicLayoutEffect","warnOnce","DropdownIcon","FormField","RootComponent","SelectTypography","warn","sizeYClassNames","none","compact","NOT_SELECTED","NATIVE","CUSTOM","remapFromSelectValueToNativeValue","value","remapFromNativeValueToSelectValue","NativeSelect","style","rootStyle","className","rootClassName","getRootRef","rootGetRootRef","align","placeholder","children","getRef","multiline","selectType","status","icon","before","onChange","defaultValue","slotProps","restProps","process","env","NODE_ENV","title","setTitle","useState","empty","setEmpty","sizeY","root","rootRest","select","getSelectRef","selectRest","selectRef","checkSelectedOption","selectedOption","current","options","selectedIndex","text","_onChange","e","newValue","target","currentTarget","Component","disabled","after","mode","baseClassName","undefined","option","div","aria-hidden"],"mappings":"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"}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { HasDataAttribute,
|
|
2
|
+
import type { HasDataAttribute, HasRootRef } from '../../types';
|
|
3
3
|
import type { TappableOmitProps } from '../Tappable/Tappable';
|
|
4
4
|
import { RadioInput } from './RadioInput/RadioInput';
|
|
5
|
-
export interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement>,
|
|
5
|
+
export interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRootRef<HTMLLabelElement>, Pick<TappableOmitProps, 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'> {
|
|
6
|
+
/**
|
|
7
|
+
* Свойства, которые можно прокинуть внутрь компонента:
|
|
8
|
+
* - `root`: свойства для прокидывания в корень компонента;
|
|
9
|
+
* - `input`: свойства для прокидывания в скрытый `input`.
|
|
10
|
+
*/
|
|
11
|
+
slotProps?: {
|
|
12
|
+
root?: Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'children'> & HasRootRef<HTMLLabelElement> & HasDataAttribute;
|
|
13
|
+
input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.
|
|
17
|
+
*/
|
|
18
|
+
getRef?: React.Ref<HTMLInputElement>;
|
|
6
19
|
/**
|
|
7
20
|
* Дополнительное описание под основным текстом.
|
|
8
21
|
*/
|
|
@@ -12,6 +25,8 @@ export interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement>,
|
|
|
12
25
|
*/
|
|
13
26
|
titleAfter?: React.ReactNode;
|
|
14
27
|
/**
|
|
28
|
+
* @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ root: {...} }`.
|
|
29
|
+
*
|
|
15
30
|
* Позволяет передавать data-* аттрибуты элементу label.
|
|
16
31
|
**/
|
|
17
32
|
labelProps?: HasDataAttribute;
|
|
@@ -20,7 +35,7 @@ export interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement>,
|
|
|
20
35
|
* @see https://vkui.io/components/radio
|
|
21
36
|
*/
|
|
22
37
|
export declare const Radio: {
|
|
23
|
-
({ children, description, style, className, getRootRef, titleAfter, getRef, labelProps, hoverMode, activeMode, hasHover, hasActive, focusVisibleMode, ...restProps }: RadioProps): React.ReactNode;
|
|
38
|
+
({ children, description, style, className, getRootRef, titleAfter, getRef, labelProps, hoverMode, activeMode, hasHover, hasActive, focusVisibleMode, slotProps, ...restProps }: RadioProps): React.ReactNode;
|
|
24
39
|
Input: typeof RadioInput;
|
|
25
40
|
};
|
|
26
41
|
//# sourceMappingURL=Radio.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/components/Radio/Radio.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/components/Radio/Radio.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAKrD,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACjD,UAAU,CAAC,gBAAgB,CAAC,EAC5B,IAAI,CACF,iBAAiB,EACjB,WAAW,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,GAAG,kBAAkB,CAC3E;IACH;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,GAClE,UAAU,CAAC,gBAAgB,CAAC,GAC5B,gBAAgB,CAAC;QACnB,KAAK,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;KACzF,CAAC;IACF;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;;;QAII;IACJ,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;qLAiBf,UAAU,GAAG,KAAK,CAAC,SAAS;;CAuC9B,CAAC"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
2
3
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
3
4
|
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
4
5
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
6
|
import * as React from "react";
|
|
6
7
|
import { classNames } from "@vkontakte/vkjs";
|
|
8
|
+
import { useMergeProps } from "../../hooks/useMergeProps.js";
|
|
9
|
+
import { warnOnce } from "../../lib/warnOnce.js";
|
|
7
10
|
import { SelectionControl } from "../SelectionControl/SelectionControl.js";
|
|
8
11
|
import { SelectionControlLabel } from "../SelectionControl/SelectionControlLabel/SelectionControlLabel.js";
|
|
9
12
|
import { RadioInput } from "./RadioInput/RadioInput.js";
|
|
13
|
+
const warn = warnOnce('Radio');
|
|
10
14
|
/**
|
|
11
15
|
* @see https://vkui.io/components/radio
|
|
12
16
|
*/ export const Radio = (_param)=>{
|
|
13
|
-
var { children, description, style, className, getRootRef, titleAfter, getRef, labelProps, hoverMode, activeMode, hasHover, hasActive, focusVisibleMode } = _param, restProps = _object_without_properties(_param, [
|
|
17
|
+
var { children, description, style, className, getRootRef, titleAfter, getRef, labelProps, hoverMode, activeMode, hasHover, hasActive, focusVisibleMode, slotProps } = _param, restProps = _object_without_properties(_param, [
|
|
14
18
|
"children",
|
|
15
19
|
"description",
|
|
16
20
|
"style",
|
|
@@ -23,23 +27,39 @@ import { RadioInput } from "./RadioInput/RadioInput.js";
|
|
|
23
27
|
"activeMode",
|
|
24
28
|
"hasHover",
|
|
25
29
|
"hasActive",
|
|
26
|
-
"focusVisibleMode"
|
|
30
|
+
"focusVisibleMode",
|
|
31
|
+
"slotProps"
|
|
27
32
|
]);
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
/* istanbul ignore if: не проверяем в тестах */ if (process.env.NODE_ENV === 'development') {
|
|
34
|
+
if (labelProps) {
|
|
35
|
+
warn('Свойство `labelProps` устаревшее, используйте `slotProps={ root: {...} }`');
|
|
36
|
+
}
|
|
37
|
+
if (getRef) {
|
|
38
|
+
warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const rootProps = useMergeProps(_object_spread({
|
|
42
|
+
style,
|
|
30
43
|
className: classNames("vkuiRadio__host", className),
|
|
31
|
-
|
|
32
|
-
|
|
44
|
+
getRootRef
|
|
45
|
+
}, labelProps), slotProps === null || slotProps === void 0 ? void 0 : slotProps.root);
|
|
46
|
+
const inputRest = useMergeProps(_object_spread({
|
|
47
|
+
getRootRef: getRef
|
|
48
|
+
}, restProps), slotProps === null || slotProps === void 0 ? void 0 : slotProps.input);
|
|
49
|
+
return /*#__PURE__*/ _jsxs(SelectionControl, _object_spread_props(_object_spread({
|
|
33
50
|
hoverMode: hoverMode,
|
|
34
51
|
activeMode: activeMode,
|
|
35
52
|
hasHover: hasHover,
|
|
36
53
|
hasActive: hasActive,
|
|
37
|
-
focusVisibleMode: focusVisibleMode
|
|
38
|
-
|
|
54
|
+
focusVisibleMode: focusVisibleMode,
|
|
55
|
+
disabled: inputRest.disabled
|
|
56
|
+
}, rootProps), {
|
|
39
57
|
children: [
|
|
40
|
-
/*#__PURE__*/ _jsx(RadioInput,
|
|
41
|
-
|
|
42
|
-
|
|
58
|
+
/*#__PURE__*/ _jsx(RadioInput, {
|
|
59
|
+
slotProps: {
|
|
60
|
+
input: inputRest
|
|
61
|
+
}
|
|
62
|
+
}),
|
|
43
63
|
/*#__PURE__*/ _jsx(SelectionControlLabel, {
|
|
44
64
|
titleAfter: titleAfter,
|
|
45
65
|
description: description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Radio/Radio.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Radio/Radio.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useMergeProps } from '../../hooks/useMergeProps';\nimport { warnOnce } from '../../lib/warnOnce';\nimport type { HasDataAttribute, HasRootRef } from '../../types';\nimport { SelectionControl } from '../SelectionControl/SelectionControl';\nimport { SelectionControlLabel } from '../SelectionControl/SelectionControlLabel/SelectionControlLabel';\nimport type { TappableOmitProps } from '../Tappable/Tappable';\nimport { RadioInput } from './RadioInput/RadioInput';\nimport styles from './Radio.module.css';\n\nconst warn = warnOnce('Radio');\n\nexport interface RadioProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRootRef<HTMLLabelElement>,\n Pick<\n TappableOmitProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'\n > {\n /**\n * Свойства, которые можно прокинуть внутрь компонента:\n * - `root`: свойства для прокидывания в корень компонента;\n * - `input`: свойства для прокидывания в скрытый `input`.\n */\n slotProps?: {\n root?: Omit<React.LabelHTMLAttributes<HTMLLabelElement>, 'children'> &\n HasRootRef<HTMLLabelElement> &\n HasDataAttribute;\n input?: React.ComponentProps<'input'> & HasRootRef<HTMLInputElement> & HasDataAttribute;\n };\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ input: { getRootRef: ... } }`.\n */\n getRef?: React.Ref<HTMLInputElement>;\n /**\n * Дополнительное описание под основным текстом.\n */\n description?: React.ReactNode;\n /**\n * Элемент после основного текста.\n */\n titleAfter?: React.ReactNode;\n /**\n * @deprecated Since 7.9.0. Вместо этого используйте `slotProps={ root: {...} }`.\n *\n * Позволяет передавать data-* аттрибуты элементу label.\n **/\n labelProps?: HasDataAttribute;\n}\n\n/**\n * @see https://vkui.io/components/radio\n */\nexport const Radio = ({\n children,\n description,\n style,\n className,\n getRootRef,\n titleAfter,\n getRef,\n labelProps,\n hoverMode,\n activeMode,\n hasHover,\n hasActive,\n focusVisibleMode,\n\n slotProps,\n ...restProps\n}: RadioProps): React.ReactNode => {\n /* istanbul ignore if: не проверяем в тестах */\n if (process.env.NODE_ENV === 'development') {\n if (labelProps) {\n warn('Свойство `labelProps` устаревшее, используйте `slotProps={ root: {...} }`');\n }\n if (getRef) {\n warn('Свойство `getRef` устаревшее, используйте `slotProps={ input: { getRootRef: ... } }`');\n }\n }\n\n const rootProps = useMergeProps(\n {\n style,\n className: classNames(styles.host, className),\n getRootRef,\n ...labelProps,\n },\n slotProps?.root,\n );\n\n const inputRest = useMergeProps({ getRootRef: getRef, ...restProps }, slotProps?.input);\n\n return (\n <SelectionControl\n hoverMode={hoverMode}\n activeMode={activeMode}\n hasHover={hasHover}\n hasActive={hasActive}\n focusVisibleMode={focusVisibleMode}\n disabled={inputRest.disabled}\n {...rootProps}\n >\n <RadioInput slotProps={{ input: inputRest }} />\n <SelectionControlLabel titleAfter={titleAfter} description={description}>\n {children}\n </SelectionControlLabel>\n </SelectionControl>\n );\n};\n\nRadio.Input = RadioInput;\n"],"names":["React","classNames","useMergeProps","warnOnce","SelectionControl","SelectionControlLabel","RadioInput","warn","Radio","children","description","style","className","getRootRef","titleAfter","getRef","labelProps","hoverMode","activeMode","hasHover","hasActive","focusVisibleMode","slotProps","restProps","process","env","NODE_ENV","rootProps","root","inputRest","input","disabled","Input"],"mappings":"AAAA;;;;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAQ,wBAAqB;AAE9C,SAASC,gBAAgB,QAAQ,0CAAuC;AACxE,SAASC,qBAAqB,QAAQ,qEAAkE;AAExG,SAASC,UAAU,QAAQ,6BAA0B;AAGrD,MAAMC,OAAOJ,SAAS;AAwCtB;;CAEC,GACD,OAAO,MAAMK,QAAQ;QAAC,EACpBC,QAAQ,EACRC,WAAW,EACXC,KAAK,EACLC,SAAS,EACTC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,gBAAgB,EAEhBC,SAAS,EAEE,WADRC;QAfHd;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QAEAC;;IAGA,6CAA6C,GAC7C,IAAIE,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C,IAAIV,YAAY;YACdT,KAAK;QACP;QACA,IAAIQ,QAAQ;YACVR,KAAK;QACP;IACF;IAEA,MAAMoB,YAAYzB,cAChB;QACES;QACAC,WAAWX,8BAAwBW;QACnCC;OACGG,aAELM,sBAAAA,gCAAAA,UAAWM,IAAI;IAGjB,MAAMC,YAAY3B,cAAc;QAAEW,YAAYE;OAAWQ,YAAaD,sBAAAA,gCAAAA,UAAWQ,KAAK;IAEtF,qBACE,MAAC1B;QACCa,WAAWA;QACXC,YAAYA;QACZC,UAAUA;QACVC,WAAWA;QACXC,kBAAkBA;QAClBU,UAAUF,UAAUE,QAAQ;OACxBJ;;0BAEJ,KAACrB;gBAAWgB,WAAW;oBAAEQ,OAAOD;gBAAU;;0BAC1C,KAACxB;gBAAsBS,YAAYA;gBAAYJ,aAAaA;0BACzDD;;;;AAIT,EAAE;AAEFD,MAAMwB,KAAK,GAAG1B"}
|