@vkontakte/vkui 4.33.2 → 4.33.3
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/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +8 -6
- package/.cache/ts/src/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/.cache/ts/src/components/Popper/Popper.d.ts +5 -0
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +25 -3
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cjs/components/File/File.js +5 -1
- package/dist/cjs/components/File/File.js.map +1 -1
- package/dist/cjs/components/Popper/Popper.d.ts +5 -0
- package/dist/cjs/components/Popper/Popper.js +7 -2
- package/dist/cjs/components/Popper/Popper.js.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +25 -3
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/components/File/File.js +5 -1
- package/dist/components/File/File.js.map +1 -1
- package/dist/components/Popper/Popper.d.ts +5 -0
- package/dist/components/Popper/Popper.js +6 -2
- package/dist/components/Popper/Popper.js.map +1 -1
- package/dist/components.css +20 -2
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/Button/Button.css +20 -2
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +25 -3
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/File/File.js +5 -1
- package/dist/cssm/components/File/File.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.css +1 -1
- package/dist/cssm/components/Popper/Popper.d.ts +5 -0
- package/dist/cssm/components/Popper/Popper.js +6 -2
- package/dist/cssm/components/Popper/Popper.js.map +1 -1
- package/dist/cssm/styles/components.css +20 -2
- package/dist/vkui.css +20 -2
- package/dist/vkui.css.map +1 -1
- package/package.json +1 -1
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +29 -1
- package/src/components/File/File.tsx +4 -0
- package/src/components/FixedLayout/FixedLayout.css +10 -0
- package/src/components/Popper/Popper.tsx +7 -0
package/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import { Modifier } from "react-popper";
|
|
2
3
|
import { CustomScrollView } from "../CustomScrollView/CustomScrollView";
|
|
3
4
|
import { classNames } from "../../lib/classNames";
|
|
4
5
|
import { Popper, Placement } from "../Popper/Popper";
|
|
@@ -11,7 +12,7 @@ export interface CustomSelectDropdownProps
|
|
|
11
12
|
HasRef<HTMLDivElement> {
|
|
12
13
|
targetRef: React.RefObject<HTMLElement>;
|
|
13
14
|
placement?: Placement;
|
|
14
|
-
scrollBoxRef?: React.
|
|
15
|
+
scrollBoxRef?: React.RefObject<HTMLDivElement>;
|
|
15
16
|
fetching?: boolean;
|
|
16
17
|
offsetDistance?: number;
|
|
17
18
|
sameWidth?: boolean;
|
|
@@ -35,6 +36,32 @@ export const CustomSelectDropdown: React.FC<CustomSelectDropdownProps> = ({
|
|
|
35
36
|
}) => {
|
|
36
37
|
const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));
|
|
37
38
|
|
|
39
|
+
const customModifiers = React.useMemo<Array<Modifier<string>>>(() => {
|
|
40
|
+
if (!scrollBoxRef?.current) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return [
|
|
45
|
+
{
|
|
46
|
+
name: "customSelectChildrenChange",
|
|
47
|
+
enabled: true,
|
|
48
|
+
phase: "main",
|
|
49
|
+
effect: ({ instance }) => {
|
|
50
|
+
const observer = new MutationObserver(instance.forceUpdate);
|
|
51
|
+
|
|
52
|
+
observer.observe(scrollBoxRef.current as Element, {
|
|
53
|
+
childList: true,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
return () => {
|
|
57
|
+
observer.disconnect();
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
63
|
+
}, [scrollBoxRef?.current]);
|
|
64
|
+
|
|
38
65
|
const onPlacementChange = React.useCallback(
|
|
39
66
|
({ placement }: { placement?: Placement }) => {
|
|
40
67
|
setIsTop(calcIsTop(placement));
|
|
@@ -59,6 +86,7 @@ export const CustomSelectDropdown: React.FC<CustomSelectDropdownProps> = ({
|
|
|
59
86
|
sameWidth && "CustomSelectDropdown--wide"
|
|
60
87
|
)}
|
|
61
88
|
forcePortal={forcePortal}
|
|
89
|
+
customModifiers={customModifiers}
|
|
62
90
|
{...restProps}
|
|
63
91
|
>
|
|
64
92
|
<CustomScrollView
|
|
@@ -28,6 +28,8 @@ export const File: React.FC<FileProps> = ({
|
|
|
28
28
|
mode,
|
|
29
29
|
stretched,
|
|
30
30
|
before,
|
|
31
|
+
after,
|
|
32
|
+
loading,
|
|
31
33
|
className,
|
|
32
34
|
style,
|
|
33
35
|
getRef,
|
|
@@ -49,6 +51,8 @@ export const File: React.FC<FileProps> = ({
|
|
|
49
51
|
// TODO: v5.0.0 удалить controlSize
|
|
50
52
|
size={size ?? controlSize}
|
|
51
53
|
before={before}
|
|
54
|
+
after={after}
|
|
55
|
+
loading={loading}
|
|
52
56
|
style={style}
|
|
53
57
|
getRootRef={getRootRef}
|
|
54
58
|
disabled={restProps.disabled}
|
|
@@ -48,3 +48,13 @@
|
|
|
48
48
|
.PanelHeader ~ * .FixedLayout--top:not(.PanelHeader__fixed) {
|
|
49
49
|
top: calc(var(--panelheader_height) + var(--safe-area-inset-top));
|
|
50
50
|
}
|
|
51
|
+
|
|
52
|
+
.PanelHeader--ios ~ .FixedLayout--top,
|
|
53
|
+
.PanelHeader--ios ~ * .FixedLayout--top:not(.PanelHeader__fixed) {
|
|
54
|
+
top: calc(var(--panelheader_height_ios) + var(--safe-area-inset-top));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.PanelHeader--vkcom ~ .FixedLayout--top,
|
|
58
|
+
.PanelHeader--vkcom ~ * .FixedLayout--top:not(.PanelHeader__fixed) {
|
|
59
|
+
top: calc(var(--panelheader_height_vkcom) + var(--safe-area-inset-top));
|
|
60
|
+
}
|
|
@@ -48,6 +48,10 @@ export interface PopperCommonProps
|
|
|
48
48
|
sameWidth?: boolean;
|
|
49
49
|
forcePortal?: boolean;
|
|
50
50
|
onPlacementChange?: (data: { placement?: Placement }) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Массив кастомных модификаторов для Popper (необходимо мемоизировать)
|
|
53
|
+
*/
|
|
54
|
+
customModifiers?: Array<Modifier<string>>;
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
export interface PopperProps extends PopperCommonProps {
|
|
@@ -74,6 +78,7 @@ export const Popper: React.FC<PopperProps> = ({
|
|
|
74
78
|
offsetSkidding = 0,
|
|
75
79
|
forcePortal = true,
|
|
76
80
|
style: compStyles,
|
|
81
|
+
customModifiers = [],
|
|
77
82
|
...restProps
|
|
78
83
|
}: PopperProps) => {
|
|
79
84
|
const [popperNode, setPopperNode] = React.useState<HTMLDivElement | null>(
|
|
@@ -135,6 +140,7 @@ export const Popper: React.FC<PopperProps> = ({
|
|
|
135
140
|
modifiers.push(sameWidth);
|
|
136
141
|
}
|
|
137
142
|
|
|
143
|
+
modifiers.push(...customModifiers);
|
|
138
144
|
return modifiers;
|
|
139
145
|
}, [
|
|
140
146
|
arrow,
|
|
@@ -142,6 +148,7 @@ export const Popper: React.FC<PopperProps> = ({
|
|
|
142
148
|
smallTargetOffsetSkidding,
|
|
143
149
|
offsetSkidding,
|
|
144
150
|
offsetDistance,
|
|
151
|
+
customModifiers,
|
|
145
152
|
]);
|
|
146
153
|
|
|
147
154
|
const { styles, state, attributes } = usePopper(
|