@vkontakte/vkui 5.6.2 → 5.7.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/dist/cjs/components/ActionSheet/ActionSheet.d.ts +4 -4
- package/dist/cjs/components/ActionSheet/ActionSheet.js +14 -4
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdown.d.ts +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.d.ts +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +5 -3
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cjs/components/ActionSheet/types.d.ts +9 -0
- package/dist/cjs/components/ActionSheet/types.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.d.ts +8 -3
- package/dist/cjs/components/Alert/Alert.js +16 -96
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Alert/AlertAction.d.ts +8 -0
- package/dist/cjs/components/Alert/AlertAction.js +52 -0
- package/dist/cjs/components/Alert/AlertAction.js.map +1 -0
- package/dist/cjs/components/Alert/AlertActions.d.ts +8 -0
- package/dist/cjs/components/Alert/AlertActions.js +54 -0
- package/dist/cjs/components/Alert/AlertActions.js.map +1 -0
- package/dist/cjs/components/Alert/AlertTypography.d.ts +8 -0
- package/dist/cjs/components/Alert/AlertTypography.js +65 -0
- package/dist/cjs/components/Alert/AlertTypography.js.map +1 -0
- package/dist/cjs/components/NativeSelect/NativeSelect.js +3 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cjs/components/Popover/Popover.js +1 -1
- package/dist/cjs/components/Popover/Popover.js.map +1 -1
- package/dist/cjs/components/PopperArrow/PopperArrow.d.ts +1 -2
- package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cjs/components/Progress/Progress.d.ts +5 -1
- package/dist/cjs/components/Progress/Progress.js +18 -3
- package/dist/cjs/components/Progress/Progress.js.map +1 -1
- package/dist/cjs/components/Root/Root.js +4 -4
- package/dist/cjs/components/Search/Search.d.ts +5 -1
- package/dist/cjs/components/Search/Search.js +10 -4
- package/dist/cjs/components/Search/Search.js.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.d.ts +5 -1
- package/dist/cjs/components/Snackbar/Snackbar.js +8 -3
- package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.d.ts +2 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js +17 -10
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.d.ts +3 -37
- package/dist/cjs/components/Tooltip/Tooltip.js +14 -39
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/TooltipBase/TooltipBase.d.ts +49 -0
- package/dist/cjs/components/TooltipBase/TooltipBase.js +58 -0
- package/dist/cjs/components/TooltipBase/TooltipBase.js.map +1 -0
- package/dist/cjs/components/View/View.js +4 -4
- package/dist/cjs/components/View/ViewInfinite.js +4 -4
- package/dist/components/ActionSheet/ActionSheet.d.ts +4 -4
- package/dist/components/ActionSheet/ActionSheet.js +14 -4
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdown.d.ts +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.d.ts +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +5 -3
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/components/ActionSheet/types.d.ts +9 -0
- package/dist/components/ActionSheet/types.js.map +1 -1
- package/dist/components/Alert/Alert.d.ts +8 -3
- package/dist/components/Alert/Alert.js +14 -94
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Alert/AlertAction.d.ts +8 -0
- package/dist/components/Alert/AlertAction.js +41 -0
- package/dist/components/Alert/AlertAction.js.map +1 -0
- package/dist/components/Alert/AlertActions.d.ts +8 -0
- package/dist/components/Alert/AlertActions.js +43 -0
- package/dist/components/Alert/AlertActions.js.map +1 -0
- package/dist/components/Alert/AlertTypography.d.ts +8 -0
- package/dist/components/Alert/AlertTypography.js +46 -0
- package/dist/components/Alert/AlertTypography.js.map +1 -0
- package/dist/components/NativeSelect/NativeSelect.js +3 -1
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/components/Popover/Popover.js +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/PopperArrow/PopperArrow.d.ts +1 -2
- package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/components/Progress/Progress.d.ts +5 -1
- package/dist/components/Progress/Progress.js +18 -3
- package/dist/components/Progress/Progress.js.map +1 -1
- package/dist/components/Root/Root.js +4 -4
- package/dist/components/Search/Search.d.ts +5 -1
- package/dist/components/Search/Search.js +10 -4
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts +5 -1
- package/dist/components/Snackbar/Snackbar.js +8 -3
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.d.ts +2 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js +17 -10
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +3 -37
- package/dist/components/Tooltip/Tooltip.js +15 -40
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/TooltipBase/TooltipBase.d.ts +49 -0
- package/dist/components/TooltipBase/TooltipBase.js +51 -0
- package/dist/components/TooltipBase/TooltipBase.js.map +1 -0
- package/dist/components/View/View.js +4 -4
- package/dist/components/View/ViewInfinite.js +4 -4
- package/dist/components.css +10 -9
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +1490 -1085
- package/dist/cssm/components/ActionSheet/ActionSheet.d.ts +4 -4
- package/dist/cssm/components/ActionSheet/ActionSheet.js +12 -3
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.module.css +0 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdown.d.ts +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.d.ts +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +3 -2
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cssm/components/ActionSheet/types.d.ts +9 -0
- package/dist/cssm/components/ActionSheet/types.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.d.ts +8 -3
- package/dist/cssm/components/Alert/Alert.js +11 -87
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.module.css +36 -30
- package/dist/cssm/components/Alert/AlertAction.d.ts +8 -0
- package/dist/cssm/components/Alert/AlertAction.js +36 -0
- package/dist/cssm/components/Alert/AlertAction.js.map +1 -0
- package/dist/cssm/components/Alert/AlertActions.d.ts +8 -0
- package/dist/cssm/components/Alert/AlertActions.js +34 -0
- package/dist/cssm/components/Alert/AlertActions.js.map +1 -0
- package/dist/cssm/components/Alert/AlertTypography.d.ts +8 -0
- package/dist/cssm/components/Alert/AlertTypography.js +51 -0
- package/dist/cssm/components/Alert/AlertTypography.js.map +1 -0
- package/dist/cssm/components/Button/Button.module.css +1 -1
- package/dist/cssm/components/Link/Link.module.css +1 -0
- package/dist/cssm/components/NativeSelect/NativeSelect.js +3 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +1 -0
- package/dist/cssm/components/Popover/Popover.js +1 -1
- package/dist/cssm/components/Popover/Popover.js.map +1 -1
- package/dist/cssm/components/Popover/Popover.module.css +4 -0
- package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +1 -2
- package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cssm/components/Progress/Progress.d.ts +5 -1
- package/dist/cssm/components/Progress/Progress.js +17 -1
- package/dist/cssm/components/Progress/Progress.js.map +1 -1
- package/dist/cssm/components/Search/Search.d.ts +5 -1
- package/dist/cssm/components/Search/Search.js +8 -3
- package/dist/cssm/components/Search/Search.js.map +1 -1
- package/dist/cssm/components/Search/Search.module.css +4 -1
- package/dist/cssm/components/Snackbar/Snackbar.d.ts +5 -1
- package/dist/cssm/components/Snackbar/Snackbar.js +6 -2
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.d.ts +2 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +16 -10
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +25 -4
- package/dist/cssm/components/Tooltip/Tooltip.d.ts +3 -37
- package/dist/cssm/components/Tooltip/Tooltip.js +13 -33
- package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.module.css +3 -53
- package/dist/cssm/components/TooltipBase/TooltipBase.d.ts +49 -0
- package/dist/cssm/components/TooltipBase/TooltipBase.js +37 -0
- package/dist/cssm/components/TooltipBase/TooltipBase.js.map +1 -0
- package/dist/cssm/components/TooltipBase/TooltipBase.module.css +57 -0
- package/dist/vkui.css +10 -9
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +1490 -1085
- package/package.json +1 -1
|
@@ -56,10 +56,10 @@ var ViewInfiniteComponent = /*#__PURE__*/ function(_superClass) {
|
|
|
56
56
|
_define_property._(_assert_this_initialized._(_this), "panelNodes", {});
|
|
57
57
|
_define_property._(_assert_this_initialized._(_this), "transitionEndHandler", function(e) {
|
|
58
58
|
if ((!e || [
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
59
|
+
"vkuivkui-animation-ios-next-forward",
|
|
60
|
+
"vkuivkui-animation-ios-prev-back",
|
|
61
|
+
"vkuivkui-animation-view-next-forward",
|
|
62
|
+
"vkuivkui-animation-view-prev-back"
|
|
63
63
|
].includes(e.animationName)) && _this.state.prevPanel !== null) {
|
|
64
64
|
_this.flushTransition(_this.state.prevPanel, Boolean(_this.state.isBack));
|
|
65
65
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SharedDropdownProps } from './types';
|
|
3
|
-
export interface ActionSheetProps extends Pick<SharedDropdownProps, 'toggleRef' | 'popupDirection' | 'popupOffsetDistance'>, React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
export interface ActionSheetProps extends Pick<SharedDropdownProps, 'toggleRef' | 'popupDirection' | 'popupOffsetDistance' | 'placement'>, React.HTMLAttributes<HTMLDivElement> {
|
|
4
4
|
header?: React.ReactNode;
|
|
5
5
|
text?: React.ReactNode;
|
|
6
6
|
/**
|
|
@@ -8,11 +8,11 @@ export interface ActionSheetProps extends Pick<SharedDropdownProps, 'toggleRef'
|
|
|
8
8
|
*/
|
|
9
9
|
onClose: VoidFunction;
|
|
10
10
|
/**
|
|
11
|
-
* Только iOS.
|
|
11
|
+
* Только мобильный iOS.
|
|
12
12
|
*/
|
|
13
|
-
iosCloseItem
|
|
13
|
+
iosCloseItem?: React.ReactNode;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* @see https://vkcom.github.io/VKUI/#/ActionSheet
|
|
17
17
|
*/
|
|
18
|
-
export declare const ActionSheet: ({ children, className, header, text, style, iosCloseItem, popupDirection, popupOffsetDistance, ...restProps }: ActionSheetProps) => React.JSX.Element;
|
|
18
|
+
export declare const ActionSheet: ({ children, className, header, text, style, iosCloseItem, popupDirection, popupOffsetDistance, placement, ...restProps }: ActionSheetProps) => React.JSX.Element;
|
|
@@ -9,16 +9,19 @@ import { useObjectMemo } from "../../hooks/useObjectMemo";
|
|
|
9
9
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
10
10
|
import { useTimeout } from "../../hooks/useTimeout";
|
|
11
11
|
import { Platform } from "../../lib/platform";
|
|
12
|
+
import { warnOnce } from "../../lib/warnOnce";
|
|
12
13
|
import { useScrollLock } from "../AppRoot/ScrollContext";
|
|
13
14
|
import { PopoutWrapper } from "../PopoutWrapper/PopoutWrapper";
|
|
14
15
|
import { Footnote } from "../Typography/Footnote/Footnote";
|
|
15
16
|
import { ActionSheetContext } from "./ActionSheetContext";
|
|
17
|
+
import { ActionSheetDefaultIosCloseItem } from "./ActionSheetDefaultIosCloseItem";
|
|
16
18
|
import { ActionSheetDropdown } from "./ActionSheetDropdown";
|
|
17
19
|
import { ActionSheetDropdownDesktop } from "./ActionSheetDropdownDesktop";
|
|
20
|
+
var warn = warnOnce("ActionSheet");
|
|
18
21
|
/**
|
|
19
22
|
* @see https://vkcom.github.io/VKUI/#/ActionSheet
|
|
20
23
|
*/ export var ActionSheet = function(_param) {
|
|
21
|
-
var children = _param.children, className = _param.className, header = _param.header, text = _param.text, style = _param.style, iosCloseItem = _param.iosCloseItem,
|
|
24
|
+
var children = _param.children, className = _param.className, header = _param.header, text = _param.text, style = _param.style, iosCloseItem = _param.iosCloseItem, popupDirection = _param.popupDirection, popupOffsetDistance = _param.popupOffsetDistance, placement = _param.placement, restProps = _object_without_properties(_param, [
|
|
22
25
|
"children",
|
|
23
26
|
"className",
|
|
24
27
|
"header",
|
|
@@ -26,7 +29,8 @@ import { ActionSheetDropdownDesktop } from "./ActionSheetDropdownDesktop";
|
|
|
26
29
|
"style",
|
|
27
30
|
"iosCloseItem",
|
|
28
31
|
"popupDirection",
|
|
29
|
-
"popupOffsetDistance"
|
|
32
|
+
"popupOffsetDistance",
|
|
33
|
+
"placement"
|
|
30
34
|
]);
|
|
31
35
|
var platform = usePlatform();
|
|
32
36
|
var _React_useState = _sliced_to_array(React.useState(false), 2), closing = _React_useState[0], setClosing = _React_useState[1];
|
|
@@ -75,9 +79,15 @@ import { ActionSheetDropdownDesktop } from "./ActionSheetDropdownDesktop";
|
|
|
75
79
|
isDesktop: isDesktop
|
|
76
80
|
});
|
|
77
81
|
var DropdownComponent = isDesktop ? ActionSheetDropdownDesktop : ActionSheetDropdown;
|
|
82
|
+
if (process.env.NODE_ENV === "development" && popupDirection) {
|
|
83
|
+
// TODO [>=6]: popupDirection
|
|
84
|
+
warn('Свойство "popupDirection" будет удалено в v6. Используйте свойство "placement"');
|
|
85
|
+
}
|
|
86
|
+
popupDirection = popupDirection !== undefined ? popupDirection : "bottom";
|
|
78
87
|
var dropdownProps = isDesktop ? Object.assign(restProps, {
|
|
79
88
|
popupOffsetDistance: popupOffsetDistance,
|
|
80
|
-
popupDirection: popupDirection
|
|
89
|
+
popupDirection: popupDirection,
|
|
90
|
+
placement: placement
|
|
81
91
|
}) : restProps;
|
|
82
92
|
var actionSheet = /*#__PURE__*/ React.createElement(ActionSheetContext.Provider, {
|
|
83
93
|
value: contextValue
|
|
@@ -95,7 +105,7 @@ import { ActionSheetDropdownDesktop } from "./ActionSheetDropdownDesktop";
|
|
|
95
105
|
className: "vkuiActionSheet__title"
|
|
96
106
|
}, header), text && /*#__PURE__*/ React.createElement(Footnote, {
|
|
97
107
|
className: "vkuiActionSheet__text"
|
|
98
|
-
}, text)), children, platform === Platform.IOS && !isDesktop && iosCloseItem));
|
|
108
|
+
}, text)), children, platform === Platform.IOS && !isDesktop && (iosCloseItem !== null && iosCloseItem !== void 0 ? iosCloseItem : /*#__PURE__*/ React.createElement(ActionSheetDefaultIosCloseItem, null))));
|
|
99
109
|
if (isDesktop) {
|
|
100
110
|
return actionSheet;
|
|
101
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ActionSheet/ActionSheet.tsx"],"sourcesContent":["import * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { Platform } from '../../lib/platform';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { ActionSheetContext, ItemClickHandler } from './ActionSheetContext';\nimport { ActionSheetDropdown } from './ActionSheetDropdown';\nimport { ActionSheetDropdownDesktop } from './ActionSheetDropdownDesktop';\nimport { SharedDropdownProps } from './types';\nimport styles from './ActionSheet.module.css';\n\nexport interface ActionSheetProps\n extends Pick
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ActionSheet/ActionSheet.tsx"],"sourcesContent":["import * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { ActionSheetContext, ItemClickHandler } from './ActionSheetContext';\nimport { ActionSheetDefaultIosCloseItem } from './ActionSheetDefaultIosCloseItem';\nimport { ActionSheetDropdown } from './ActionSheetDropdown';\nimport { ActionSheetDropdownDesktop } from './ActionSheetDropdownDesktop';\nimport { SharedDropdownProps } from './types';\nimport styles from './ActionSheet.module.css';\n\nconst warn = warnOnce('ActionSheet');\n\nexport interface ActionSheetProps\n extends Pick<\n SharedDropdownProps,\n 'toggleRef' | 'popupDirection' | 'popupOffsetDistance' | 'placement'\n >,\n React.HTMLAttributes<HTMLDivElement> {\n header?: React.ReactNode;\n text?: React.ReactNode;\n /**\n * Закрыть попап по клику снаружи.\n */\n onClose: VoidFunction;\n /**\n * Только мобильный iOS.\n */\n iosCloseItem?: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ActionSheet\n */\nexport const ActionSheet = ({\n children,\n className,\n header,\n text,\n style,\n iosCloseItem,\n popupDirection,\n popupOffsetDistance,\n placement,\n ...restProps\n}: ActionSheetProps) => {\n const platform = usePlatform();\n const [closing, setClosing] = React.useState(false);\n const onClose = () => setClosing(true);\n const _action = React.useRef(noop);\n\n const afterClose = () => {\n restProps.onClose();\n _action.current();\n _action.current = noop;\n };\n\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n\n useScrollLock(!isDesktop);\n\n let timeout = platform === Platform.IOS ? 300 : 200;\n\n if (isDesktop) {\n timeout = 0;\n }\n\n const fallbackTransitionFinish = useTimeout(afterClose, timeout);\n React.useEffect(() => {\n if (closing) {\n fallbackTransitionFinish.set();\n } else {\n fallbackTransitionFinish.clear();\n }\n }, [closing, fallbackTransitionFinish]);\n\n const onItemClick = React.useCallback<ItemClickHandler>(\n (action, immediateAction, autoClose) => (event) => {\n event.persist();\n immediateAction && immediateAction(event);\n if (autoClose) {\n _action.current = () => action && action(event);\n setClosing(true);\n } else {\n action && action(event);\n }\n },\n [],\n );\n const contextValue = useObjectMemo({ onItemClick, isDesktop });\n\n const DropdownComponent = isDesktop ? ActionSheetDropdownDesktop : ActionSheetDropdown;\n\n if (process.env.NODE_ENV === 'development' && popupDirection) {\n // TODO [>=6]: popupDirection\n warn('Свойство \"popupDirection\" будет удалено в v6. Используйте свойство \"placement\"');\n }\n\n popupDirection = popupDirection !== undefined ? popupDirection : 'bottom';\n\n const dropdownProps = isDesktop\n ? Object.assign(restProps, { popupOffsetDistance, popupDirection, placement })\n : restProps;\n\n const actionSheet = (\n <ActionSheetContext.Provider value={contextValue}>\n <DropdownComponent\n closing={closing}\n timeout={timeout}\n {...dropdownProps}\n onClose={onClose}\n className={isDesktop ? className : undefined}\n style={isDesktop ? style : undefined}\n >\n {(header || text) && (\n <header className={styles['ActionSheet__header']}>\n {header && (\n <Footnote weight=\"2\" className={styles['ActionSheet__title']}>\n {header}\n </Footnote>\n )}\n {text && <Footnote className={styles['ActionSheet__text']}>{text}</Footnote>}\n </header>\n )}\n {children}\n {platform === Platform.IOS &&\n !isDesktop &&\n (iosCloseItem ?? <ActionSheetDefaultIosCloseItem />)}\n </DropdownComponent>\n </ActionSheetContext.Provider>\n );\n\n if (isDesktop) {\n return actionSheet;\n }\n\n return (\n <PopoutWrapper\n closing={closing}\n alignY=\"bottom\"\n className={className}\n style={style}\n onClick={onClose}\n hasMask\n fixed\n >\n {actionSheet}\n </PopoutWrapper>\n );\n};\n"],"names":["React","noop","useAdaptivityWithJSMediaQueries","useObjectMemo","usePlatform","useTimeout","Platform","warnOnce","useScrollLock","PopoutWrapper","Footnote","ActionSheetContext","ActionSheetDefaultIosCloseItem","ActionSheetDropdown","ActionSheetDropdownDesktop","warn","ActionSheet","children","className","header","text","style","iosCloseItem","popupDirection","popupOffsetDistance","placement","restProps","platform","useState","closing","setClosing","onClose","_action","useRef","afterClose","current","isDesktop","timeout","IOS","fallbackTransitionFinish","useEffect","set","clear","onItemClick","useCallback","action","immediateAction","autoClose","event","persist","contextValue","DropdownComponent","process","env","NODE_ENV","undefined","dropdownProps","Object","assign","actionSheet","Provider","value","weight","alignY","onClick","hasMask","fixed"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,kBAAkB,QAA0B,uBAAuB;AAC5E,SAASC,8BAA8B,QAAQ,mCAAmC;AAClF,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,0BAA0B,QAAQ,+BAA+B;AAI1E,IAAMC,OAAOR,SAAS;AAoBtB;;CAEC,GACD,OAAO,IAAMS,cAAc;QACzBC,kBAAAA,UACAC,mBAAAA,WACAC,gBAAAA,QACAC,cAAAA,MACAC,eAAAA,OACAC,sBAAAA,cACAC,wBAAAA,gBACAC,6BAAAA,qBACAC,mBAAAA,WACGC;QATHT;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,WAAWvB;IACjB,IAA8BJ,mCAAAA,MAAM4B,QAAQ,CAAC,YAAtCC,UAAuB7B,oBAAd8B,aAAc9B;IAC9B,IAAM+B,UAAU;eAAMD,WAAW;;IACjC,IAAME,UAAUhC,MAAMiC,MAAM,CAAChC;IAE7B,IAAMiC,aAAa;QACjBR,UAAUK,OAAO;QACjBC,QAAQG,OAAO;QACfH,QAAQG,OAAO,GAAGlC;IACpB;IAEA,IAAM,AAAEmC,YAAclC,kCAAdkC;IAER5B,cAAc,CAAC4B;IAEf,IAAIC,UAAUV,aAAarB,SAASgC,GAAG,GAAG,MAAM;IAEhD,IAAIF,WAAW;QACbC,UAAU;IACZ;IAEA,IAAME,2BAA2BlC,WAAW6B,YAAYG;IACxDrC,MAAMwC,SAAS,CAAC;QACd,IAAIX,SAAS;YACXU,yBAAyBE,GAAG;QAC9B,OAAO;YACLF,yBAAyBG,KAAK;QAChC;IACF,GAAG;QAACb;QAASU;KAAyB;IAEtC,IAAMI,cAAc3C,MAAM4C,WAAW,CACnC,SAACC,QAAQC,iBAAiBC;eAAc,SAACC;YACvCA,MAAMC,OAAO;YACbH,mBAAmBA,gBAAgBE;YACnC,IAAID,WAAW;gBACbf,QAAQG,OAAO,GAAG;2BAAMU,UAAUA,OAAOG;;gBACzClB,WAAW;YACb,OAAO;gBACLe,UAAUA,OAAOG;YACnB;QACF;OACA,EAAE;IAEJ,IAAME,eAAe/C,cAAc;QAAEwC,aAAAA;QAAaP,WAAAA;IAAU;IAE5D,IAAMe,oBAAoBf,YAAYtB,6BAA6BD;IAEnE,IAAIuC,QAAQC,GAAG,CAACC,QAAQ,KAAK,iBAAiB/B,gBAAgB;QAC5D,6BAA6B;QAC7BR,KAAK;IACP;IAEAQ,iBAAiBA,mBAAmBgC,YAAYhC,iBAAiB;IAEjE,IAAMiC,gBAAgBpB,YAClBqB,OAAOC,MAAM,CAAChC,WAAW;QAAEF,qBAAAA;QAAqBD,gBAAAA;QAAgBE,WAAAA;IAAU,KAC1EC;IAEJ,IAAMiC,4BACJ,oBAAChD,mBAAmBiD,QAAQ;QAACC,OAAOX;qBAClC,oBAACC;QACCtB,SAASA;QACTQ,SAASA;OACLmB;QACJzB,SAASA;QACTb,WAAWkB,YAAYlB,YAAYqC;QACnClC,OAAOe,YAAYf,QAAQkC;QAE1B,AAACpC,CAAAA,UAAUC,IAAG,mBACb,oBAACD;QAAOD,SAAS;OACdC,wBACC,oBAACT;QAASoD,QAAO;QAAI5C,SAAS;OAC3BC,SAGJC,sBAAQ,oBAACV;QAASQ,SAAS;OAAgCE,QAG/DH,UACAU,aAAarB,SAASgC,GAAG,IACxB,CAACF,aACAd,CAAAA,yBAAAA,0BAAAA,6BAAgB,oBAACV,qCAAgC;IAK1D,IAAIwB,WAAW;QACb,OAAOuB;IACT;IAEA,qBACE,oBAAClD;QACCoB,SAASA;QACTkC,QAAO;QACP7C,WAAWA;QACXG,OAAOA;QACP2C,SAASjC;QACTkC,SAAAA;QACAC,OAAAA;OAECP;AAGP,EAAE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SharedDropdownProps } from './types';
|
|
3
|
-
export type ActionSheetDropdownProps = Omit<SharedDropdownProps, 'popupDirection' | 'popupOffsetDistance'>;
|
|
3
|
+
export type ActionSheetDropdownProps = Omit<SharedDropdownProps, 'popupDirection' | 'popupOffsetDistance' | 'placement'>;
|
|
4
4
|
export declare const ActionSheetDropdown: ({ children, closing, toggleRef, className, ...restProps }: SharedDropdownProps) => React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ActionSheet/ActionSheetDropdown.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { SharedDropdownProps } from './types';\nimport styles from './ActionSheet.module.css';\n\nconst stopPropagation: React.MouseEventHandler = (e) => e.stopPropagation();\n\nexport type ActionSheetDropdownProps = Omit<\n SharedDropdownProps,\n 'popupDirection' | 'popupOffsetDistance'\n>;\n\nexport const ActionSheetDropdown = ({\n children,\n closing,\n // these 2 props are only omitted - ActionSheetDesktop compat\n toggleRef,\n className,\n ...restProps\n}: SharedDropdownProps) => {\n const { sizeY } = useAdaptivityWithJSMediaQueries();\n const platform = usePlatform();\n\n return (\n <FocusTrap\n {...restProps}\n onClick={stopPropagation}\n className={classNames(\n styles['ActionSheet'],\n platform === Platform.IOS && styles['ActionSheet--ios'],\n closing && styles['ActionSheet--closing'],\n sizeY === SizeType.COMPACT && styles['ActionSheet--sizeY-compact'],\n className,\n )}\n >\n {children}\n </FocusTrap>\n );\n};\n"],"names":["React","classNames","useAdaptivityWithJSMediaQueries","usePlatform","SizeType","Platform","FocusTrap","stopPropagation","e","ActionSheetDropdown","children","closing","toggleRef","className","restProps","sizeY","platform","onClick","IOS","COMPACT"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,SAAS,QAAQ,yBAAyB;AAInD,IAAMC,kBAA2C,SAACC;WAAMA,EAAED,eAAe;;AAOzE,OAAO,IAAME,sBAAsB;QACjCC,kBAAAA,UACAC,iBAAAA,SACA,6DAA6D;IAC7DC,mBAAAA,WACAC,mBAAAA,WACGC;QALHJ;QACAC;QAEAC;QACAC;;IAGA,IAAM,AAAEE,QAAUb,kCAAVa;IACR,IAAMC,WAAWb;IAEjB,qBACE,oBAACG,mDACKQ;QACJG,SAASV;QACTM,WAAWZ,8BAETe,aAAaX,SAASa,GAAG,4BACzBP,uCACAI,UAAUX,SAASe,OAAO,sCAC1BN;QAGDH;AAGP,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ActionSheet/ActionSheetDropdown.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { SharedDropdownProps } from './types';\nimport styles from './ActionSheet.module.css';\n\nconst stopPropagation: React.MouseEventHandler = (e) => e.stopPropagation();\n\nexport type ActionSheetDropdownProps = Omit<\n SharedDropdownProps,\n 'popupDirection' | 'popupOffsetDistance' | 'placement'\n>;\n\nexport const ActionSheetDropdown = ({\n children,\n closing,\n // these 2 props are only omitted - ActionSheetDesktop compat\n toggleRef,\n className,\n ...restProps\n}: SharedDropdownProps) => {\n const { sizeY } = useAdaptivityWithJSMediaQueries();\n const platform = usePlatform();\n\n return (\n <FocusTrap\n {...restProps}\n onClick={stopPropagation}\n className={classNames(\n styles['ActionSheet'],\n platform === Platform.IOS && styles['ActionSheet--ios'],\n closing && styles['ActionSheet--closing'],\n sizeY === SizeType.COMPACT && styles['ActionSheet--sizeY-compact'],\n className,\n )}\n >\n {children}\n </FocusTrap>\n );\n};\n"],"names":["React","classNames","useAdaptivityWithJSMediaQueries","usePlatform","SizeType","Platform","FocusTrap","stopPropagation","e","ActionSheetDropdown","children","closing","toggleRef","className","restProps","sizeY","platform","onClick","IOS","COMPACT"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,SAAS,QAAQ,yBAAyB;AAInD,IAAMC,kBAA2C,SAACC;WAAMA,EAAED,eAAe;;AAOzE,OAAO,IAAME,sBAAsB;QACjCC,kBAAAA,UACAC,iBAAAA,SACA,6DAA6D;IAC7DC,mBAAAA,WACAC,mBAAAA,WACGC;QALHJ;QACAC;QAEAC;QACAC;;IAGA,IAAM,AAAEE,QAAUb,kCAAVa;IACR,IAAMC,WAAWb;IAEjB,qBACE,oBAACG,mDACKQ;QACJG,SAASV;QACTM,WAAWZ,8BAETe,aAAaX,SAASa,GAAG,4BACzBP,uCACAI,UAAUX,SAASe,OAAO,sCAC1BN;QAGDH;AAGP,EAAE"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SharedDropdownProps } from './types';
|
|
3
|
-
export declare const ActionSheetDropdownDesktop: ({ children, toggleRef, closing, popupDirection, onClose, className, style, popupOffsetDistance, ...restProps }: SharedDropdownProps) => React.JSX.Element;
|
|
3
|
+
export declare const ActionSheetDropdownDesktop: ({ children, toggleRef, closing, popupDirection, onClose, className, style, popupOffsetDistance, placement: placementProp, ...restProps }: SharedDropdownProps) => React.JSX.Element;
|
|
@@ -19,7 +19,7 @@ function getEl(ref) {
|
|
|
19
19
|
return ref && "current" in ref ? ref.current : ref;
|
|
20
20
|
}
|
|
21
21
|
export var ActionSheetDropdownDesktop = function(_param) {
|
|
22
|
-
var children = _param.children, toggleRef = _param.toggleRef, closing = _param.closing, popupDirection = _param.popupDirection, onClose = _param.onClose, className = _param.className, style = _param.style, _param_popupOffsetDistance = _param.popupOffsetDistance, popupOffsetDistance = _param_popupOffsetDistance === void 0 ? 0 : _param_popupOffsetDistance, restProps = _object_without_properties(_param, [
|
|
22
|
+
var children = _param.children, toggleRef = _param.toggleRef, closing = _param.closing, popupDirection = _param.popupDirection, onClose = _param.onClose, className = _param.className, style = _param.style, _param_popupOffsetDistance = _param.popupOffsetDistance, popupOffsetDistance = _param_popupOffsetDistance === void 0 ? 0 : _param_popupOffsetDistance, placementProp = _param.placement, restProps = _object_without_properties(_param, [
|
|
23
23
|
"children",
|
|
24
24
|
"toggleRef",
|
|
25
25
|
"closing",
|
|
@@ -27,7 +27,8 @@ export var ActionSheetDropdownDesktop = function(_param) {
|
|
|
27
27
|
"onClose",
|
|
28
28
|
"className",
|
|
29
29
|
"style",
|
|
30
|
-
"popupOffsetDistance"
|
|
30
|
+
"popupOffsetDistance",
|
|
31
|
+
"placement"
|
|
31
32
|
]);
|
|
32
33
|
var document = useDOM().document;
|
|
33
34
|
var platform = usePlatform();
|
|
@@ -47,6 +48,7 @@ export var ActionSheetDropdownDesktop = function(_param) {
|
|
|
47
48
|
popupDirection,
|
|
48
49
|
elementRef
|
|
49
50
|
]);
|
|
51
|
+
var placement = placementProp !== null && placementProp !== void 0 ? placementProp : isPopupDirectionTop ? "top-end" : "bottom-end";
|
|
50
52
|
var bodyClickListener = useEventListener("click", function(e) {
|
|
51
53
|
var _elementRef;
|
|
52
54
|
var dropdownElement = (_elementRef = elementRef) === null || _elementRef === void 0 ? void 0 : _elementRef.current;
|
|
@@ -79,7 +81,7 @@ export var ActionSheetDropdownDesktop = function(_param) {
|
|
|
79
81
|
return /*#__PURE__*/ React.createElement(Popper, {
|
|
80
82
|
targetRef: targetRef,
|
|
81
83
|
offsetDistance: popupOffsetDistance,
|
|
82
|
-
placement:
|
|
84
|
+
placement: placement,
|
|
83
85
|
className: classNames("vkuiActionSheet", platform === Platform.IOS && "vkuiActionSheet--ios", "vkuiActionSheet--desktop", sizeY === SizeType.COMPACT && "vkuiActionSheet--sizeY-compact", className),
|
|
84
86
|
style: style,
|
|
85
87
|
getRef: elementRef,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ActionSheet/ActionSheetDropdownDesktop.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useEffectDev } from '../../hooks/useEffectDev';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { useDOM } from '../../lib/dom';\nimport { isRefObject } from '../../lib/isRefObject';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { Popper } from '../Popper/Popper';\nimport { SharedDropdownProps } from './types';\nimport styles from './ActionSheet.module.css';\n\nconst warn = warnOnce('ActionSheet');\nfunction getEl(ref: SharedDropdownProps['toggleRef']): Element | null | undefined {\n return ref && 'current' in ref ? ref.current : ref;\n}\n\nexport const ActionSheetDropdownDesktop = ({\n children,\n toggleRef,\n closing,\n popupDirection,\n onClose,\n className,\n style,\n popupOffsetDistance = 0,\n ...restProps\n}: SharedDropdownProps) => {\n const { document } = useDOM();\n const platform = usePlatform();\n const { sizeY } = useAdaptivityWithJSMediaQueries();\n const elementRef = React.useRef<HTMLDivElement | null>(null);\n\n useEffectDev(() => {\n const toggleEl = getEl(toggleRef);\n if (!toggleEl) {\n warn(`Свойство \"toggleRef\" не передано`, 'error');\n }\n }, [toggleRef]);\n\n const isPopupDirectionTop = React.useMemo(\n () =>\n popupDirection === 'top' ||\n (typeof popupDirection === 'function' && popupDirection(elementRef) === 'top'),\n [popupDirection, elementRef],\n );\n\n const bodyClickListener = useEventListener('click', (e: MouseEvent) => {\n const dropdownElement = elementRef?.current;\n if (dropdownElement && !dropdownElement.contains(e.target as Node)) {\n onClose?.();\n }\n });\n\n React.useEffect(() => {\n setTimeout(() => {\n bodyClickListener.add(document!.body);\n });\n }, [bodyClickListener, document]);\n\n const onClick = React.useCallback((e: React.MouseEvent<HTMLElement>) => e.stopPropagation(), []);\n\n const targetRef = React.useMemo(() => {\n if (isRefObject<SharedDropdownProps['toggleRef'], HTMLElement>(toggleRef)) {\n return toggleRef;\n }\n\n return { current: toggleRef as HTMLElement };\n }, [toggleRef]);\n\n return (\n <Popper\n targetRef={targetRef}\n offsetDistance={popupOffsetDistance}\n placement={
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ActionSheet/ActionSheetDropdownDesktop.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useEffectDev } from '../../hooks/useEffectDev';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { useDOM } from '../../lib/dom';\nimport { isRefObject } from '../../lib/isRefObject';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { Popper } from '../Popper/Popper';\nimport { SharedDropdownProps } from './types';\nimport styles from './ActionSheet.module.css';\n\nconst warn = warnOnce('ActionSheet');\nfunction getEl(ref: SharedDropdownProps['toggleRef']): Element | null | undefined {\n return ref && 'current' in ref ? ref.current : ref;\n}\n\nexport const ActionSheetDropdownDesktop = ({\n children,\n toggleRef,\n closing,\n popupDirection,\n onClose,\n className,\n style,\n popupOffsetDistance = 0,\n placement: placementProp,\n ...restProps\n}: SharedDropdownProps) => {\n const { document } = useDOM();\n const platform = usePlatform();\n const { sizeY } = useAdaptivityWithJSMediaQueries();\n const elementRef = React.useRef<HTMLDivElement | null>(null);\n\n useEffectDev(() => {\n const toggleEl = getEl(toggleRef);\n if (!toggleEl) {\n warn(`Свойство \"toggleRef\" не передано`, 'error');\n }\n }, [toggleRef]);\n\n const isPopupDirectionTop = React.useMemo(\n () =>\n popupDirection === 'top' ||\n (typeof popupDirection === 'function' && popupDirection(elementRef) === 'top'),\n [popupDirection, elementRef],\n );\n\n const placement = placementProp ?? (isPopupDirectionTop ? 'top-end' : 'bottom-end');\n\n const bodyClickListener = useEventListener('click', (e: MouseEvent) => {\n const dropdownElement = elementRef?.current;\n if (dropdownElement && !dropdownElement.contains(e.target as Node)) {\n onClose?.();\n }\n });\n\n React.useEffect(() => {\n setTimeout(() => {\n bodyClickListener.add(document!.body);\n });\n }, [bodyClickListener, document]);\n\n const onClick = React.useCallback((e: React.MouseEvent<HTMLElement>) => e.stopPropagation(), []);\n\n const targetRef = React.useMemo(() => {\n if (isRefObject<SharedDropdownProps['toggleRef'], HTMLElement>(toggleRef)) {\n return toggleRef;\n }\n\n return { current: toggleRef as HTMLElement };\n }, [toggleRef]);\n\n return (\n <Popper\n targetRef={targetRef}\n offsetDistance={popupOffsetDistance}\n placement={placement}\n className={classNames(\n styles['ActionSheet'],\n platform === Platform.IOS && styles['ActionSheet--ios'],\n styles['ActionSheet--desktop'],\n sizeY === SizeType.COMPACT && styles['ActionSheet--sizeY-compact'],\n className,\n )}\n style={style}\n getRef={elementRef}\n forcePortal={false}\n >\n <FocusTrap onClose={onClose} {...restProps} onClick={onClick}>\n {children}\n </FocusTrap>\n </Popper>\n );\n};\n"],"names":["React","classNames","useAdaptivityWithJSMediaQueries","useEffectDev","useEventListener","usePlatform","SizeType","useDOM","isRefObject","Platform","warnOnce","FocusTrap","Popper","warn","getEl","ref","current","ActionSheetDropdownDesktop","children","toggleRef","closing","popupDirection","onClose","className","style","popupOffsetDistance","placement","placementProp","restProps","document","platform","sizeY","elementRef","useRef","toggleEl","isPopupDirectionTop","useMemo","bodyClickListener","e","dropdownElement","contains","target","useEffect","setTimeout","add","body","onClick","useCallback","stopPropagation","targetRef","offsetDistance","IOS","COMPACT","getRef","forcePortal"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,+BAA+B,QAAQ,8CAA8C;AAC9F,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,gBAAgB,QAAQ,+BAA+B;AAChE,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,WAAW,QAAQ,wBAAwB;AACpD,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,QAAQ,QAAQ,qBAAqB;AAC9C,SAASC,SAAS,QAAQ,yBAAyB;AACnD,SAASC,MAAM,QAAQ,mBAAmB;AAI1C,IAAMC,OAAOH,SAAS;AACtB,SAASI,MAAMC,GAAqC;IAClD,OAAOA,OAAO,aAAaA,MAAMA,IAAIC,OAAO,GAAGD;AACjD;AAEA,OAAO,IAAME,6BAA6B;QACxCC,kBAAAA,UACAC,mBAAAA,WACAC,iBAAAA,SACAC,wBAAAA,gBACAC,iBAAAA,SACAC,mBAAAA,WACAC,eAAAA,2CACAC,qBAAAA,8DAAsB,gCACtBC,AAAWC,uBAAXD,WACGE;QATHV;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAM,AAAEG,WAAatB,SAAbsB;IACR,IAAMC,WAAWzB;IACjB,IAAM,AAAE0B,QAAU7B,kCAAV6B;IACR,IAAMC,aAAahC,MAAMiC,MAAM,CAAwB;IAEvD9B,aAAa;QACX,IAAM+B,WAAWpB,MAAMK;QACvB,IAAI,CAACe,UAAU;YACbrB,KAAM,oCAAmC;QAC3C;IACF,GAAG;QAACM;KAAU;IAEd,IAAMgB,sBAAsBnC,MAAMoC,OAAO,CACvC;eACEf,mBAAmB,SAClB,OAAOA,mBAAmB,cAAcA,eAAeW,gBAAgB;OAC1E;QAACX;QAAgBW;KAAW;IAG9B,IAAMN,YAAYC,0BAAAA,2BAAAA,gBAAkBQ,sBAAsB,YAAY;IAEtE,IAAME,oBAAoBjC,iBAAiB,SAAS,SAACkC;YAC3BN;QAAxB,IAAMO,mBAAkBP,cAAAA,wBAAAA,kCAAAA,YAAYhB,OAAO;QAC3C,IAAIuB,mBAAmB,CAACA,gBAAgBC,QAAQ,CAACF,EAAEG,MAAM,GAAW;gBAClEnB;aAAAA,WAAAA,qBAAAA,+BAAAA;QACF;IACF;IAEAtB,MAAM0C,SAAS,CAAC;QACdC,WAAW;YACTN,kBAAkBO,GAAG,CAACf,SAAUgB,IAAI;QACtC;IACF,GAAG;QAACR;QAAmBR;KAAS;IAEhC,IAAMiB,UAAU9C,MAAM+C,WAAW,CAAC,SAACT;eAAqCA,EAAEU,eAAe;OAAI,EAAE;IAE/F,IAAMC,YAAYjD,MAAMoC,OAAO,CAAC;QAC9B,IAAI5B,YAA2DW,YAAY;YACzE,OAAOA;QACT;QAEA,OAAO;YAAEH,SAASG;QAAyB;IAC7C,GAAG;QAACA;KAAU;IAEd,qBACE,oBAACP;QACCqC,WAAWA;QACXC,gBAAgBzB;QAChBC,WAAWA;QACXH,WAAWtB,8BAET6B,aAAarB,SAAS0C,GAAG,wDAEzBpB,UAAUzB,SAAS8C,OAAO,sCAC1B7B;QAEFC,OAAOA;QACP6B,QAAQrB;QACRsB,aAAa;qBAEb,oBAAC3C;QAAUW,SAASA;OAAaM;QAAWkB,SAASA;QAClD5B;AAIT,EAAE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import type { PlacementWithAuto } from '../../lib/floating/types';
|
|
2
3
|
import { FocusTrapProps } from '../FocusTrap/FocusTrap';
|
|
3
4
|
export type PopupDirection = 'top' | 'bottom' | ((elRef: React.RefObject<HTMLDivElement>) => 'top' | 'bottom');
|
|
4
5
|
export type ToggleRef = Element | null | undefined | React.RefObject<Element>;
|
|
@@ -12,8 +13,16 @@ export interface SharedDropdownProps extends FocusTrapProps {
|
|
|
12
13
|
toggleRef?: ToggleRef;
|
|
13
14
|
/**
|
|
14
15
|
* Направление на десктопе
|
|
16
|
+
* @deprecated v5.7.0
|
|
17
|
+
*
|
|
18
|
+
* Используйте `placement` для позиционирования
|
|
15
19
|
*/
|
|
16
20
|
popupDirection?: PopupDirection;
|
|
21
|
+
/**
|
|
22
|
+
* Позиционирование всплывающего окна для десктопа.
|
|
23
|
+
* Компонент выберет наилучшее расположение сам, но можно задать приоритетное направление с помощью этого свойства
|
|
24
|
+
*/
|
|
25
|
+
placement?: PlacementWithAuto;
|
|
17
26
|
/**
|
|
18
27
|
* Отступ, где заданное кол-во единиц равняется пикселям
|
|
19
28
|
* */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ActionSheet/types.ts"],"sourcesContent":["import * as React from 'react';\nimport { FocusTrapProps } from '../FocusTrap/FocusTrap';\n\nexport type PopupDirection =\n | 'top'\n | 'bottom'\n | ((elRef: React.RefObject<HTMLDivElement>) => 'top' | 'bottom');\nexport type ToggleRef = Element | null | undefined | React.RefObject<Element>;\n\nexport interface SharedDropdownProps extends FocusTrapProps {\n closing: boolean;\n /**\n * Элемент, рядом с которым вылезает попап на десктопе.\n * Лучше передавать RefObject c current.\n * В v6 будет обязательным.\n */\n toggleRef?: ToggleRef; // TODO [>=6]: сделать обязательным\n /**\n * Направление на десктопе\n */\n popupDirection?: PopupDirection;\n /**\n * Отступ, где заданное кол-во единиц равняется пикселям\n * */\n popupOffsetDistance?: number;\n}\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ActionSheet/types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { PlacementWithAuto } from '../../lib/floating/types';\nimport { FocusTrapProps } from '../FocusTrap/FocusTrap';\n\nexport type PopupDirection =\n | 'top'\n | 'bottom'\n | ((elRef: React.RefObject<HTMLDivElement>) => 'top' | 'bottom');\nexport type ToggleRef = Element | null | undefined | React.RefObject<Element>;\n\nexport interface SharedDropdownProps extends FocusTrapProps {\n closing: boolean;\n /**\n * Элемент, рядом с которым вылезает попап на десктопе.\n * Лучше передавать RefObject c current.\n * В v6 будет обязательным.\n */\n toggleRef?: ToggleRef; // TODO [>=6]: сделать обязательным\n /**\n * Направление на десктопе\n * @deprecated v5.7.0\n *\n * Используйте `placement` для позиционирования\n */\n popupDirection?: PopupDirection;\n /**\n * Позиционирование всплывающего окна для десктопа.\n * Компонент выберет наилучшее расположение сам, но можно задать приоритетное направление с помощью этого свойства\n */\n placement?: PlacementWithAuto;\n /**\n * Отступ, где заданное кол-во единиц равняется пикселям\n * */\n popupOffsetDistance?: number;\n}\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { AnchorHTMLAttributesOnly } from '../../types';
|
|
2
|
+
import { AlignType, AnchorHTMLAttributesOnly } from '../../types';
|
|
3
3
|
import { ButtonProps } from '../Button/Button';
|
|
4
|
+
import { AlertActionProps } from './AlertAction';
|
|
5
|
+
type AlertActionMode = 'cancel' | 'destructive' | 'default';
|
|
4
6
|
export interface AlertActionInterface extends Pick<ButtonProps, 'Component'>, AnchorHTMLAttributesOnly {
|
|
5
7
|
title: string;
|
|
6
8
|
action?: VoidFunction;
|
|
7
9
|
autoClose?: boolean;
|
|
8
|
-
mode:
|
|
10
|
+
mode: AlertActionMode;
|
|
9
11
|
}
|
|
10
12
|
export interface AlertProps extends React.HTMLAttributes<HTMLElement> {
|
|
11
13
|
actionsLayout?: 'vertical' | 'horizontal';
|
|
14
|
+
actionsAlign?: AlignType;
|
|
12
15
|
actions?: AlertActionInterface[];
|
|
16
|
+
renderAction?: (props: AlertActionProps) => React.ReactNode;
|
|
13
17
|
header?: React.ReactNode;
|
|
14
18
|
text?: React.ReactNode;
|
|
15
19
|
onClose: VoidFunction;
|
|
@@ -21,4 +25,5 @@ export interface AlertProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
21
25
|
/**
|
|
22
26
|
* @see https://vkcom.github.io/VKUI/#/Alert
|
|
23
27
|
*/
|
|
24
|
-
export declare const Alert: ({ actions, actionsLayout, children, className, style, text, header, onClose, dismissLabel, ...restProps }: AlertProps) => React.JSX.Element;
|
|
28
|
+
export declare const Alert: ({ actions, actionsLayout, children, className, style, text, header, onClose, dismissLabel, renderAction, actionsAlign, ...restProps }: AlertProps) => React.JSX.Element;
|
|
29
|
+
export {};
|
|
@@ -11,94 +11,15 @@ import { useWaitTransitionFinish } from "../../hooks/useWaitTransitionFinish";
|
|
|
11
11
|
import { Platform } from "../../lib/platform";
|
|
12
12
|
import { stopPropagation } from "../../lib/utils";
|
|
13
13
|
import { useScrollLock } from "../AppRoot/ScrollContext";
|
|
14
|
-
import { Button } from "../Button/Button";
|
|
15
14
|
import { FocusTrap } from "../FocusTrap/FocusTrap";
|
|
16
15
|
import { ModalDismissButton } from "../ModalDismissButton/ModalDismissButton";
|
|
17
16
|
import { PopoutWrapper } from "../PopoutWrapper/PopoutWrapper";
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { Footnote } from "../Typography/Footnote/Footnote";
|
|
21
|
-
import { Text } from "../Typography/Text/Text";
|
|
22
|
-
import { Title } from "../Typography/Title/Title";
|
|
23
|
-
var AlertHeader = function(props) {
|
|
24
|
-
var platform = usePlatform();
|
|
25
|
-
switch(platform){
|
|
26
|
-
case Platform.IOS:
|
|
27
|
-
return /*#__PURE__*/ React.createElement(Title, _object_spread({
|
|
28
|
-
className: "vkuiAlert__header",
|
|
29
|
-
weight: "1",
|
|
30
|
-
level: "3"
|
|
31
|
-
}, props));
|
|
32
|
-
default:
|
|
33
|
-
return /*#__PURE__*/ React.createElement(Title, _object_spread({
|
|
34
|
-
className: "vkuiAlert__header",
|
|
35
|
-
weight: "2",
|
|
36
|
-
level: "2"
|
|
37
|
-
}, props));
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
var AlertText = function(props) {
|
|
41
|
-
var platform = usePlatform();
|
|
42
|
-
switch(platform){
|
|
43
|
-
case Platform.VKCOM:
|
|
44
|
-
return /*#__PURE__*/ React.createElement(Footnote, _object_spread({
|
|
45
|
-
className: "vkuiAlert__text"
|
|
46
|
-
}, props));
|
|
47
|
-
case Platform.IOS:
|
|
48
|
-
return /*#__PURE__*/ React.createElement(Caption, _object_spread({
|
|
49
|
-
className: "vkuiAlert__text"
|
|
50
|
-
}, props));
|
|
51
|
-
default:
|
|
52
|
-
return /*#__PURE__*/ React.createElement(Text, _object_spread({
|
|
53
|
-
Component: "span",
|
|
54
|
-
className: "vkuiAlert__text",
|
|
55
|
-
weight: "3"
|
|
56
|
-
}, props));
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
var AlertAction = function(_param) {
|
|
60
|
-
var action = _param.action, onItemClick = _param.onItemClick, restProps = _object_without_properties(_param, [
|
|
61
|
-
"action",
|
|
62
|
-
"onItemClick"
|
|
63
|
-
]);
|
|
64
|
-
var platform = usePlatform();
|
|
65
|
-
var handleItemClick = React.useCallback(function() {
|
|
66
|
-
return onItemClick(action);
|
|
67
|
-
}, [
|
|
68
|
-
onItemClick,
|
|
69
|
-
action
|
|
70
|
-
]);
|
|
71
|
-
if (platform === Platform.IOS) {
|
|
72
|
-
var title = action.title, actionProp = action.action, autoClose = action.autoClose, mode = action.mode, restActionProps = _object_without_properties(action, [
|
|
73
|
-
"title",
|
|
74
|
-
"action",
|
|
75
|
-
"autoClose",
|
|
76
|
-
"mode"
|
|
77
|
-
]);
|
|
78
|
-
return /*#__PURE__*/ React.createElement(Tappable, _object_spread({
|
|
79
|
-
Component: restActionProps.href ? "a" : "button",
|
|
80
|
-
className: classNames("vkuiAlert__action", mode === "destructive" && "vkuiAlert__action--mode-destructive", mode === "cancel" && "vkuiAlert__action--mode-cancel"),
|
|
81
|
-
onClick: handleItemClick
|
|
82
|
-
}, restActionProps, restProps), title);
|
|
83
|
-
}
|
|
84
|
-
var mode1 = "tertiary";
|
|
85
|
-
if (platform === Platform.VKCOM) {
|
|
86
|
-
mode1 = action.mode === "cancel" ? "secondary" : "primary";
|
|
87
|
-
}
|
|
88
|
-
return /*#__PURE__*/ React.createElement(Button, {
|
|
89
|
-
className: classNames("vkuiAlert__button", action.mode === "cancel" && "vkuiAlert__button--mode-cancel"),
|
|
90
|
-
mode: mode1,
|
|
91
|
-
size: "m",
|
|
92
|
-
onClick: handleItemClick,
|
|
93
|
-
Component: action.Component,
|
|
94
|
-
href: action.href,
|
|
95
|
-
target: action.target
|
|
96
|
-
}, action.title);
|
|
97
|
-
};
|
|
17
|
+
import { AlertActions } from "./AlertActions";
|
|
18
|
+
import { AlertHeader, AlertText } from "./AlertTypography";
|
|
98
19
|
/**
|
|
99
20
|
* @see https://vkcom.github.io/VKUI/#/Alert
|
|
100
21
|
*/ export var Alert = function(_param) {
|
|
101
|
-
var _param_actions = _param.actions, actions = _param_actions === void 0 ? [] : _param_actions, _param_actionsLayout = _param.actionsLayout, actionsLayout = _param_actionsLayout === void 0 ? "horizontal" : _param_actionsLayout, children = _param.children, className = _param.className, style = _param.style, text = _param.text, header = _param.header, onClose = _param.onClose, _param_dismissLabel = _param.dismissLabel, dismissLabel = _param_dismissLabel === void 0 ? "Закрыть предупреждение" : _param_dismissLabel, restProps = _object_without_properties(_param, [
|
|
22
|
+
var _param_actions = _param.actions, actions = _param_actions === void 0 ? [] : _param_actions, _param_actionsLayout = _param.actionsLayout, actionsLayout = _param_actionsLayout === void 0 ? "horizontal" : _param_actionsLayout, children = _param.children, className = _param.className, style = _param.style, text = _param.text, header = _param.header, onClose = _param.onClose, _param_dismissLabel = _param.dismissLabel, dismissLabel = _param_dismissLabel === void 0 ? "Закрыть предупреждение" : _param_dismissLabel, renderAction = _param.renderAction, actionsAlign = _param.actionsAlign, restProps = _object_without_properties(_param, [
|
|
102
23
|
"actions",
|
|
103
24
|
"actionsLayout",
|
|
104
25
|
"children",
|
|
@@ -107,7 +28,9 @@ var AlertAction = function(_param) {
|
|
|
107
28
|
"text",
|
|
108
29
|
"header",
|
|
109
30
|
"onClose",
|
|
110
|
-
"dismissLabel"
|
|
31
|
+
"dismissLabel",
|
|
32
|
+
"renderAction",
|
|
33
|
+
"actionsAlign"
|
|
111
34
|
]);
|
|
112
35
|
var generatedId = useId();
|
|
113
36
|
var headerId = "vkui-alert-".concat(generatedId, "-header");
|
|
@@ -117,7 +40,6 @@ var AlertAction = function(_param) {
|
|
|
117
40
|
var waitTransitionFinish = useWaitTransitionFinish().waitTransitionFinish;
|
|
118
41
|
var _React_useState = _sliced_to_array(React.useState(false), 2), closing = _React_useState[0], setClosing = _React_useState[1];
|
|
119
42
|
var elementRef = React.useRef(null);
|
|
120
|
-
var resolvedActionsLayout = platform === Platform.VKCOM ? "horizontal" : actionsLayout;
|
|
121
43
|
var timeout = platform === Platform.IOS ? 300 : 200;
|
|
122
44
|
var close = React.useCallback(function() {
|
|
123
45
|
setClosing(true);
|
|
@@ -162,7 +84,7 @@ var AlertAction = function(_param) {
|
|
|
162
84
|
onClick: stopPropagation,
|
|
163
85
|
onClose: close,
|
|
164
86
|
timeout: timeout,
|
|
165
|
-
className: classNames("vkuiAlert", platform === Platform.IOS && "vkuiAlert--ios", platform === Platform.VKCOM && "vkuiAlert--vkcom",
|
|
87
|
+
className: classNames("vkuiAlert", platform === Platform.IOS && "vkuiAlert--ios", platform === Platform.VKCOM && "vkuiAlert--vkcom", closing && "vkuiAlert--closing", isDesktop && "vkuiAlert--desktop"),
|
|
166
88
|
role: "alertdialog",
|
|
167
89
|
"aria-modal": true,
|
|
168
90
|
"aria-labelledby": headerId,
|
|
@@ -173,15 +95,13 @@ var AlertAction = function(_param) {
|
|
|
173
95
|
id: headerId
|
|
174
96
|
}, header), hasReactNode(text) && /*#__PURE__*/ React.createElement(AlertText, {
|
|
175
97
|
id: textId
|
|
176
|
-
}, text), children), /*#__PURE__*/ React.createElement(
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
});
|
|
184
|
-
})), isDesktop && /*#__PURE__*/ React.createElement(ModalDismissButton, {
|
|
98
|
+
}, text), children), /*#__PURE__*/ React.createElement(AlertActions, {
|
|
99
|
+
actions: actions,
|
|
100
|
+
actionsAlign: actionsAlign,
|
|
101
|
+
actionsLayout: actionsLayout,
|
|
102
|
+
renderAction: renderAction,
|
|
103
|
+
onItemClick: onItemClick
|
|
104
|
+
}), isDesktop && /*#__PURE__*/ React.createElement(ModalDismissButton, {
|
|
185
105
|
onClick: close,
|
|
186
106
|
"aria-label": dismissLabel
|
|
187
107
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useId } from '../../hooks/useId';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { Platform } from '../../lib/platform';\nimport { stopPropagation } from '../../lib/utils';\nimport { AnchorHTMLAttributesOnly, HasChildren } from '../../types';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { Button, ButtonProps } from '../Button/Button';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Caption } from '../Typography/Caption/Caption';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './Alert.module.css';\n\nexport interface AlertActionInterface\n extends Pick<ButtonProps, 'Component'>,\n AnchorHTMLAttributesOnly {\n title: string;\n action?: VoidFunction;\n autoClose?: boolean;\n mode: 'cancel' | 'destructive' | 'default';\n}\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLElement> {\n actionsLayout?: 'vertical' | 'horizontal';\n actions?: AlertActionInterface[];\n header?: React.ReactNode;\n text?: React.ReactNode;\n onClose: VoidFunction;\n\n /**\n * `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n}\n\ntype ItemClickHandler = (item: AlertActionInterface) => void;\n\ninterface AlertTypography extends HasChildren {\n id: string;\n}\n\nconst AlertHeader = (props: AlertTypography) => {\n const platform = usePlatform();\n\n switch (platform) {\n case Platform.IOS:\n return <Title className={styles['Alert__header']} weight=\"1\" level=\"3\" {...props} />;\n default:\n return <Title className={styles['Alert__header']} weight=\"2\" level=\"2\" {...props} />;\n }\n};\n\nconst AlertText = (props: AlertTypography) => {\n const platform = usePlatform();\n\n switch (platform) {\n case Platform.VKCOM:\n return <Footnote className={styles['Alert__text']} {...props} />;\n case Platform.IOS:\n return <Caption className={styles['Alert__text']} {...props} />;\n default:\n return <Text Component=\"span\" className={styles['Alert__text']} weight=\"3\" {...props} />;\n }\n};\n\ninterface AlertActionProps {\n action: AlertActionInterface;\n onItemClick: ItemClickHandler;\n}\n\nconst AlertAction = ({ action, onItemClick, ...restProps }: AlertActionProps) => {\n const platform = usePlatform();\n const handleItemClick = React.useCallback(() => onItemClick(action), [onItemClick, action]);\n\n if (platform === Platform.IOS) {\n const { title, action: actionProp, autoClose, mode, ...restActionProps } = action;\n\n return (\n <Tappable\n Component={restActionProps.href ? 'a' : 'button'}\n className={classNames(\n styles['Alert__action'],\n mode === 'destructive' && styles['Alert__action--mode-destructive'],\n mode === 'cancel' && styles['Alert__action--mode-cancel'],\n )}\n onClick={handleItemClick}\n {...restActionProps}\n {...restProps}\n >\n {title}\n </Tappable>\n );\n }\n\n let mode: ButtonProps['mode'] = 'tertiary';\n\n if (platform === Platform.VKCOM) {\n mode = action.mode === 'cancel' ? 'secondary' : 'primary';\n }\n\n return (\n <Button\n className={classNames(\n styles['Alert__button'],\n action.mode === 'cancel' && styles['Alert__button--mode-cancel'],\n )}\n mode={mode}\n size=\"m\"\n onClick={handleItemClick}\n Component={action.Component}\n href={action.href}\n target={action.target}\n >\n {action.title}\n </Button>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Alert\n */\nexport const Alert = ({\n actions = [],\n actionsLayout = 'horizontal',\n children,\n className,\n style,\n text,\n header,\n onClose,\n dismissLabel = 'Закрыть предупреждение',\n ...restProps\n}: AlertProps) => {\n const generatedId = useId();\n\n const headerId = `vkui-alert-${generatedId}-header`;\n const textId = `vkui-alert-${generatedId}-text`;\n\n const platform = usePlatform();\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const { waitTransitionFinish } = useWaitTransitionFinish();\n\n const [closing, setClosing] = React.useState(false);\n\n const elementRef = React.useRef<HTMLDivElement>(null);\n\n const resolvedActionsLayout: AlertProps['actionsLayout'] =\n platform === Platform.VKCOM ? 'horizontal' : actionsLayout;\n\n const timeout = platform === Platform.IOS ? 300 : 200;\n\n const close = React.useCallback(() => {\n setClosing(true);\n waitTransitionFinish(\n elementRef.current,\n (e?: TransitionEvent) => {\n if (!e || e.propertyName === 'opacity') {\n onClose();\n }\n },\n timeout,\n );\n }, [elementRef, waitTransitionFinish, onClose, timeout]);\n\n const onItemClick: ItemClickHandler = React.useCallback(\n (item: AlertActionInterface) => {\n const { action, autoClose } = item;\n\n if (autoClose) {\n setClosing(true);\n waitTransitionFinish(\n elementRef.current,\n (e?: TransitionEvent) => {\n if (!e || e.propertyName === 'opacity') {\n onClose();\n action && action();\n }\n },\n timeout,\n );\n } else {\n action && action();\n }\n },\n [elementRef, waitTransitionFinish, onClose, timeout],\n );\n\n useScrollLock();\n\n return (\n <PopoutWrapper className={className} closing={closing} style={style} onClick={close}>\n <FocusTrap\n {...restProps}\n getRootRef={elementRef}\n onClick={stopPropagation}\n onClose={close}\n timeout={timeout}\n className={classNames(\n styles['Alert'],\n platform === Platform.IOS && styles['Alert--ios'],\n platform === Platform.VKCOM && styles['Alert--vkcom'],\n resolvedActionsLayout === 'vertical' ? styles['Alert--v'] : styles['Alert--h'],\n closing && styles['Alert--closing'],\n isDesktop && styles['Alert--desktop'],\n )}\n role=\"alertdialog\"\n aria-modal\n aria-labelledby={headerId}\n aria-describedby={textId}\n >\n <div className={styles['Alert__content']}>\n {hasReactNode(header) && <AlertHeader id={headerId}>{header}</AlertHeader>}\n {hasReactNode(text) && <AlertText id={textId}>{text}</AlertText>}\n {children}\n </div>\n <div className={styles['Alert__actions']}>\n {actions.map((action, i) => (\n <AlertAction key={i} action={action} onItemClick={onItemClick} />\n ))}\n </div>\n {isDesktop && <ModalDismissButton onClick={close} aria-label={dismissLabel} />}\n </FocusTrap>\n </PopoutWrapper>\n );\n};\n"],"names":["React","classNames","hasReactNode","useAdaptivityWithJSMediaQueries","useId","usePlatform","useWaitTransitionFinish","Platform","stopPropagation","useScrollLock","Button","FocusTrap","ModalDismissButton","PopoutWrapper","Tappable","Caption","Footnote","Text","Title","AlertHeader","props","platform","IOS","className","weight","level","AlertText","VKCOM","Component","AlertAction","action","onItemClick","restProps","handleItemClick","useCallback","title","actionProp","autoClose","mode","restActionProps","href","onClick","size","target","Alert","actions","actionsLayout","children","style","text","header","onClose","dismissLabel","generatedId","headerId","textId","isDesktop","waitTransitionFinish","useState","closing","setClosing","elementRef","useRef","resolvedActionsLayout","timeout","close","current","e","propertyName","item","getRootRef","role","aria-modal","aria-labelledby","aria-describedby","div","id","map","i","key","aria-label"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useId } from '../../hooks/useId';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { Platform } from '../../lib/platform';\nimport { stopPropagation } from '../../lib/utils';\nimport { AlignType, AnchorHTMLAttributesOnly } from '../../types';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { ButtonProps } from '../Button/Button';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { AlertActionProps } from './AlertAction';\nimport { AlertActions } from './AlertActions';\nimport { AlertHeader, AlertText } from './AlertTypography';\nimport styles from './Alert.module.css';\n\ntype AlertActionMode = 'cancel' | 'destructive' | 'default';\n\nexport interface AlertActionInterface\n extends Pick<ButtonProps, 'Component'>,\n AnchorHTMLAttributesOnly {\n title: string;\n action?: VoidFunction;\n autoClose?: boolean;\n mode: AlertActionMode;\n}\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLElement> {\n actionsLayout?: 'vertical' | 'horizontal';\n actionsAlign?: AlignType;\n actions?: AlertActionInterface[];\n renderAction?: (props: AlertActionProps) => React.ReactNode;\n header?: React.ReactNode;\n text?: React.ReactNode;\n onClose: VoidFunction;\n\n /**\n * `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Alert\n */\nexport const Alert = ({\n actions = [],\n actionsLayout = 'horizontal',\n children,\n className,\n style,\n text,\n header,\n onClose,\n dismissLabel = 'Закрыть предупреждение',\n renderAction,\n actionsAlign,\n ...restProps\n}: AlertProps) => {\n const generatedId = useId();\n\n const headerId = `vkui-alert-${generatedId}-header`;\n const textId = `vkui-alert-${generatedId}-text`;\n\n const platform = usePlatform();\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const { waitTransitionFinish } = useWaitTransitionFinish();\n\n const [closing, setClosing] = React.useState(false);\n\n const elementRef = React.useRef<HTMLDivElement>(null);\n\n const timeout = platform === Platform.IOS ? 300 : 200;\n\n const close = React.useCallback(() => {\n setClosing(true);\n waitTransitionFinish(\n elementRef.current,\n (e?: TransitionEvent) => {\n if (!e || e.propertyName === 'opacity') {\n onClose();\n }\n },\n timeout,\n );\n }, [elementRef, waitTransitionFinish, onClose, timeout]);\n\n const onItemClick = React.useCallback(\n (item: AlertActionInterface) => {\n const { action, autoClose } = item;\n\n if (autoClose) {\n setClosing(true);\n waitTransitionFinish(\n elementRef.current,\n (e?: TransitionEvent) => {\n if (!e || e.propertyName === 'opacity') {\n onClose();\n action && action();\n }\n },\n timeout,\n );\n } else {\n action && action();\n }\n },\n [elementRef, waitTransitionFinish, onClose, timeout],\n );\n\n useScrollLock();\n\n return (\n <PopoutWrapper className={className} closing={closing} style={style} onClick={close}>\n <FocusTrap\n {...restProps}\n getRootRef={elementRef}\n onClick={stopPropagation}\n onClose={close}\n timeout={timeout}\n className={classNames(\n styles['Alert'],\n platform === Platform.IOS && styles['Alert--ios'],\n platform === Platform.VKCOM && styles['Alert--vkcom'],\n closing && styles['Alert--closing'],\n isDesktop && styles['Alert--desktop'],\n )}\n role=\"alertdialog\"\n aria-modal\n aria-labelledby={headerId}\n aria-describedby={textId}\n >\n <div className={styles['Alert__content']}>\n {hasReactNode(header) && <AlertHeader id={headerId}>{header}</AlertHeader>}\n {hasReactNode(text) && <AlertText id={textId}>{text}</AlertText>}\n {children}\n </div>\n <AlertActions\n actions={actions}\n actionsAlign={actionsAlign}\n actionsLayout={actionsLayout}\n renderAction={renderAction}\n onItemClick={onItemClick}\n />\n {isDesktop && <ModalDismissButton onClick={close} aria-label={dismissLabel} />}\n </FocusTrap>\n </PopoutWrapper>\n );\n};\n"],"names":["React","classNames","hasReactNode","useAdaptivityWithJSMediaQueries","useId","usePlatform","useWaitTransitionFinish","Platform","stopPropagation","useScrollLock","FocusTrap","ModalDismissButton","PopoutWrapper","AlertActions","AlertHeader","AlertText","Alert","actions","actionsLayout","children","className","style","text","header","onClose","dismissLabel","renderAction","actionsAlign","restProps","generatedId","headerId","textId","platform","isDesktop","waitTransitionFinish","useState","closing","setClosing","elementRef","useRef","timeout","IOS","close","useCallback","current","e","propertyName","onItemClick","item","action","autoClose","onClick","getRootRef","VKCOM","role","aria-modal","aria-labelledby","aria-describedby","div","id","aria-label"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { AnchorHTMLAttributesOnly } from '../../types';
|
|
3
|
+
import { AlertActionInterface } from './Alert';
|
|
4
|
+
export interface AlertActionProps extends Pick<AlertActionInterface, 'Component' | 'mode'>, AnchorHTMLAttributesOnly {
|
|
5
|
+
children: string;
|
|
6
|
+
onClick: React.MouseEventHandler<HTMLElement>;
|
|
7
|
+
}
|
|
8
|
+
export declare const AlertAction: (props: AlertActionProps) => React.JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
2
|
+
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { classNames } from "@vkontakte/vkjs";
|
|
5
|
+
import { usePlatform } from "../../hooks/usePlatform";
|
|
6
|
+
import { Platform } from "../../lib/platform";
|
|
7
|
+
import { Button } from "../Button/Button";
|
|
8
|
+
import { Tappable } from "../Tappable/Tappable";
|
|
9
|
+
var AlertActionIos = function(_param) {
|
|
10
|
+
var mode = _param.mode, restProps = _object_without_properties(_param, [
|
|
11
|
+
"mode"
|
|
12
|
+
]);
|
|
13
|
+
return /*#__PURE__*/ React.createElement(Tappable, _object_spread({
|
|
14
|
+
Component: restProps.href ? "a" : "button",
|
|
15
|
+
className: classNames("vkuiAlert__action", mode === "destructive" && "vkuiAlert__action--mode-destructive", mode === "cancel" && "vkuiAlert__action--mode-cancel")
|
|
16
|
+
}, restProps));
|
|
17
|
+
};
|
|
18
|
+
var AlertActionBase = function(_param) {
|
|
19
|
+
var mode = _param.mode, restProps = _object_without_properties(_param, [
|
|
20
|
+
"mode"
|
|
21
|
+
]);
|
|
22
|
+
var platform = usePlatform();
|
|
23
|
+
var buttonMode = "tertiary";
|
|
24
|
+
if (platform === Platform.VKCOM) {
|
|
25
|
+
buttonMode = mode === "cancel" ? "secondary" : "primary";
|
|
26
|
+
}
|
|
27
|
+
return /*#__PURE__*/ React.createElement(Button, _object_spread({
|
|
28
|
+
className: classNames("vkuiAlert__button", mode === "cancel" && "vkuiAlert__button--mode-cancel"),
|
|
29
|
+
mode: buttonMode,
|
|
30
|
+
size: "m"
|
|
31
|
+
}, restProps));
|
|
32
|
+
};
|
|
33
|
+
export var AlertAction = function(props) {
|
|
34
|
+
var platform = usePlatform();
|
|
35
|
+
if (platform === Platform.IOS) {
|
|
36
|
+
return /*#__PURE__*/ React.createElement(AlertActionIos, props);
|
|
37
|
+
}
|
|
38
|
+
return /*#__PURE__*/ React.createElement(AlertActionBase, props);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=AlertAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Alert/AlertAction.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { AnchorHTMLAttributesOnly } from '../../types';\nimport { Button, ButtonProps } from '../Button/Button';\nimport { Tappable } from '../Tappable/Tappable';\nimport { AlertActionInterface } from './Alert';\nimport styles from './Alert.module.css';\n\nexport interface AlertActionProps\n extends Pick<AlertActionInterface, 'Component' | 'mode'>,\n AnchorHTMLAttributesOnly {\n children: string;\n onClick: React.MouseEventHandler<HTMLElement>;\n}\n\nconst AlertActionIos = ({ mode, ...restProps }: AlertActionProps) => {\n return (\n <Tappable\n Component={restProps.href ? 'a' : 'button'}\n className={classNames(\n styles['Alert__action'],\n mode === 'destructive' && styles['Alert__action--mode-destructive'],\n mode === 'cancel' && styles['Alert__action--mode-cancel'],\n )}\n {...restProps}\n />\n );\n};\n\nconst AlertActionBase = ({ mode, ...restProps }: AlertActionProps) => {\n const platform = usePlatform();\n\n let buttonMode: ButtonProps['mode'] = 'tertiary';\n\n if (platform === Platform.VKCOM) {\n buttonMode = mode === 'cancel' ? 'secondary' : 'primary';\n }\n\n return (\n <Button\n className={classNames(\n styles['Alert__button'],\n mode === 'cancel' && styles['Alert__button--mode-cancel'],\n )}\n mode={buttonMode}\n size=\"m\"\n {...restProps}\n />\n );\n};\n\nexport const AlertAction = (props: AlertActionProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return <AlertActionIos {...props} />;\n }\n\n return <AlertActionBase {...props} />;\n};\n"],"names":["React","classNames","usePlatform","Platform","Button","Tappable","AlertActionIos","mode","restProps","Component","href","className","AlertActionBase","platform","buttonMode","VKCOM","size","AlertAction","props","IOS"],"mappings":";;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,qBAAqB;AAE9C,SAASC,MAAM,QAAqB,mBAAmB;AACvD,SAASC,QAAQ,QAAQ,uBAAuB;AAWhD,IAAMC,iBAAiB;QAAGC,cAAAA,MAASC;QAATD;;IACxB,qBACE,oBAACF;QACCI,WAAWD,UAAUE,IAAI,GAAG,MAAM;QAClCC,WAAWV,gCAETM,SAAS,wDACTA,SAAS;OAEPC;AAGV;AAEA,IAAMI,kBAAkB;QAAGL,cAAAA,MAASC;QAATD;;IACzB,IAAMM,WAAWX;IAEjB,IAAIY,aAAkC;IAEtC,IAAID,aAAaV,SAASY,KAAK,EAAE;QAC/BD,aAAaP,SAAS,WAAW,cAAc;IACjD;IAEA,qBACE,oBAACH;QACCO,WAAWV,gCAETM,SAAS;QAEXA,MAAMO;QACNE,MAAK;OACDR;AAGV;AAEA,OAAO,IAAMS,cAAc,SAACC;IAC1B,IAAML,WAAWX;IAEjB,IAAIW,aAAaV,SAASgB,GAAG,EAAE;QAC7B,qBAAO,oBAACb,gBAAmBY;IAC7B;IAEA,qBAAO,oBAACN,iBAAoBM;AAC9B,EAAE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { AlertActionInterface, AlertProps } from './Alert';
|
|
3
|
+
type ItemClickHandler = (item: AlertActionInterface) => void;
|
|
4
|
+
interface AlertActionsProps extends Pick<AlertProps, 'actions' | 'actionsAlign' | 'renderAction' | 'actionsLayout'> {
|
|
5
|
+
onItemClick: ItemClickHandler;
|
|
6
|
+
}
|
|
7
|
+
export declare const AlertActions: ({ actions, renderAction, onItemClick, actionsAlign, actionsLayout, }: AlertActionsProps) => React.JSX.Element;
|
|
8
|
+
export {};
|