@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.
Files changed (165) hide show
  1. package/dist/cjs/components/ActionSheet/ActionSheet.d.ts +4 -4
  2. package/dist/cjs/components/ActionSheet/ActionSheet.js +14 -4
  3. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  4. package/dist/cjs/components/ActionSheet/ActionSheetDropdown.d.ts +1 -1
  5. package/dist/cjs/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
  6. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.d.ts +1 -1
  7. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +5 -3
  8. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  9. package/dist/cjs/components/ActionSheet/types.d.ts +9 -0
  10. package/dist/cjs/components/ActionSheet/types.js.map +1 -1
  11. package/dist/cjs/components/Alert/Alert.d.ts +8 -3
  12. package/dist/cjs/components/Alert/Alert.js +16 -96
  13. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  14. package/dist/cjs/components/Alert/AlertAction.d.ts +8 -0
  15. package/dist/cjs/components/Alert/AlertAction.js +52 -0
  16. package/dist/cjs/components/Alert/AlertAction.js.map +1 -0
  17. package/dist/cjs/components/Alert/AlertActions.d.ts +8 -0
  18. package/dist/cjs/components/Alert/AlertActions.js +54 -0
  19. package/dist/cjs/components/Alert/AlertActions.js.map +1 -0
  20. package/dist/cjs/components/Alert/AlertTypography.d.ts +8 -0
  21. package/dist/cjs/components/Alert/AlertTypography.js +65 -0
  22. package/dist/cjs/components/Alert/AlertTypography.js.map +1 -0
  23. package/dist/cjs/components/NativeSelect/NativeSelect.js +3 -1
  24. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  25. package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js +1 -1
  26. package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  27. package/dist/cjs/components/Popover/Popover.js +1 -1
  28. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  29. package/dist/cjs/components/PopperArrow/PopperArrow.d.ts +1 -2
  30. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
  31. package/dist/cjs/components/Progress/Progress.d.ts +5 -1
  32. package/dist/cjs/components/Progress/Progress.js +18 -3
  33. package/dist/cjs/components/Progress/Progress.js.map +1 -1
  34. package/dist/cjs/components/Root/Root.js +4 -4
  35. package/dist/cjs/components/Search/Search.d.ts +5 -1
  36. package/dist/cjs/components/Search/Search.js +10 -4
  37. package/dist/cjs/components/Search/Search.js.map +1 -1
  38. package/dist/cjs/components/Snackbar/Snackbar.d.ts +5 -1
  39. package/dist/cjs/components/Snackbar/Snackbar.js +8 -3
  40. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  41. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.d.ts +2 -1
  42. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js +17 -10
  43. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  44. package/dist/cjs/components/Tooltip/Tooltip.d.ts +3 -37
  45. package/dist/cjs/components/Tooltip/Tooltip.js +14 -39
  46. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  47. package/dist/cjs/components/TooltipBase/TooltipBase.d.ts +49 -0
  48. package/dist/cjs/components/TooltipBase/TooltipBase.js +58 -0
  49. package/dist/cjs/components/TooltipBase/TooltipBase.js.map +1 -0
  50. package/dist/cjs/components/View/View.js +4 -4
  51. package/dist/cjs/components/View/ViewInfinite.js +4 -4
  52. package/dist/components/ActionSheet/ActionSheet.d.ts +4 -4
  53. package/dist/components/ActionSheet/ActionSheet.js +14 -4
  54. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  55. package/dist/components/ActionSheet/ActionSheetDropdown.d.ts +1 -1
  56. package/dist/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
  57. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.d.ts +1 -1
  58. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +5 -3
  59. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  60. package/dist/components/ActionSheet/types.d.ts +9 -0
  61. package/dist/components/ActionSheet/types.js.map +1 -1
  62. package/dist/components/Alert/Alert.d.ts +8 -3
  63. package/dist/components/Alert/Alert.js +14 -94
  64. package/dist/components/Alert/Alert.js.map +1 -1
  65. package/dist/components/Alert/AlertAction.d.ts +8 -0
  66. package/dist/components/Alert/AlertAction.js +41 -0
  67. package/dist/components/Alert/AlertAction.js.map +1 -0
  68. package/dist/components/Alert/AlertActions.d.ts +8 -0
  69. package/dist/components/Alert/AlertActions.js +43 -0
  70. package/dist/components/Alert/AlertActions.js.map +1 -0
  71. package/dist/components/Alert/AlertTypography.d.ts +8 -0
  72. package/dist/components/Alert/AlertTypography.js +46 -0
  73. package/dist/components/Alert/AlertTypography.js.map +1 -0
  74. package/dist/components/NativeSelect/NativeSelect.js +3 -1
  75. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  76. package/dist/components/PopoutWrapper/PopoutWrapper.js +1 -1
  77. package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  78. package/dist/components/Popover/Popover.js +1 -1
  79. package/dist/components/Popover/Popover.js.map +1 -1
  80. package/dist/components/PopperArrow/PopperArrow.d.ts +1 -2
  81. package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
  82. package/dist/components/Progress/Progress.d.ts +5 -1
  83. package/dist/components/Progress/Progress.js +18 -3
  84. package/dist/components/Progress/Progress.js.map +1 -1
  85. package/dist/components/Root/Root.js +4 -4
  86. package/dist/components/Search/Search.d.ts +5 -1
  87. package/dist/components/Search/Search.js +10 -4
  88. package/dist/components/Search/Search.js.map +1 -1
  89. package/dist/components/Snackbar/Snackbar.d.ts +5 -1
  90. package/dist/components/Snackbar/Snackbar.js +8 -3
  91. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  92. package/dist/components/SubnavigationButton/SubnavigationButton.d.ts +2 -1
  93. package/dist/components/SubnavigationButton/SubnavigationButton.js +17 -10
  94. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  95. package/dist/components/Tooltip/Tooltip.d.ts +3 -37
  96. package/dist/components/Tooltip/Tooltip.js +15 -40
  97. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  98. package/dist/components/TooltipBase/TooltipBase.d.ts +49 -0
  99. package/dist/components/TooltipBase/TooltipBase.js +51 -0
  100. package/dist/components/TooltipBase/TooltipBase.js.map +1 -0
  101. package/dist/components/View/View.js +4 -4
  102. package/dist/components/View/ViewInfinite.js +4 -4
  103. package/dist/components.css +10 -9
  104. package/dist/components.css.map +1 -1
  105. package/dist/components.js.tmp +1490 -1085
  106. package/dist/cssm/components/ActionSheet/ActionSheet.d.ts +4 -4
  107. package/dist/cssm/components/ActionSheet/ActionSheet.js +12 -3
  108. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  109. package/dist/cssm/components/ActionSheet/ActionSheet.module.css +0 -1
  110. package/dist/cssm/components/ActionSheet/ActionSheetDropdown.d.ts +1 -1
  111. package/dist/cssm/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
  112. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.d.ts +1 -1
  113. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +3 -2
  114. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  115. package/dist/cssm/components/ActionSheet/types.d.ts +9 -0
  116. package/dist/cssm/components/ActionSheet/types.js.map +1 -1
  117. package/dist/cssm/components/Alert/Alert.d.ts +8 -3
  118. package/dist/cssm/components/Alert/Alert.js +11 -87
  119. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  120. package/dist/cssm/components/Alert/Alert.module.css +36 -30
  121. package/dist/cssm/components/Alert/AlertAction.d.ts +8 -0
  122. package/dist/cssm/components/Alert/AlertAction.js +36 -0
  123. package/dist/cssm/components/Alert/AlertAction.js.map +1 -0
  124. package/dist/cssm/components/Alert/AlertActions.d.ts +8 -0
  125. package/dist/cssm/components/Alert/AlertActions.js +34 -0
  126. package/dist/cssm/components/Alert/AlertActions.js.map +1 -0
  127. package/dist/cssm/components/Alert/AlertTypography.d.ts +8 -0
  128. package/dist/cssm/components/Alert/AlertTypography.js +51 -0
  129. package/dist/cssm/components/Alert/AlertTypography.js.map +1 -0
  130. package/dist/cssm/components/Button/Button.module.css +1 -1
  131. package/dist/cssm/components/Link/Link.module.css +1 -0
  132. package/dist/cssm/components/NativeSelect/NativeSelect.js +3 -1
  133. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  134. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +1 -0
  135. package/dist/cssm/components/Popover/Popover.js +1 -1
  136. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  137. package/dist/cssm/components/Popover/Popover.module.css +4 -0
  138. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +1 -2
  139. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
  140. package/dist/cssm/components/Progress/Progress.d.ts +5 -1
  141. package/dist/cssm/components/Progress/Progress.js +17 -1
  142. package/dist/cssm/components/Progress/Progress.js.map +1 -1
  143. package/dist/cssm/components/Search/Search.d.ts +5 -1
  144. package/dist/cssm/components/Search/Search.js +8 -3
  145. package/dist/cssm/components/Search/Search.js.map +1 -1
  146. package/dist/cssm/components/Search/Search.module.css +4 -1
  147. package/dist/cssm/components/Snackbar/Snackbar.d.ts +5 -1
  148. package/dist/cssm/components/Snackbar/Snackbar.js +6 -2
  149. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  150. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.d.ts +2 -1
  151. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +16 -10
  152. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  153. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +25 -4
  154. package/dist/cssm/components/Tooltip/Tooltip.d.ts +3 -37
  155. package/dist/cssm/components/Tooltip/Tooltip.js +13 -33
  156. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  157. package/dist/cssm/components/Tooltip/Tooltip.module.css +3 -53
  158. package/dist/cssm/components/TooltipBase/TooltipBase.d.ts +49 -0
  159. package/dist/cssm/components/TooltipBase/TooltipBase.js +37 -0
  160. package/dist/cssm/components/TooltipBase/TooltipBase.js.map +1 -0
  161. package/dist/cssm/components/TooltipBase/TooltipBase.module.css +57 -0
  162. package/dist/vkui.css +10 -9
  163. package/dist/vkui.css.map +1 -1
  164. package/dist/vkui.js.tmp +1490 -1085
  165. package/package.json +1 -1
@@ -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: React.ReactNode;
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;
@@ -20,14 +20,17 @@ var _useObjectMemo = require("../../hooks/useObjectMemo");
20
20
  var _usePlatform = require("../../hooks/usePlatform");
21
21
  var _useTimeout = require("../../hooks/useTimeout");
22
22
  var _platform = require("../../lib/platform");
23
+ var _warnOnce = require("../../lib/warnOnce");
23
24
  var _ScrollContext = require("../AppRoot/ScrollContext");
24
25
  var _PopoutWrapper = require("../PopoutWrapper/PopoutWrapper");
25
26
  var _Footnote = require("../Typography/Footnote/Footnote");
26
27
  var _ActionSheetContext = require("./ActionSheetContext");
28
+ var _ActionSheetDefaultIosCloseItem = require("./ActionSheetDefaultIosCloseItem");
27
29
  var _ActionSheetDropdown = require("./ActionSheetDropdown");
28
30
  var _ActionSheetDropdownDesktop = require("./ActionSheetDropdownDesktop");
31
+ var warn = (0, _warnOnce.warnOnce)("ActionSheet");
29
32
  var ActionSheet = function(_param) {
30
- var children = _param.children, className = _param.className, header = _param.header, text = _param.text, style = _param.style, iosCloseItem = _param.iosCloseItem, _param_popupDirection = _param.popupDirection, popupDirection = _param_popupDirection === void 0 ? "bottom" : _param_popupDirection, popupOffsetDistance = _param.popupOffsetDistance, restProps = _object_without_properties._(_param, [
33
+ 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, [
31
34
  "children",
32
35
  "className",
33
36
  "header",
@@ -35,7 +38,8 @@ var ActionSheet = function(_param) {
35
38
  "style",
36
39
  "iosCloseItem",
37
40
  "popupDirection",
38
- "popupOffsetDistance"
41
+ "popupOffsetDistance",
42
+ "placement"
39
43
  ]);
40
44
  var platform = (0, _usePlatform.usePlatform)();
41
45
  var _React_useState = _sliced_to_array._(_react.useState(false), 2), closing = _React_useState[0], setClosing = _React_useState[1];
@@ -84,9 +88,15 @@ var ActionSheet = function(_param) {
84
88
  isDesktop: isDesktop
85
89
  });
86
90
  var DropdownComponent = isDesktop ? _ActionSheetDropdownDesktop.ActionSheetDropdownDesktop : _ActionSheetDropdown.ActionSheetDropdown;
91
+ if (process.env.NODE_ENV === "development" && popupDirection) {
92
+ // TODO [>=6]: popupDirection
93
+ warn('Свойство "popupDirection" будет удалено в v6. Используйте свойство "placement"');
94
+ }
95
+ popupDirection = popupDirection !== undefined ? popupDirection : "bottom";
87
96
  var dropdownProps = isDesktop ? Object.assign(restProps, {
88
97
  popupOffsetDistance: popupOffsetDistance,
89
- popupDirection: popupDirection
98
+ popupDirection: popupDirection,
99
+ placement: placement
90
100
  }) : restProps;
91
101
  var actionSheet = /*#__PURE__*/ _react.createElement(_ActionSheetContext.ActionSheetContext.Provider, {
92
102
  value: contextValue
@@ -104,7 +114,7 @@ var ActionSheet = function(_param) {
104
114
  className: "vkuiActionSheet__title"
105
115
  }, header), text && /*#__PURE__*/ _react.createElement(_Footnote.Footnote, {
106
116
  className: "vkuiActionSheet__text"
107
- }, text)), children, platform === _platform.Platform.IOS && !isDesktop && iosCloseItem));
117
+ }, text)), children, platform === _platform.Platform.IOS && !isDesktop && (iosCloseItem !== null && iosCloseItem !== void 0 ? iosCloseItem : /*#__PURE__*/ _react.createElement(_ActionSheetDefaultIosCloseItem.ActionSheetDefaultIosCloseItem, null))));
108
118
  if (isDesktop) {
109
119
  return actionSheet;
110
120
  }
@@ -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<SharedDropdownProps, 'toggleRef' | 'popupDirection' | 'popupOffsetDistance'>,\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 = 'bottom',\n popupOffsetDistance,\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 const dropdownProps = isDesktop\n ? Object.assign(restProps, { popupOffsetDistance, popupDirection })\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 && !isDesktop && iosCloseItem}\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":["ActionSheet","children","className","header","text","style","iosCloseItem","popupDirection","popupOffsetDistance","restProps","platform","usePlatform","React","useState","closing","setClosing","onClose","_action","useRef","noop","afterClose","current","isDesktop","useAdaptivityWithJSMediaQueries","useScrollLock","timeout","Platform","IOS","fallbackTransitionFinish","useTimeout","useEffect","set","clear","onItemClick","useCallback","action","immediateAction","autoClose","event","persist","contextValue","useObjectMemo","DropdownComponent","ActionSheetDropdownDesktop","ActionSheetDropdown","dropdownProps","Object","assign","actionSheet","ActionSheetContext","Provider","value","undefined","Footnote","weight","PopoutWrapper","alignY","onClick","hasMask","fixed"],"mappings":";;;;+BAkCaA;;;eAAAA;;;;;;;;+DAlCU;oBACF;+CAC2B;6BAClB;2BACF;0BACD;wBACF;6BACK;6BACA;wBACL;kCAC4B;mCACjB;0CACO;AAsBpC,IAAMA,cAAc;QACzBC,kBAAAA,UACAC,mBAAAA,WACAC,gBAAAA,QACAC,cAAAA,MACAC,eAAAA,OACAC,sBAAAA,6CACAC,gBAAAA,oDAAiB,kCACjBC,6BAAAA,qBACGC;QARHR;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,WAAWC,IAAAA,wBAAW;IAC5B,IAA8BC,qCAAAA,OAAMC,QAAQ,CAAC,YAAtCC,UAAuBF,oBAAdG,aAAcH;IAC9B,IAAMI,UAAU;eAAMD,WAAW;;IACjC,IAAME,UAAUL,OAAMM,MAAM,CAACC,UAAI;IAEjC,IAAMC,aAAa;QACjBX,UAAUO,OAAO;QACjBC,QAAQI,OAAO;QACfJ,QAAQI,OAAO,GAAGF,UAAI;IACxB;IAEA,IAAM,AAAEG,YAAcC,IAAAA,gEAA+B,IAA7CD;IAERE,IAAAA,4BAAa,EAAC,CAACF;IAEf,IAAIG,UAAUf,aAAagB,kBAAQ,CAACC,GAAG,GAAG,MAAM;IAEhD,IAAIL,WAAW;QACbG,UAAU;IACZ;IAEA,IAAMG,2BAA2BC,IAAAA,sBAAU,EAACT,YAAYK;IACxDb,OAAMkB,SAAS,CAAC;QACd,IAAIhB,SAAS;YACXc,yBAAyBG,GAAG;QAC9B,OAAO;YACLH,yBAAyBI,KAAK;QAChC;IACF,GAAG;QAAClB;QAASc;KAAyB;IAEtC,IAAMK,cAAcrB,OAAMsB,WAAW,CACnC,SAACC,QAAQC,iBAAiBC;eAAc,SAACC;YACvCA,MAAMC,OAAO;YACbH,mBAAmBA,gBAAgBE;YACnC,IAAID,WAAW;gBACbpB,QAAQI,OAAO,GAAG;2BAAMc,UAAUA,OAAOG;;gBACzCvB,WAAW;YACb,OAAO;gBACLoB,UAAUA,OAAOG;YACnB;QACF;OACA,EAAE;IAEJ,IAAME,eAAeC,IAAAA,4BAAa,EAAC;QAAER,aAAAA;QAAaX,WAAAA;IAAU;IAE5D,IAAMoB,oBAAoBpB,YAAYqB,sDAA0B,GAAGC,wCAAmB;IAEtF,IAAMC,gBAAgBvB,YAClBwB,OAAOC,MAAM,CAACtC,WAAW;QAAED,qBAAAA;QAAqBD,gBAAAA;IAAe,KAC/DE;IAEJ,IAAMuC,4BACJ,qBAACC,sCAAkB,CAACC,QAAQ;QAACC,OAAOX;qBAClC,qBAACE;QACC5B,SAASA;QACTW,SAASA;OACLoB;QACJ7B,SAASA;QACTd,WAAWoB,YAAYpB,YAAYkD;QACnC/C,OAAOiB,YAAYjB,QAAQ+C;QAE1B,AAACjD,CAAAA,UAAUC,IAAG,mBACb,qBAACD;QAAOD,SAAS;OACdC,wBACC,qBAACkD,kBAAQ;QAACC,QAAO;QAAIpD,SAAS;OAC3BC,SAGJC,sBAAQ,qBAACiD,kBAAQ;QAACnD,SAAS;OAAgCE,QAG/DH,UACAS,aAAagB,kBAAQ,CAACC,GAAG,IAAI,CAACL,aAAahB;IAKlD,IAAIgB,WAAW;QACb,OAAO0B;IACT;IAEA,qBACE,qBAACO,4BAAa;QACZzC,SAASA;QACT0C,QAAO;QACPtD,WAAWA;QACXG,OAAOA;QACPoD,SAASzC;QACT0C,SAAAA;QACAC,OAAAA;OAECX;AAGP"}
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":["ActionSheet","warn","warnOnce","children","className","header","text","style","iosCloseItem","popupDirection","popupOffsetDistance","placement","restProps","platform","usePlatform","React","useState","closing","setClosing","onClose","_action","useRef","noop","afterClose","current","isDesktop","useAdaptivityWithJSMediaQueries","useScrollLock","timeout","Platform","IOS","fallbackTransitionFinish","useTimeout","useEffect","set","clear","onItemClick","useCallback","action","immediateAction","autoClose","event","persist","contextValue","useObjectMemo","DropdownComponent","ActionSheetDropdownDesktop","ActionSheetDropdown","process","env","NODE_ENV","undefined","dropdownProps","Object","assign","actionSheet","ActionSheetContext","Provider","value","Footnote","weight","ActionSheetDefaultIosCloseItem","PopoutWrapper","alignY","onClick","hasMask","fixed"],"mappings":"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"}
@@ -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":["ActionSheetDropdown","stopPropagation","e","children","closing","toggleRef","className","restProps","sizeY","useAdaptivityWithJSMediaQueries","platform","usePlatform","FocusTrap","onClick","classNames","Platform","IOS","SizeType","COMPACT"],"mappings":";;;;+BAiBaA;;;eAAAA;;;;;;;+DAjBU;oBACI;+CACqB;2BACpB;0BACH;wBACA;yBACC;AAI1B,IAAMC,kBAA2C,SAACC;WAAMA,EAAED,eAAe;;AAOlE,IAAMD,sBAAsB;QACjCG,kBAAAA,UACAC,iBAAAA,SACA,6DAA6D;IAC7DC,mBAAAA,WACAC,mBAAAA,WACGC;QALHJ;QACAC;QAEAC;QACAC;;IAGA,IAAM,AAAEE,QAAUC,IAAAA,gEAA+B,IAAzCD;IACR,IAAME,WAAWC,IAAAA,wBAAW;IAE5B,qBACE,qBAACC,oBAAS,8CACJL;QACJM,SAASZ;QACTK,WAAWQ,IAAAA,gBAAU,qBAEnBJ,aAAaK,kBAAQ,CAACC,GAAG,4BACzBZ,uCACAI,UAAUS,oBAAQ,CAACC,OAAO,sCAC1BZ;QAGDH;AAGP"}
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":["ActionSheetDropdown","stopPropagation","e","children","closing","toggleRef","className","restProps","sizeY","useAdaptivityWithJSMediaQueries","platform","usePlatform","FocusTrap","onClick","classNames","Platform","IOS","SizeType","COMPACT"],"mappings":";;;;+BAiBaA;;;eAAAA;;;;;;;+DAjBU;oBACI;+CACqB;2BACpB;0BACH;wBACA;yBACC;AAI1B,IAAMC,kBAA2C,SAACC;WAAMA,EAAED,eAAe;;AAOlE,IAAMD,sBAAsB;QACjCG,kBAAAA,UACAC,iBAAAA,SACA,6DAA6D;IAC7DC,mBAAAA,WACAC,mBAAAA,WACGC;QALHJ;QACAC;QAEAC;QACAC;;IAGA,IAAM,AAAEE,QAAUC,IAAAA,gEAA+B,IAAzCD;IACR,IAAME,WAAWC,IAAAA,wBAAW;IAE5B,qBACE,qBAACC,oBAAS,8CACJL;QACJM,SAASZ;QACTK,WAAWQ,IAAAA,gBAAU,qBAEnBJ,aAAaK,kBAAQ,CAACC,GAAG,4BACzBZ,uCACAI,UAAUS,oBAAQ,CAACC,OAAO,sCAC1BZ;QAGDH;AAGP"}
@@ -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;
@@ -30,7 +30,7 @@ function getEl(ref) {
30
30
  return ref && "current" in ref ? ref.current : ref;
31
31
  }
32
32
  var ActionSheetDropdownDesktop = function(_param) {
33
- 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, [
33
+ 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, [
34
34
  "children",
35
35
  "toggleRef",
36
36
  "closing",
@@ -38,7 +38,8 @@ var ActionSheetDropdownDesktop = function(_param) {
38
38
  "onClose",
39
39
  "className",
40
40
  "style",
41
- "popupOffsetDistance"
41
+ "popupOffsetDistance",
42
+ "placement"
42
43
  ]);
43
44
  var document = (0, _dom.useDOM)().document;
44
45
  var platform = (0, _usePlatform.usePlatform)();
@@ -58,6 +59,7 @@ var ActionSheetDropdownDesktop = function(_param) {
58
59
  popupDirection,
59
60
  elementRef
60
61
  ]);
62
+ var placement = placementProp !== null && placementProp !== void 0 ? placementProp : isPopupDirectionTop ? "top-end" : "bottom-end";
61
63
  var bodyClickListener = (0, _useEventListener.useEventListener)("click", function(e) {
62
64
  var _elementRef;
63
65
  var dropdownElement = (_elementRef = elementRef) === null || _elementRef === void 0 ? void 0 : _elementRef.current;
@@ -90,7 +92,7 @@ var ActionSheetDropdownDesktop = function(_param) {
90
92
  return /*#__PURE__*/ _react.createElement(_Popper.Popper, {
91
93
  targetRef: targetRef,
92
94
  offsetDistance: popupOffsetDistance,
93
- placement: isPopupDirectionTop ? "top-end" : "bottom-end",
95
+ placement: placement,
94
96
  className: (0, _vkjs.classNames)("vkuiActionSheet", platform === _platform.Platform.IOS && "vkuiActionSheet--ios", "vkuiActionSheet--desktop", sizeY === _adaptivity.SizeType.COMPACT && "vkuiActionSheet--sizeY-compact", className),
95
97
  style: style,
96
98
  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={isPopupDirectionTop ? 'top-end' : 'bottom-end'}\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":["ActionSheetDropdownDesktop","warn","warnOnce","getEl","ref","current","children","toggleRef","closing","popupDirection","onClose","className","style","popupOffsetDistance","restProps","document","useDOM","platform","usePlatform","sizeY","useAdaptivityWithJSMediaQueries","elementRef","React","useRef","useEffectDev","toggleEl","isPopupDirectionTop","useMemo","bodyClickListener","useEventListener","e","dropdownElement","contains","target","useEffect","setTimeout","add","body","onClick","useCallback","stopPropagation","targetRef","isRefObject","Popper","offsetDistance","placement","classNames","Platform","IOS","SizeType","COMPACT","getRef","forcePortal","FocusTrap"],"mappings":";;;;+BAqBaA;;;eAAAA;;;;;;;+DArBU;oBACI;+CACqB;4BACnB;gCACI;2BACL;0BACH;mBACF;2BACK;wBACH;wBACA;yBACC;sBACH;AAIvB,IAAMC,OAAOC,IAAAA,kBAAQ,EAAC;AACtB,SAASC,MAAMC,GAAqC;IAClD,OAAOA,OAAO,aAAaA,MAAMA,IAAIC,OAAO,GAAGD;AACjD;AAEO,IAAMJ,6BAA6B;QACxCM,kBAAAA,UACAC,mBAAAA,WACAC,iBAAAA,SACAC,wBAAAA,gBACAC,iBAAAA,SACAC,mBAAAA,WACAC,eAAAA,2CACAC,qBAAAA,8DAAsB,gCACnBC;QARHR;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAM,AAAEE,WAAaC,IAAAA,WAAM,IAAnBD;IACR,IAAME,WAAWC,IAAAA,wBAAW;IAC5B,IAAM,AAAEC,QAAUC,IAAAA,gEAA+B,IAAzCD;IACR,IAAME,aAAaC,OAAMC,MAAM,CAAwB;IAEvDC,IAAAA,0BAAY,EAAC;QACX,IAAMC,WAAWtB,MAAMI;QACvB,IAAI,CAACkB,UAAU;YACbxB,KAAM,oCAAmC;QAC3C;IACF,GAAG;QAACM;KAAU;IAEd,IAAMmB,sBAAsBJ,OAAMK,OAAO,CACvC;eACElB,mBAAmB,SAClB,OAAOA,mBAAmB,cAAcA,eAAeY,gBAAgB;OAC1E;QAACZ;QAAgBY;KAAW;IAG9B,IAAMO,oBAAoBC,IAAAA,kCAAgB,EAAC,SAAS,SAACC;YAC3BT;QAAxB,IAAMU,mBAAkBV,cAAAA,wBAAAA,kCAAAA,YAAYhB,OAAO;QAC3C,IAAI0B,mBAAmB,CAACA,gBAAgBC,QAAQ,CAACF,EAAEG,MAAM,GAAW;gBAClEvB;aAAAA,WAAAA,qBAAAA,+BAAAA;QACF;IACF;IAEAY,OAAMY,SAAS,CAAC;QACdC,WAAW;YACTP,kBAAkBQ,GAAG,CAACrB,SAAUsB,IAAI;QACtC;IACF,GAAG;QAACT;QAAmBb;KAAS;IAEhC,IAAMuB,UAAUhB,OAAMiB,WAAW,CAAC,SAACT;eAAqCA,EAAEU,eAAe;OAAI,EAAE;IAE/F,IAAMC,YAAYnB,OAAMK,OAAO,CAAC;QAC9B,IAAIe,IAAAA,wBAAW,EAAgDnC,YAAY;YACzE,OAAOA;QACT;QAEA,OAAO;YAAEF,SAASE;QAAyB;IAC7C,GAAG;QAACA;KAAU;IAEd,qBACE,qBAACoC,cAAM;QACLF,WAAWA;QACXG,gBAAgB/B;QAChBgC,WAAWnB,sBAAsB,YAAY;QAC7Cf,WAAWmC,IAAAA,gBAAU,qBAEnB7B,aAAa8B,kBAAQ,CAACC,GAAG,wDAEzB7B,UAAU8B,oBAAQ,CAACC,OAAO,sCAC1BvC;QAEFC,OAAOA;QACPuC,QAAQ9B;QACR+B,aAAa;qBAEb,qBAACC,oBAAS;QAAC3C,SAASA;OAAaI;QAAWwB,SAASA;QAClDhC;AAIT"}
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":["ActionSheetDropdownDesktop","warn","warnOnce","getEl","ref","current","children","toggleRef","closing","popupDirection","onClose","className","style","popupOffsetDistance","placement","placementProp","restProps","document","useDOM","platform","usePlatform","sizeY","useAdaptivityWithJSMediaQueries","elementRef","React","useRef","useEffectDev","toggleEl","isPopupDirectionTop","useMemo","bodyClickListener","useEventListener","e","dropdownElement","contains","target","useEffect","setTimeout","add","body","onClick","useCallback","stopPropagation","targetRef","isRefObject","Popper","offsetDistance","classNames","Platform","IOS","SizeType","COMPACT","getRef","forcePortal","FocusTrap"],"mappings":";;;;+BAqBaA;;;eAAAA;;;;;;;+DArBU;oBACI;+CACqB;4BACnB;gCACI;2BACL;0BACH;mBACF;2BACK;wBACH;wBACA;yBACC;sBACH;AAIvB,IAAMC,OAAOC,IAAAA,kBAAQ,EAAC;AACtB,SAASC,MAAMC,GAAqC;IAClD,OAAOA,OAAO,aAAaA,MAAMA,IAAIC,OAAO,GAAGD;AACjD;AAEO,IAAMJ,6BAA6B;QACxCM,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,WAAaC,IAAAA,WAAM,IAAnBD;IACR,IAAME,WAAWC,IAAAA,wBAAW;IAC5B,IAAM,AAAEC,QAAUC,IAAAA,gEAA+B,IAAzCD;IACR,IAAME,aAAaC,OAAMC,MAAM,CAAwB;IAEvDC,IAAAA,0BAAY,EAAC;QACX,IAAMC,WAAWxB,MAAMI;QACvB,IAAI,CAACoB,UAAU;YACb1B,KAAM,oCAAmC;QAC3C;IACF,GAAG;QAACM;KAAU;IAEd,IAAMqB,sBAAsBJ,OAAMK,OAAO,CACvC;eACEpB,mBAAmB,SAClB,OAAOA,mBAAmB,cAAcA,eAAec,gBAAgB;OAC1E;QAACd;QAAgBc;KAAW;IAG9B,IAAMT,YAAYC,0BAAAA,2BAAAA,gBAAkBa,sBAAsB,YAAY;IAEtE,IAAME,oBAAoBC,IAAAA,kCAAgB,EAAC,SAAS,SAACC;YAC3BT;QAAxB,IAAMU,mBAAkBV,cAAAA,wBAAAA,kCAAAA,YAAYlB,OAAO;QAC3C,IAAI4B,mBAAmB,CAACA,gBAAgBC,QAAQ,CAACF,EAAEG,MAAM,GAAW;gBAClEzB;aAAAA,WAAAA,qBAAAA,+BAAAA;QACF;IACF;IAEAc,OAAMY,SAAS,CAAC;QACdC,WAAW;YACTP,kBAAkBQ,GAAG,CAACrB,SAAUsB,IAAI;QACtC;IACF,GAAG;QAACT;QAAmBb;KAAS;IAEhC,IAAMuB,UAAUhB,OAAMiB,WAAW,CAAC,SAACT;eAAqCA,EAAEU,eAAe;OAAI,EAAE;IAE/F,IAAMC,YAAYnB,OAAMK,OAAO,CAAC;QAC9B,IAAIe,IAAAA,wBAAW,EAAgDrC,YAAY;YACzE,OAAOA;QACT;QAEA,OAAO;YAAEF,SAASE;QAAyB;IAC7C,GAAG;QAACA;KAAU;IAEd,qBACE,qBAACsC,cAAM;QACLF,WAAWA;QACXG,gBAAgBjC;QAChBC,WAAWA;QACXH,WAAWoC,IAAAA,gBAAU,qBAEnB5B,aAAa6B,kBAAQ,CAACC,GAAG,wDAEzB5B,UAAU6B,oBAAQ,CAACC,OAAO,sCAC1BxC;QAEFC,OAAOA;QACPwC,QAAQ7B;QACR8B,aAAa;qBAEb,qBAACC,oBAAS;QAAC5C,SAASA;OAAaM;QAAWwB,SAASA;QAClDlC;AAIT"}
@@ -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":[],"mappings":";;;;;+DAAuB"}
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":[],"mappings":";;;;;+DAAuB"}
@@ -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: 'cancel' | 'destructive' | 'default';
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 {};
@@ -22,92 +22,13 @@ var _useWaitTransitionFinish = require("../../hooks/useWaitTransitionFinish");
22
22
  var _platform = require("../../lib/platform");
23
23
  var _utils = require("../../lib/utils");
24
24
  var _ScrollContext = require("../AppRoot/ScrollContext");
25
- var _Button = require("../Button/Button");
26
25
  var _FocusTrap = require("../FocusTrap/FocusTrap");
27
26
  var _ModalDismissButton = require("../ModalDismissButton/ModalDismissButton");
28
27
  var _PopoutWrapper = require("../PopoutWrapper/PopoutWrapper");
29
- var _Tappable = require("../Tappable/Tappable");
30
- var _Caption = require("../Typography/Caption/Caption");
31
- var _Footnote = require("../Typography/Footnote/Footnote");
32
- var _Text = require("../Typography/Text/Text");
33
- var _Title = require("../Typography/Title/Title");
34
- var AlertHeader = function(props) {
35
- var platform = (0, _usePlatform.usePlatform)();
36
- switch(platform){
37
- case _platform.Platform.IOS:
38
- return /*#__PURE__*/ _react.createElement(_Title.Title, _object_spread._({
39
- className: "vkuiAlert__header",
40
- weight: "1",
41
- level: "3"
42
- }, props));
43
- default:
44
- return /*#__PURE__*/ _react.createElement(_Title.Title, _object_spread._({
45
- className: "vkuiAlert__header",
46
- weight: "2",
47
- level: "2"
48
- }, props));
49
- }
50
- };
51
- var AlertText = function(props) {
52
- var platform = (0, _usePlatform.usePlatform)();
53
- switch(platform){
54
- case _platform.Platform.VKCOM:
55
- return /*#__PURE__*/ _react.createElement(_Footnote.Footnote, _object_spread._({
56
- className: "vkuiAlert__text"
57
- }, props));
58
- case _platform.Platform.IOS:
59
- return /*#__PURE__*/ _react.createElement(_Caption.Caption, _object_spread._({
60
- className: "vkuiAlert__text"
61
- }, props));
62
- default:
63
- return /*#__PURE__*/ _react.createElement(_Text.Text, _object_spread._({
64
- Component: "span",
65
- className: "vkuiAlert__text",
66
- weight: "3"
67
- }, props));
68
- }
69
- };
70
- var AlertAction = function(_param) {
71
- var action = _param.action, onItemClick = _param.onItemClick, restProps = _object_without_properties._(_param, [
72
- "action",
73
- "onItemClick"
74
- ]);
75
- var platform = (0, _usePlatform.usePlatform)();
76
- var handleItemClick = _react.useCallback(function() {
77
- return onItemClick(action);
78
- }, [
79
- onItemClick,
80
- action
81
- ]);
82
- if (platform === _platform.Platform.IOS) {
83
- var title = action.title, actionProp = action.action, autoClose = action.autoClose, mode = action.mode, restActionProps = _object_without_properties._(action, [
84
- "title",
85
- "action",
86
- "autoClose",
87
- "mode"
88
- ]);
89
- return /*#__PURE__*/ _react.createElement(_Tappable.Tappable, _object_spread._({
90
- Component: restActionProps.href ? "a" : "button",
91
- className: (0, _vkjs.classNames)("vkuiAlert__action", mode === "destructive" && "vkuiAlert__action--mode-destructive", mode === "cancel" && "vkuiAlert__action--mode-cancel"),
92
- onClick: handleItemClick
93
- }, restActionProps, restProps), title);
94
- }
95
- var mode1 = "tertiary";
96
- if (platform === _platform.Platform.VKCOM) {
97
- mode1 = action.mode === "cancel" ? "secondary" : "primary";
98
- }
99
- return /*#__PURE__*/ _react.createElement(_Button.Button, {
100
- className: (0, _vkjs.classNames)("vkuiAlert__button", action.mode === "cancel" && "vkuiAlert__button--mode-cancel"),
101
- mode: mode1,
102
- size: "m",
103
- onClick: handleItemClick,
104
- Component: action.Component,
105
- href: action.href,
106
- target: action.target
107
- }, action.title);
108
- };
28
+ var _AlertActions = require("./AlertActions");
29
+ var _AlertTypography = require("./AlertTypography");
109
30
  var Alert = function(_param) {
110
- 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, [
31
+ 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, [
111
32
  "actions",
112
33
  "actionsLayout",
113
34
  "children",
@@ -116,7 +37,9 @@ var Alert = function(_param) {
116
37
  "text",
117
38
  "header",
118
39
  "onClose",
119
- "dismissLabel"
40
+ "dismissLabel",
41
+ "renderAction",
42
+ "actionsAlign"
120
43
  ]);
121
44
  var generatedId = (0, _useId.useId)();
122
45
  var headerId = "vkui-alert-".concat(generatedId, "-header");
@@ -126,7 +49,6 @@ var Alert = function(_param) {
126
49
  var waitTransitionFinish = (0, _useWaitTransitionFinish.useWaitTransitionFinish)().waitTransitionFinish;
127
50
  var _React_useState = _sliced_to_array._(_react.useState(false), 2), closing = _React_useState[0], setClosing = _React_useState[1];
128
51
  var elementRef = _react.useRef(null);
129
- var resolvedActionsLayout = platform === _platform.Platform.VKCOM ? "horizontal" : actionsLayout;
130
52
  var timeout = platform === _platform.Platform.IOS ? 300 : 200;
131
53
  var close = _react.useCallback(function() {
132
54
  setClosing(true);
@@ -171,26 +93,24 @@ var Alert = function(_param) {
171
93
  onClick: _utils.stopPropagation,
172
94
  onClose: close,
173
95
  timeout: timeout,
174
- className: (0, _vkjs.classNames)("vkuiAlert", platform === _platform.Platform.IOS && "vkuiAlert--ios", platform === _platform.Platform.VKCOM && "vkuiAlert--vkcom", resolvedActionsLayout === "vertical" ? "vkuiAlert--v" : "vkuiAlert--h", closing && "vkuiAlert--closing", isDesktop && "vkuiAlert--desktop"),
96
+ className: (0, _vkjs.classNames)("vkuiAlert", platform === _platform.Platform.IOS && "vkuiAlert--ios", platform === _platform.Platform.VKCOM && "vkuiAlert--vkcom", closing && "vkuiAlert--closing", isDesktop && "vkuiAlert--desktop"),
175
97
  role: "alertdialog",
176
98
  "aria-modal": true,
177
99
  "aria-labelledby": headerId,
178
100
  "aria-describedby": textId
179
101
  }), /*#__PURE__*/ _react.createElement("div", {
180
102
  className: "vkuiAlert__content"
181
- }, (0, _vkjs.hasReactNode)(header) && /*#__PURE__*/ _react.createElement(AlertHeader, {
103
+ }, (0, _vkjs.hasReactNode)(header) && /*#__PURE__*/ _react.createElement(_AlertTypography.AlertHeader, {
182
104
  id: headerId
183
- }, header), (0, _vkjs.hasReactNode)(text) && /*#__PURE__*/ _react.createElement(AlertText, {
105
+ }, header), (0, _vkjs.hasReactNode)(text) && /*#__PURE__*/ _react.createElement(_AlertTypography.AlertText, {
184
106
  id: textId
185
- }, text), children), /*#__PURE__*/ _react.createElement("div", {
186
- className: "vkuiAlert__actions"
187
- }, actions.map(function(action, i) {
188
- return /*#__PURE__*/ _react.createElement(AlertAction, {
189
- key: i,
190
- action: action,
191
- onItemClick: onItemClick
192
- });
193
- })), isDesktop && /*#__PURE__*/ _react.createElement(_ModalDismissButton.ModalDismissButton, {
107
+ }, text), children), /*#__PURE__*/ _react.createElement(_AlertActions.AlertActions, {
108
+ actions: actions,
109
+ actionsAlign: actionsAlign,
110
+ actionsLayout: actionsLayout,
111
+ renderAction: renderAction,
112
+ onItemClick: onItemClick
113
+ }), isDesktop && /*#__PURE__*/ _react.createElement(_ModalDismissButton.ModalDismissButton, {
194
114
  onClick: close,
195
115
  "aria-label": dismissLabel
196
116
  })));
@@ -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":["Alert","AlertHeader","props","platform","usePlatform","Platform","IOS","Title","className","weight","level","AlertText","VKCOM","Footnote","Caption","Text","Component","AlertAction","action","onItemClick","restProps","handleItemClick","React","useCallback","title","actionProp","autoClose","mode","restActionProps","Tappable","href","classNames","onClick","Button","size","target","actions","actionsLayout","children","style","text","header","onClose","dismissLabel","generatedId","useId","headerId","textId","isDesktop","useAdaptivityWithJSMediaQueries","waitTransitionFinish","useWaitTransitionFinish","useState","closing","setClosing","elementRef","useRef","resolvedActionsLayout","timeout","close","current","e","propertyName","item","useScrollLock","PopoutWrapper","FocusTrap","getRootRef","stopPropagation","role","aria-modal","aria-labelledby","aria-describedby","div","hasReactNode","id","map","i","key","ModalDismissButton","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":["Alert","actions","actionsLayout","children","className","style","text","header","onClose","dismissLabel","renderAction","actionsAlign","restProps","generatedId","useId","headerId","textId","platform","usePlatform","isDesktop","useAdaptivityWithJSMediaQueries","waitTransitionFinish","useWaitTransitionFinish","React","useState","closing","setClosing","elementRef","useRef","timeout","Platform","IOS","close","useCallback","current","e","propertyName","onItemClick","item","action","autoClose","useScrollLock","PopoutWrapper","onClick","FocusTrap","getRootRef","stopPropagation","classNames","VKCOM","role","aria-modal","aria-labelledby","aria-describedby","div","hasReactNode","AlertHeader","id","AlertText","AlertActions","ModalDismissButton","aria-label"],"mappings":";;;;+BAgDaA;;;eAAAA;;;;;;;;+DAhDU;oBACkB;+CACO;qBAC1B;2BACM;uCACY;wBACf;qBACO;6BAEF;yBAEJ;kCACS;6BACL;4BAED;+BACU;AAgChC,IAAMA,QAAQ;gCACnBC,SAAAA,sCAAU,EAAE,iDACZC,eAAAA,kDAAgB,qCAChBC,kBAAAA,UACAC,mBAAAA,WACAC,eAAAA,OACAC,cAAAA,MACAC,gBAAAA,QACAC,iBAAAA,sCACAC,cAAAA,gDAAe,gDACfC,sBAAAA,cACAC,sBAAAA,cACGC;QAXHX;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,cAAcC,IAAAA,YAAK;IAEzB,IAAMC,WAAW,AAAC,cAAyB,OAAZF,aAAY;IAC3C,IAAMG,SAAS,AAAC,cAAyB,OAAZH,aAAY;IAEzC,IAAMI,WAAWC,IAAAA,wBAAW;IAC5B,IAAM,AAAEC,YAAcC,IAAAA,gEAA+B,IAA7CD;IACR,IAAM,AAAEE,uBAAyBC,IAAAA,gDAAuB,IAAhDD;IAER,IAA8BE,qCAAAA,OAAMC,QAAQ,CAAC,YAAtCC,UAAuBF,oBAAdG,aAAcH;IAE9B,IAAMI,aAAaJ,OAAMK,MAAM,CAAiB;IAEhD,IAAMC,UAAUZ,aAAaa,kBAAQ,CAACC,GAAG,GAAG,MAAM;IAElD,IAAMC,QAAQT,OAAMU,WAAW,CAAC;QAC9BP,WAAW;QACXL,qBACEM,WAAWO,OAAO,EAClB,SAACC;YACC,IAAI,CAACA,KAAKA,EAAEC,YAAY,KAAK,WAAW;gBACtC5B;YACF;QACF,GACAqB;IAEJ,GAAG;QAACF;QAAYN;QAAsBb;QAASqB;KAAQ;IAEvD,IAAMQ,cAAcd,OAAMU,WAAW,CACnC,SAACK;QACC,IAAQC,SAAsBD,KAAtBC,QAAQC,YAAcF,KAAdE;QAEhB,IAAIA,WAAW;YACbd,WAAW;YACXL,qBACEM,WAAWO,OAAO,EAClB,SAACC;gBACC,IAAI,CAACA,KAAKA,EAAEC,YAAY,KAAK,WAAW;oBACtC5B;oBACA+B,UAAUA;gBACZ;YACF,GACAV;QAEJ,OAAO;YACLU,UAAUA;QACZ;IACF,GACA;QAACZ;QAAYN;QAAsBb;QAASqB;KAAQ;IAGtDY,IAAAA,4BAAa;IAEb,qBACE,qBAACC,4BAAa;QAACtC,WAAWA;QAAWqB,SAASA;QAASpB,OAAOA;QAAOsC,SAASX;qBAC5E,qBAACY,oBAAS,8CACJhC;QACJiC,YAAYlB;QACZgB,SAASG,sBAAe;QACxBtC,SAASwB;QACTH,SAASA;QACTzB,WAAW2C,IAAAA,gBAAU,eAEnB9B,aAAaa,kBAAQ,CAACC,GAAG,sBACzBd,aAAaa,kBAAQ,CAACkB,KAAK,wBAC3BvB,iCACAN;QAEF8B,MAAK;QACLC,cAAAA;QACAC,mBAAiBpC;QACjBqC,oBAAkBpC;sBAElB,qBAACqC;QAAIjD,SAAS;OACXkD,IAAAA,kBAAY,EAAC/C,yBAAW,qBAACgD,4BAAW;QAACC,IAAIzC;OAAWR,SACpD+C,IAAAA,kBAAY,EAAChD,uBAAS,qBAACmD,0BAAS;QAACD,IAAIxC;OAASV,OAC9CH,yBAEH,qBAACuD,0BAAY;QACXzD,SAASA;QACTU,cAAcA;QACdT,eAAeA;QACfQ,cAAcA;QACd2B,aAAaA;QAEdlB,2BAAa,qBAACwC,sCAAkB;QAAChB,SAASX;QAAO4B,cAAYnD;;AAItE"}
@@ -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,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "AlertAction", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return AlertAction;
9
+ }
10
+ });
11
+ var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
12
+ var _object_spread = require("@swc/helpers/_/_object_spread");
13
+ var _object_without_properties = require("@swc/helpers/_/_object_without_properties");
14
+ var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
15
+ var _vkjs = require("@vkontakte/vkjs");
16
+ var _usePlatform = require("../../hooks/usePlatform");
17
+ var _platform = require("../../lib/platform");
18
+ var _Button = require("../Button/Button");
19
+ var _Tappable = require("../Tappable/Tappable");
20
+ var AlertActionIos = function(_param) {
21
+ var mode = _param.mode, restProps = _object_without_properties._(_param, [
22
+ "mode"
23
+ ]);
24
+ return /*#__PURE__*/ _react.createElement(_Tappable.Tappable, _object_spread._({
25
+ Component: restProps.href ? "a" : "button",
26
+ className: (0, _vkjs.classNames)("vkuiAlert__action", mode === "destructive" && "vkuiAlert__action--mode-destructive", mode === "cancel" && "vkuiAlert__action--mode-cancel")
27
+ }, restProps));
28
+ };
29
+ var AlertActionBase = function(_param) {
30
+ var mode = _param.mode, restProps = _object_without_properties._(_param, [
31
+ "mode"
32
+ ]);
33
+ var platform = (0, _usePlatform.usePlatform)();
34
+ var buttonMode = "tertiary";
35
+ if (platform === _platform.Platform.VKCOM) {
36
+ buttonMode = mode === "cancel" ? "secondary" : "primary";
37
+ }
38
+ return /*#__PURE__*/ _react.createElement(_Button.Button, _object_spread._({
39
+ className: (0, _vkjs.classNames)("vkuiAlert__button", mode === "cancel" && "vkuiAlert__button--mode-cancel"),
40
+ mode: buttonMode,
41
+ size: "m"
42
+ }, restProps));
43
+ };
44
+ var AlertAction = function(props) {
45
+ var platform = (0, _usePlatform.usePlatform)();
46
+ if (platform === _platform.Platform.IOS) {
47
+ return /*#__PURE__*/ _react.createElement(AlertActionIos, props);
48
+ }
49
+ return /*#__PURE__*/ _react.createElement(AlertActionBase, props);
50
+ };
51
+
52
+ //# 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":["AlertAction","AlertActionIos","mode","restProps","Tappable","Component","href","className","classNames","AlertActionBase","platform","usePlatform","buttonMode","Platform","VKCOM","Button","size","props","IOS"],"mappings":";;;;+BAqDaA;;;eAAAA;;;;;;+DArDU;oBACI;2BACC;wBACH;sBAEW;wBACX;AAWzB,IAAMC,iBAAiB;QAAGC,cAAAA,MAASC;QAATD;;IACxB,qBACE,qBAACE,kBAAQ;QACPC,WAAWF,UAAUG,IAAI,GAAG,MAAM;QAClCC,WAAWC,IAAAA,gBAAU,uBAEnBN,SAAS,wDACTA,SAAS;OAEPC;AAGV;AAEA,IAAMM,kBAAkB;QAAGP,cAAAA,MAASC;QAATD;;IACzB,IAAMQ,WAAWC,IAAAA,wBAAW;IAE5B,IAAIC,aAAkC;IAEtC,IAAIF,aAAaG,kBAAQ,CAACC,KAAK,EAAE;QAC/BF,aAAaV,SAAS,WAAW,cAAc;IACjD;IAEA,qBACE,qBAACa,cAAM;QACLR,WAAWC,IAAAA,gBAAU,uBAEnBN,SAAS;QAEXA,MAAMU;QACNI,MAAK;OACDb;AAGV;AAEO,IAAMH,cAAc,SAACiB;IAC1B,IAAMP,WAAWC,IAAAA,wBAAW;IAE5B,IAAID,aAAaG,kBAAQ,CAACK,GAAG,EAAE;QAC7B,qBAAO,qBAACjB,gBAAmBgB;IAC7B;IAEA,qBAAO,qBAACR,iBAAoBQ;AAC9B"}
@@ -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 {};