@vkontakte/vkui 5.1.2 → 5.2.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/Cell/CellCheckbox/CellCheckbox.js +7 -4
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +0 -4
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/ContentCard/ContentCard.js +2 -1
- package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +4 -3
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +21 -72
- package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.d.ts +3 -2
- package/dist/cjs/components/DateInput/DateInput.js +3 -2
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js +3 -2
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/FixedLayout/FixedLayout.js +2 -2
- package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cjs/components/FormField/FormField.js +6 -10
- package/dist/cjs/components/FormField/FormField.js.map +1 -1
- package/dist/cjs/components/IconButton/IconButton.js +9 -0
- package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
- package/dist/cjs/components/ModalCard/ModalCard.d.ts +1 -1
- package/dist/cjs/components/ModalCard/ModalCard.js +4 -2
- package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts +5 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +9 -2
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPage.d.ts +2 -6
- package/dist/cjs/components/ModalPage/ModalPage.js +13 -7
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +1 -2
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/Popper/Popper.d.ts +12 -9
- package/dist/cjs/components/Popper/Popper.js +92 -119
- package/dist/cjs/components/Popper/Popper.js.map +1 -1
- package/dist/cjs/components/PopperArrow/PopperArrow.d.ts +15 -5
- package/dist/cjs/components/PopperArrow/PopperArrow.js +44 -17
- package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cjs/components/Root/Root.js +2 -2
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/SplitCol/SplitCol.d.ts +0 -6
- package/dist/cjs/components/SplitCol/SplitCol.js +3 -11
- package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cjs/components/SplitCol/SplitColContext.d.ts +7 -0
- package/dist/cjs/components/SplitCol/SplitColContext.js +18 -0
- package/dist/cjs/components/SplitCol/SplitColContext.js.map +1 -0
- package/dist/cjs/components/TabbarItem/TabbarItem.js +9 -0
- package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.d.ts +3 -3
- package/dist/cjs/components/Tooltip/Tooltip.js +115 -151
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/View/View.js +2 -2
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.d.ts +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +2 -2
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +10 -8
- package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cjs/index.d.ts +37 -30
- package/dist/cjs/index.js +13 -13
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/floating/adapters.d.ts +2 -0
- package/dist/cjs/lib/floating/adapters.js +63 -0
- package/dist/cjs/lib/floating/adapters.js.map +1 -0
- package/dist/cjs/lib/floating/functions.d.ts +10 -0
- package/dist/cjs/lib/floating/functions.js +36 -0
- package/dist/cjs/lib/floating/functions.js.map +1 -0
- package/dist/cjs/lib/floating/index.d.ts +4 -0
- package/dist/cjs/lib/floating/index.js +75 -0
- package/dist/cjs/lib/floating/index.js.map +1 -0
- package/dist/cjs/lib/floating/types.d.ts +4 -0
- package/dist/cjs/lib/floating/types.js +6 -0
- package/dist/cjs/lib/floating/types.js.map +1 -0
- package/dist/cjs/lib/useIsomorphicLayoutEffect.d.ts +1 -1
- package/dist/cjs/lib/warnOnce.d.ts +7 -0
- package/dist/cjs/lib/warnOnce.js +14 -0
- package/dist/cjs/lib/warnOnce.js.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +0 -4
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.js +2 -1
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +5 -4
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
- package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +3 -2
- package/dist/components/DateInput/DateInput.js +3 -2
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
- package/dist/components/DateRangeInput/DateRangeInput.js +3 -2
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/FixedLayout/FixedLayout.js +1 -1
- package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/components/FormField/FormField.js +6 -10
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/IconButton/IconButton.js +9 -0
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/ModalCard/ModalCard.d.ts +1 -1
- package/dist/components/ModalCard/ModalCard.js +4 -2
- package/dist/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.d.ts +5 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +9 -2
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.d.ts +2 -6
- package/dist/components/ModalPage/ModalPage.js +13 -7
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +1 -2
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/Popper/Popper.d.ts +12 -9
- package/dist/components/Popper/Popper.js +93 -120
- package/dist/components/Popper/Popper.js.map +1 -1
- package/dist/components/PopperArrow/PopperArrow.d.ts +15 -5
- package/dist/components/PopperArrow/PopperArrow.js +40 -15
- package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/components/Root/Root.js +1 -1
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/SplitCol/SplitCol.d.ts +0 -6
- package/dist/components/SplitCol/SplitCol.js +1 -7
- package/dist/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/components/SplitCol/SplitColContext.d.ts +7 -0
- package/dist/components/SplitCol/SplitColContext.js +9 -0
- package/dist/components/SplitCol/SplitColContext.js.map +1 -0
- package/dist/components/TabbarItem/TabbarItem.js +9 -0
- package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +3 -3
- package/dist/components/Tooltip/Tooltip.js +115 -151
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/View/View.js +1 -1
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.d.ts +1 -1
- package/dist/components/View/ViewInfinite.js +1 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/WriteBarIcon/WriteBarIcon.js +11 -9
- package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/components.css +142 -2
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +61921 -4
- package/dist/cssm/components/Alert/Alert.module.css +1 -1
- package/dist/cssm/components/Avatar/Avatar.module.css +1 -1
- package/dist/cssm/components/Button/Button.module.css +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.module.css +1 -1
- package/dist/cssm/components/CalendarTime/CalendarTime.module.css +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.module.css +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.module.css +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +0 -4
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js +2 -1
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +5 -4
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
- package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +1 -1
- package/dist/cssm/components/DateInput/DateInput.d.ts +3 -2
- package/dist/cssm/components/DateInput/DateInput.js +4 -2
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +3 -2
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
- package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.js +6 -10
- package/dist/cssm/components/FormField/FormField.js.map +1 -1
- package/dist/cssm/components/FormField/FormField.module.css +1 -1
- package/dist/cssm/components/Header/Header.module.css +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +1 -1
- package/dist/cssm/components/IconButton/IconButton.js +9 -0
- package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
- package/dist/cssm/components/InputLike/InputLike.module.css +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.d.ts +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.js +4 -2
- package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts +5 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +9 -2
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.d.ts +2 -6
- package/dist/cssm/components/ModalPage/ModalPage.js +13 -7
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -2
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.module.css +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.module.css +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.module.css +1 -1
- package/dist/cssm/components/Popper/Popper.d.ts +12 -9
- package/dist/cssm/components/Popper/Popper.js +93 -120
- package/dist/cssm/components/Popper/Popper.js.map +1 -1
- package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +15 -5
- package/dist/cssm/components/PopperArrow/PopperArrow.js +40 -15
- package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cssm/components/PopperArrow/PopperArrow.module.css +1 -1
- package/dist/cssm/components/Radio/Radio.module.css +1 -1
- package/dist/cssm/components/RichCell/RichCell.module.css +1 -1
- package/dist/cssm/components/Root/Root.js +1 -1
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/Search/Search.module.css +1 -1
- package/dist/cssm/components/SegmentedControl/SegmentedControl.module.css +1 -1
- package/dist/cssm/components/Select/Select.module.css +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.module.css +1 -1
- package/dist/cssm/components/SplitCol/SplitCol.d.ts +0 -6
- package/dist/cssm/components/SplitCol/SplitCol.js +1 -7
- package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cssm/components/SplitCol/SplitColContext.d.ts +7 -0
- package/dist/cssm/components/SplitCol/SplitColContext.js +9 -0
- package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -0
- package/dist/cssm/components/TabbarItem/TabbarItem.js +9 -0
- package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
- package/dist/cssm/components/Tabs/Tabs.module.css +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.d.ts +3 -3
- package/dist/cssm/components/Tooltip/Tooltip.js +121 -151
- package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.module.css +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.module.css +1 -1
- package/dist/cssm/components/Typography/Footnote/Footnote.module.css +1 -1
- package/dist/cssm/components/Typography/Headline/Headline.module.css +1 -1
- package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.module.css +1 -1
- package/dist/cssm/components/Typography/Text/Text.module.css +1 -1
- package/dist/cssm/components/Typography/Title/Title.module.css +1 -1
- package/dist/cssm/components/View/View.js +1 -1
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/View.module.css +1 -1
- package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +1 -1
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +11 -9
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cssm/index.d.ts +37 -30
- package/dist/cssm/index.js +24 -18
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/floating/adapters.d.ts +2 -0
- package/dist/cssm/lib/floating/adapters.js +56 -0
- package/dist/cssm/lib/floating/adapters.js.map +1 -0
- package/dist/cssm/lib/floating/functions.d.ts +10 -0
- package/dist/cssm/lib/floating/functions.js +28 -0
- package/dist/cssm/lib/floating/functions.js.map +1 -0
- package/dist/cssm/lib/floating/index.d.ts +4 -0
- package/dist/cssm/lib/floating/index.js +4 -0
- package/dist/cssm/lib/floating/index.js.map +1 -0
- package/dist/cssm/lib/floating/types.d.ts +4 -0
- package/dist/cssm/lib/floating/types.js +2 -0
- package/dist/cssm/lib/floating/types.js.map +1 -0
- package/dist/cssm/lib/useIsomorphicLayoutEffect.d.ts +1 -1
- package/dist/cssm/lib/warnOnce.d.ts +7 -0
- package/dist/cssm/lib/warnOnce.js +12 -0
- package/dist/cssm/lib/warnOnce.js.map +1 -1
- package/dist/cssm/styles/common.css +1 -1
- package/dist/cssm/styles/themes.css +1 -1
- package/dist/index.d.ts +37 -30
- package/dist/index.js +22 -16
- package/dist/index.js.map +1 -1
- package/dist/lib/floating/adapters.d.ts +2 -0
- package/dist/lib/floating/adapters.js +56 -0
- package/dist/lib/floating/adapters.js.map +1 -0
- package/dist/lib/floating/functions.d.ts +10 -0
- package/dist/lib/floating/functions.js +28 -0
- package/dist/lib/floating/functions.js.map +1 -0
- package/dist/lib/floating/index.d.ts +4 -0
- package/dist/lib/floating/index.js +4 -0
- package/dist/lib/floating/index.js.map +1 -0
- package/dist/lib/floating/types.d.ts +4 -0
- package/dist/lib/floating/types.js +2 -0
- package/dist/lib/floating/types.js.map +1 -0
- package/dist/lib/useIsomorphicLayoutEffect.d.ts +1 -1
- package/dist/lib/warnOnce.d.ts +7 -0
- package/dist/lib/warnOnce.js +12 -0
- package/dist/lib/warnOnce.js.map +1 -1
- package/dist/stable.js.tmp +69 -21
- package/dist/vkui.css +143 -3
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +61837 -0
- package/package.json +4 -5
- package/dist/cssm/styles/components.css +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton.js","names":["React","Tappable","classNames","usePlatform","Platform","getSizeYClassName","useAdaptivity","IconButton","children","Component","className","restProps","platform","sizeY","href","IOS"],"sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { TappableProps, Tappable } from '../Tappable/Tappable';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends TappableProps {\n children?: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/IconButton\n */\nexport const IconButton = ({\n children,\n Component = 'button',\n className,\n ...restProps\n}: IconButtonProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n\n return (\n <Tappable\n activeEffectDelay={200}\n activeMode=\"background\"\n {...restProps}\n Component={restProps.href ? 'a' : Component}\n className={classNames(\n styles['IconButton'],\n getSizeYClassName(styles['IconButton'], sizeY),\n platform === Platform.IOS && styles['IconButton--ios'],\n className,\n )}\n >\n {children}\n </Tappable>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAAwBC,QAAQ,QAAQ,sBAAsB;AAC9D,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,iCAAiC;AACnE,SAASC,aAAa,QAAQ,2BAA2B;
|
|
1
|
+
{"version":3,"file":"IconButton.js","names":["React","Tappable","classNames","usePlatform","Platform","getSizeYClassName","useAdaptivity","COMMON_WARNINGS","warnOnce","warn","IconButton","children","Component","className","restProps","platform","sizeY","process","env","NODE_ENV","isAccessible","a11y","href","IOS"],"sources":["../../../src/components/IconButton/IconButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { TappableProps, Tappable } from '../Tappable/Tappable';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends TappableProps {\n children?: React.ReactNode;\n}\n\nconst warn = warnOnce('IconButton');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/IconButton\n */\nexport const IconButton = ({\n children,\n Component = 'button',\n className,\n ...restProps\n}: IconButtonProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n\n if (process.env.NODE_ENV === 'development') {\n const isAccessible = restProps['aria-label'] || restProps['aria-labelledby'];\n\n if (!isAccessible) {\n warn(COMMON_WARNINGS.a11y[restProps.href ? 'link-name' : 'button-name'], 'error');\n }\n }\n\n return (\n <Tappable\n activeEffectDelay={200}\n activeMode=\"background\"\n {...restProps}\n Component={restProps.href ? 'a' : Component}\n className={classNames(\n styles['IconButton'],\n getSizeYClassName(styles['IconButton'], sizeY),\n platform === Platform.IOS && styles['IconButton--ios'],\n className,\n )}\n >\n {children}\n </Tappable>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAAwBC,QAAQ,QAAQ,sBAAsB;AAC9D,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,iCAAiC;AACnE,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,eAAe,EAAEC,QAAQ,QAAQ,oBAAoB;AAO9D,IAAMC,IAAI,GAAGD,QAAQ,CAAC,YAAY,CAAC;;AAEnC;AACA;AACA;AACA,OAAO,IAAME,UAAU,GAAG,SAAbA,UAAU,OAKA;EAAA,IAJrBC,QAAQ,QAARA,QAAQ;IAAA,sBACRC,SAAS;IAATA,SAAS,+BAAG,QAAQ;IACpBC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,QAAQ,GAAGZ,WAAW,EAAE;EAC9B,qBAAkBG,aAAa,EAAE;IAAzBU,KAAK,kBAALA,KAAK;EAEb,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1C,IAAMC,YAAY,GAAGN,SAAS,CAAC,YAAY,CAAC,IAAIA,SAAS,CAAC,iBAAiB,CAAC;IAE5E,IAAI,CAACM,YAAY,EAAE;MACjBX,IAAI,CAACF,eAAe,CAACc,IAAI,CAACP,SAAS,CAACQ,IAAI,GAAG,WAAW,GAAG,aAAa,CAAC,EAAE,OAAO,CAAC;IACnF;EACF;EAEA,oBACE,oBAAC,QAAQ;IACP,iBAAiB,EAAE,GAAI;IACvB,UAAU,EAAC;EAAY,GACnBR,SAAS;IACb,SAAS,EAAEA,SAAS,CAACQ,IAAI,GAAG,GAAG,GAAGV,SAAU;IAC5C,SAAS,EAAEV,UAAU,mBAEnBG,iBAAiB,mBAAuBW,KAAK,CAAC,EAC9CD,QAAQ,KAAKX,QAAQ,CAACmB,GAAG,yBAA6B,EACtDV,SAAS;EACT,IAEDF,QAAQ,CACA;AAEf,CAAC"}
|
|
@@ -6,4 +6,4 @@ export interface ModalCardProps extends NavIdProps, ModalCardBaseProps {
|
|
|
6
6
|
/**
|
|
7
7
|
* @see https://vkcom.github.io/VKUI/#/ModalCard
|
|
8
8
|
*/
|
|
9
|
-
export declare const ModalCard: ({ icon, header, subheader, children, actions, onClose, nav, id, className, ...restProps }: ModalCardProps) => JSX.Element;
|
|
9
|
+
export declare const ModalCard: ({ icon, header, subheader, children, actions, onClose, nav, id, className, size, ...restProps }: ModalCardProps) => JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["icon", "header", "subheader", "children", "actions", "onClose", "nav", "id", "className"];
|
|
3
|
+
var _excluded = ["icon", "header", "subheader", "children", "actions", "onClose", "nav", "id", "className", "size"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { getPlatformClassName } from '../../helpers/getPlatformClassName';
|
|
6
6
|
import { classNames } from '@vkontakte/vkjs';
|
|
@@ -26,6 +26,7 @@ export var ModalCard = function ModalCard(_ref) {
|
|
|
26
26
|
nav = _ref.nav,
|
|
27
27
|
id = _ref.id,
|
|
28
28
|
className = _ref.className,
|
|
29
|
+
size = _ref.size,
|
|
29
30
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
30
31
|
var _useAdaptivityWithJSM = useAdaptivityWithJSMediaQueries(),
|
|
31
32
|
isDesktop = _useAdaptivityWithJSM.isDesktop;
|
|
@@ -46,7 +47,8 @@ export var ModalCard = function ModalCard(_ref) {
|
|
|
46
47
|
header: header,
|
|
47
48
|
subheader: subheader,
|
|
48
49
|
actions: actions,
|
|
49
|
-
onClose: onClose || modalContext.onClose
|
|
50
|
+
onClose: onClose || modalContext.onClose,
|
|
51
|
+
size: size
|
|
50
52
|
}, children));
|
|
51
53
|
};
|
|
52
54
|
//# sourceMappingURL=ModalCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalCard.js","names":["React","getPlatformClassName","classNames","ModalRootContext","useModalRegistry","ModalType","getNavId","warnOnce","ModalCardBase","useAdaptivityWithJSMediaQueries","usePlatform","warn","ModalCard","icon","header","subheader","children","actions","onClose","nav","id","className","restProps","isDesktop","platform","modalContext","useContext","CARD","refs","innerElement"],"sources":["../../../src/components/ModalCard/ModalCard.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { classNames } from '@vkontakte/vkjs';\nimport { ModalRootContext, useModalRegistry } from '../ModalRoot/ModalRootContext';\nimport { ModalType } from '../ModalRoot/types';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ModalCardBase, ModalCardBaseProps } from '../ModalCardBase/ModalCardBase';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport styles from './ModalCard.module.css';\n\nexport interface ModalCardProps extends NavIdProps, ModalCardBaseProps {}\n\nconst warn = warnOnce('ModalCard');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalCard\n */\nexport const ModalCard = ({\n icon,\n header,\n subheader,\n children,\n actions,\n onClose,\n nav,\n id,\n className,\n ...restProps\n}: ModalCardProps) => {\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const platform = usePlatform();\n\n const modalContext = React.useContext(ModalRootContext);\n const { refs } = useModalRegistry(getNavId({ nav, id }, warn), ModalType.CARD);\n\n return (\n <div\n {...restProps}\n id={id}\n className={classNames(\n styles['ModalCard'],\n getPlatformClassName(styles['ModalCard'], platform),\n isDesktop && styles['ModalCard--desktop'],\n className,\n )}\n >\n <ModalCardBase\n className={styles['ModalCard__in']}\n getRootRef={refs.innerElement}\n icon={icon}\n header={header}\n subheader={subheader}\n actions={actions}\n onClose={onClose || modalContext.onClose}\n >\n {children}\n </ModalCardBase>\n </div>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,oBAAoB,QAAQ,oCAAoC;AACzE,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,+BAA+B;AAClF,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,QAAQ,QAAoB,oBAAoB;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,aAAa,QAA4B,gCAAgC;AAClF,SAASC,+BAA+B,QAAQ,6CAA6C;AAC7F,SAASC,WAAW,QAAQ,yBAAyB;AAKrD,IAAMC,IAAI,GAAGJ,QAAQ,CAAC,WAAW,CAAC;;AAElC;AACA;AACA;AACA,OAAO,IAAMK,SAAS,GAAG,SAAZA,SAAS,
|
|
1
|
+
{"version":3,"file":"ModalCard.js","names":["React","getPlatformClassName","classNames","ModalRootContext","useModalRegistry","ModalType","getNavId","warnOnce","ModalCardBase","useAdaptivityWithJSMediaQueries","usePlatform","warn","ModalCard","icon","header","subheader","children","actions","onClose","nav","id","className","size","restProps","isDesktop","platform","modalContext","useContext","CARD","refs","innerElement"],"sources":["../../../src/components/ModalCard/ModalCard.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { classNames } from '@vkontakte/vkjs';\nimport { ModalRootContext, useModalRegistry } from '../ModalRoot/ModalRootContext';\nimport { ModalType } from '../ModalRoot/types';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ModalCardBase, ModalCardBaseProps } from '../ModalCardBase/ModalCardBase';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport styles from './ModalCard.module.css';\n\nexport interface ModalCardProps extends NavIdProps, ModalCardBaseProps {}\n\nconst warn = warnOnce('ModalCard');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalCard\n */\nexport const ModalCard = ({\n icon,\n header,\n subheader,\n children,\n actions,\n onClose,\n nav,\n id,\n className,\n size,\n ...restProps\n}: ModalCardProps) => {\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const platform = usePlatform();\n\n const modalContext = React.useContext(ModalRootContext);\n const { refs } = useModalRegistry(getNavId({ nav, id }, warn), ModalType.CARD);\n\n return (\n <div\n {...restProps}\n id={id}\n className={classNames(\n styles['ModalCard'],\n getPlatformClassName(styles['ModalCard'], platform),\n isDesktop && styles['ModalCard--desktop'],\n className,\n )}\n >\n <ModalCardBase\n className={styles['ModalCard__in']}\n getRootRef={refs.innerElement}\n icon={icon}\n header={header}\n subheader={subheader}\n actions={actions}\n onClose={onClose || modalContext.onClose}\n size={size}\n >\n {children}\n </ModalCardBase>\n </div>\n );\n};\n"],"mappings":";;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,oBAAoB,QAAQ,oCAAoC;AACzE,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,+BAA+B;AAClF,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,QAAQ,QAAoB,oBAAoB;AACzD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,aAAa,QAA4B,gCAAgC;AAClF,SAASC,+BAA+B,QAAQ,6CAA6C;AAC7F,SAASC,WAAW,QAAQ,yBAAyB;AAKrD,IAAMC,IAAI,GAAGJ,QAAQ,CAAC,WAAW,CAAC;;AAElC;AACA;AACA;AACA,OAAO,IAAMK,SAAS,GAAG,SAAZA,SAAS,OAYA;EAAA,IAXpBC,IAAI,QAAJA,IAAI;IACJC,MAAM,QAANA,MAAM;IACNC,SAAS,QAATA,SAAS;IACTC,QAAQ,QAARA,QAAQ;IACRC,OAAO,QAAPA,OAAO;IACPC,OAAO,QAAPA,OAAO;IACPC,GAAG,QAAHA,GAAG;IACHC,EAAE,QAAFA,EAAE;IACFC,SAAS,QAATA,SAAS;IACTC,IAAI,QAAJA,IAAI;IACDC,SAAS;EAEZ,4BAAsBd,+BAA+B,EAAE;IAA/Ce,SAAS,yBAATA,SAAS;EACjB,IAAMC,QAAQ,GAAGf,WAAW,EAAE;EAE9B,IAAMgB,YAAY,GAAG1B,KAAK,CAAC2B,UAAU,CAACxB,gBAAgB,CAAC;EACvD,wBAAiBC,gBAAgB,CAACE,QAAQ,CAAC;MAAEa,GAAG,EAAHA,GAAG;MAAEC,EAAE,EAAFA;IAAG,CAAC,EAAET,IAAI,CAAC,EAAEN,SAAS,CAACuB,IAAI,CAAC;IAAtEC,IAAI,qBAAJA,IAAI;EAEZ,oBACE,wCACMN,SAAS;IACb,EAAE,EAAEH,EAAG;IACP,SAAS,EAAElB,UAAU,kBAEnBD,oBAAoB,kBAAsBwB,QAAQ,CAAC,EACnDD,SAAS,4BAAgC,EACzCH,SAAS;EACT,iBAEF,oBAAC,aAAa;IACZ,SAAS,qBAA0B;IACnC,UAAU,EAAEQ,IAAI,CAACC,YAAa;IAC9B,IAAI,EAAEjB,IAAK;IACX,MAAM,EAAEC,MAAO;IACf,SAAS,EAAEC,SAAU;IACrB,OAAO,EAAEE,OAAQ;IACjB,OAAO,EAAEC,OAAO,IAAIQ,YAAY,CAACR,OAAQ;IACzC,IAAI,EAAEI;EAAK,GAEVN,QAAQ,CACK,CACZ;AAEV,CAAC"}
|
|
@@ -32,8 +32,12 @@ export interface ModalCardBaseProps extends React.HTMLAttributes<HTMLDivElement>
|
|
|
32
32
|
* `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.
|
|
33
33
|
*/
|
|
34
34
|
dismissLabel?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Задаёт контенту максимальную ширину для десктопной версии.
|
|
37
|
+
*/
|
|
38
|
+
size?: number;
|
|
35
39
|
}
|
|
36
40
|
/**
|
|
37
41
|
* @see https://vkcom.github.io/VKUI/#/ModalCardBase
|
|
38
42
|
*/
|
|
39
|
-
export declare const ModalCardBase: ({ getRootRef, icon, header, subheader, children, actions, onClose, dismissLabel, className, ...restProps }: ModalCardBaseProps) => JSX.Element;
|
|
43
|
+
export declare const ModalCardBase: ({ getRootRef, icon, header, subheader, children, actions, onClose, dismissLabel, className, style, size: sizeProp, ...restProps }: ModalCardBaseProps) => JSX.Element;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["getRootRef", "icon", "header", "subheader", "children", "actions", "onClose", "dismissLabel", "className"];
|
|
4
|
+
var _excluded = ["getRootRef", "icon", "header", "subheader", "children", "actions", "onClose", "dismissLabel", "className", "style", "size"];
|
|
4
5
|
import * as React from 'react';
|
|
5
6
|
import { Title } from '../Typography/Title/Title';
|
|
6
7
|
import { Subhead } from '../Typography/Subhead/Subhead';
|
|
@@ -27,15 +28,21 @@ export var ModalCardBase = function ModalCardBase(_ref) {
|
|
|
27
28
|
_ref$dismissLabel = _ref.dismissLabel,
|
|
28
29
|
dismissLabel = _ref$dismissLabel === void 0 ? 'Скрыть' : _ref$dismissLabel,
|
|
29
30
|
className = _ref.className,
|
|
31
|
+
style = _ref.style,
|
|
32
|
+
sizeProp = _ref.size,
|
|
30
33
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
31
34
|
var platform = usePlatform();
|
|
32
35
|
var _useAdaptivityWithJSM = useAdaptivityWithJSMediaQueries(),
|
|
33
36
|
isDesktop = _useAdaptivityWithJSM.isDesktop;
|
|
34
37
|
var isSoftwareKeyboardOpened = useKeyboard().isOpened;
|
|
35
38
|
var canShowCloseButtonIOS = platform === Platform.IOS && !isDesktop;
|
|
39
|
+
var size = isDesktop ? sizeProp : undefined;
|
|
36
40
|
return /*#__PURE__*/React.createElement("div", _extends({}, restProps, {
|
|
37
41
|
className: classNames("vkuiModalCardBase", getPlatformClassName("vkuiModalCardBase", platform), isDesktop && "vkuiModalCardBase--desktop", className),
|
|
38
|
-
ref: getRootRef
|
|
42
|
+
ref: getRootRef,
|
|
43
|
+
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
44
|
+
maxWidth: size
|
|
45
|
+
})
|
|
39
46
|
}), /*#__PURE__*/React.createElement("div", {
|
|
40
47
|
className: classNames("vkuiModalCardBase__container", isSoftwareKeyboardOpened && "vkuiModalCardBase__container--softwareKeyboardOpened")
|
|
41
48
|
}, hasReactNode(icon) && /*#__PURE__*/React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalCardBase.js","names":["React","Title","Subhead","classNames","hasReactNode","getPlatformClassName","usePlatform","PanelHeaderButton","Platform","ModalDismissButton","Icon24Dismiss","useKeyboard","useAdaptivityWithJSMediaQueries","ModalCardBase","getRootRef","icon","header","subheader","children","actions","onClose","dismissLabel","className","restProps","platform","isDesktop","isSoftwareKeyboardOpened","isOpened","canShowCloseButtonIOS","IOS"],"sources":["../../../src/components/ModalCardBase/ModalCardBase.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Title } from '../Typography/Title/Title';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRootRef } from '../../types';\nimport { PanelHeaderButton } from '../PanelHeaderButton/PanelHeaderButton';\nimport { Platform } from '../../lib/platform';\nimport { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';\nimport { Icon24Dismiss } from '@vkontakte/icons';\nimport { useKeyboard } from '../../hooks/useKeyboard';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport styles from './ModalCardBase.module.css';\n\nexport interface ModalCardBaseProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * Иконка.\n *\n * Может быть компонентом иконки, например, `<Icon56MoneyTransferOutline />`, или `<Avatar size={72} src=\"\" />`\n */\n icon?: React.ReactNode;\n\n /**\n * Заголовок карточки\n */\n header?: React.ReactNode;\n\n /**\n * Подзаголовок\n */\n subheader?: React.ReactNode;\n\n /**\n * Кнопки-действия. Принимает [`Button`](https://vkcom.github.io/VKUI/#/Button) с параметрами:\n *\n * - `size=\"l\" mode=\"primary\" stretched`\n * - `size=\"l\" mode=\"secondary\" stretched`\n *\n * Для набора кнопок используйте [`ButtonGroup`](https://vkcom.github.io/VKUI/#/ButtonGroup) с параметрами:\n *\n * - `gap=\"s\" mode=\"horizontal\" stretched`\n * - `gap=\"m\" mode=\"vertical\" stretched`\n */\n actions?: React.ReactNode;\n\n onClose?: VoidFunction;\n\n /**\n * `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalCardBase\n */\nexport const ModalCardBase = ({\n getRootRef,\n icon,\n header,\n subheader,\n children,\n actions,\n onClose,\n dismissLabel = 'Скрыть',\n className,\n ...restProps\n}: ModalCardBaseProps) => {\n const platform = usePlatform();\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const isSoftwareKeyboardOpened = useKeyboard().isOpened;\n\n const canShowCloseButtonIOS = platform === Platform.IOS && !isDesktop;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['ModalCardBase'],\n getPlatformClassName(styles['ModalCardBase'], platform),\n isDesktop && styles['ModalCardBase--desktop'],\n className,\n )}\n ref={getRootRef}\n >\n <div\n className={classNames(\n styles['ModalCardBase__container'],\n isSoftwareKeyboardOpened && styles['ModalCardBase__container--softwareKeyboardOpened'],\n )}\n >\n {hasReactNode(icon) && <div className={styles['ModalCardBase__icon']}>{icon}</div>}\n {hasReactNode(header) && (\n <Title level=\"2\" weight=\"2\" className={styles['ModalCardBase__header']}>\n {header}\n </Title>\n )}\n {hasReactNode(subheader) && (\n <Subhead className={styles['ModalCardBase__subheader']}>{subheader}</Subhead>\n )}\n\n {children}\n\n {hasReactNode(actions) && <div className={styles['ModalCardBase__actions']}>{actions}</div>}\n\n {isDesktop && <ModalDismissButton onClick={onClose} />}\n {canShowCloseButtonIOS && (\n <PanelHeaderButton\n aria-label={dismissLabel}\n className={styles['ModalCardBase__dismiss']}\n onClick={onClose}\n >\n <Icon24Dismiss />\n </PanelHeaderButton>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModalCardBase.js","names":["React","Title","Subhead","classNames","hasReactNode","getPlatformClassName","usePlatform","PanelHeaderButton","Platform","ModalDismissButton","Icon24Dismiss","useKeyboard","useAdaptivityWithJSMediaQueries","ModalCardBase","getRootRef","icon","header","subheader","children","actions","onClose","dismissLabel","className","style","sizeProp","size","restProps","platform","isDesktop","isSoftwareKeyboardOpened","isOpened","canShowCloseButtonIOS","IOS","undefined","maxWidth"],"sources":["../../../src/components/ModalCardBase/ModalCardBase.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Title } from '../Typography/Title/Title';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRootRef } from '../../types';\nimport { PanelHeaderButton } from '../PanelHeaderButton/PanelHeaderButton';\nimport { Platform } from '../../lib/platform';\nimport { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';\nimport { Icon24Dismiss } from '@vkontakte/icons';\nimport { useKeyboard } from '../../hooks/useKeyboard';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport styles from './ModalCardBase.module.css';\n\nexport interface ModalCardBaseProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * Иконка.\n *\n * Может быть компонентом иконки, например, `<Icon56MoneyTransferOutline />`, или `<Avatar size={72} src=\"\" />`\n */\n icon?: React.ReactNode;\n\n /**\n * Заголовок карточки\n */\n header?: React.ReactNode;\n\n /**\n * Подзаголовок\n */\n subheader?: React.ReactNode;\n\n /**\n * Кнопки-действия. Принимает [`Button`](https://vkcom.github.io/VKUI/#/Button) с параметрами:\n *\n * - `size=\"l\" mode=\"primary\" stretched`\n * - `size=\"l\" mode=\"secondary\" stretched`\n *\n * Для набора кнопок используйте [`ButtonGroup`](https://vkcom.github.io/VKUI/#/ButtonGroup) с параметрами:\n *\n * - `gap=\"s\" mode=\"horizontal\" stretched`\n * - `gap=\"m\" mode=\"vertical\" stretched`\n */\n actions?: React.ReactNode;\n\n onClose?: VoidFunction;\n\n /**\n * `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n\n /**\n * Задаёт контенту максимальную ширину для десктопной версии.\n */\n size?: number;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalCardBase\n */\nexport const ModalCardBase = ({\n getRootRef,\n icon,\n header,\n subheader,\n children,\n actions,\n onClose,\n dismissLabel = 'Скрыть',\n className,\n style,\n size: sizeProp,\n ...restProps\n}: ModalCardBaseProps) => {\n const platform = usePlatform();\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const isSoftwareKeyboardOpened = useKeyboard().isOpened;\n\n const canShowCloseButtonIOS = platform === Platform.IOS && !isDesktop;\n\n const size = isDesktop ? sizeProp : undefined;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['ModalCardBase'],\n getPlatformClassName(styles['ModalCardBase'], platform),\n isDesktop && styles['ModalCardBase--desktop'],\n className,\n )}\n ref={getRootRef}\n style={{\n ...style,\n maxWidth: size,\n }}\n >\n <div\n className={classNames(\n styles['ModalCardBase__container'],\n isSoftwareKeyboardOpened && styles['ModalCardBase__container--softwareKeyboardOpened'],\n )}\n >\n {hasReactNode(icon) && <div className={styles['ModalCardBase__icon']}>{icon}</div>}\n {hasReactNode(header) && (\n <Title level=\"2\" weight=\"2\" className={styles['ModalCardBase__header']}>\n {header}\n </Title>\n )}\n {hasReactNode(subheader) && (\n <Subhead className={styles['ModalCardBase__subheader']}>{subheader}</Subhead>\n )}\n\n {children}\n\n {hasReactNode(actions) && <div className={styles['ModalCardBase__actions']}>{actions}</div>}\n\n {isDesktop && <ModalDismissButton onClick={onClose} />}\n {canShowCloseButtonIOS && (\n <PanelHeaderButton\n aria-label={dismissLabel}\n className={styles['ModalCardBase__dismiss']}\n onClick={onClose}\n >\n <Icon24Dismiss />\n </PanelHeaderButton>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,KAAK,QAAQ,2BAA2B;AACjD,SAASC,OAAO,QAAQ,+BAA+B;AACvD,SAASC,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAC1D,SAASC,oBAAoB,QAAQ,oCAAoC;AACzE,SAASC,WAAW,QAAQ,yBAAyB;AAErD,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,kBAAkB,QAAQ,0CAA0C;AAC7E,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,+BAA+B,QAAQ,6CAA6C;AAiD7F;AACA;AACA;AACA,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAa,OAaA;EAAA,IAZxBC,UAAU,QAAVA,UAAU;IACVC,IAAI,QAAJA,IAAI;IACJC,MAAM,QAANA,MAAM;IACNC,SAAS,QAATA,SAAS;IACTC,QAAQ,QAARA,QAAQ;IACRC,OAAO,QAAPA,OAAO;IACPC,OAAO,QAAPA,OAAO;IAAA,yBACPC,YAAY;IAAZA,YAAY,kCAAG,QAAQ;IACvBC,SAAS,QAATA,SAAS;IACTC,KAAK,QAALA,KAAK;IACCC,QAAQ,QAAdC,IAAI;IACDC,SAAS;EAEZ,IAAMC,QAAQ,GAAGrB,WAAW,EAAE;EAC9B,4BAAsBM,+BAA+B,EAAE;IAA/CgB,SAAS,yBAATA,SAAS;EACjB,IAAMC,wBAAwB,GAAGlB,WAAW,EAAE,CAACmB,QAAQ;EAEvD,IAAMC,qBAAqB,GAAGJ,QAAQ,KAAKnB,QAAQ,CAACwB,GAAG,IAAI,CAACJ,SAAS;EAErE,IAAMH,IAAI,GAAGG,SAAS,GAAGJ,QAAQ,GAAGS,SAAS;EAE7C,oBACE,wCACMP,SAAS;IACb,SAAS,EAAEvB,UAAU,sBAEnBE,oBAAoB,sBAA0BsB,QAAQ,CAAC,EACvDC,SAAS,gCAAoC,EAC7CN,SAAS,CACT;IACF,GAAG,EAAER,UAAW;IAChB,KAAK,kCACAS,KAAK;MACRW,QAAQ,EAAET;IAAI;EACd,iBAEF;IACE,SAAS,EAAEtB,UAAU,iCAEnB0B,wBAAwB,0DAA8D;EACtF,GAEDzB,YAAY,CAACW,IAAI,CAAC,iBAAI;IAAK,SAAS;EAAgC,GAAEA,IAAI,CAAO,EACjFX,YAAY,CAACY,MAAM,CAAC,iBACnB,oBAAC,KAAK;IAAC,KAAK,EAAC,GAAG;IAAC,MAAM,EAAC,GAAG;IAAC,SAAS;EAAkC,GACpEA,MAAM,CAEV,EACAZ,YAAY,CAACa,SAAS,CAAC,iBACtB,oBAAC,OAAO;IAAC,SAAS;EAAqC,GAAEA,SAAS,CACnE,EAEAC,QAAQ,EAERd,YAAY,CAACe,OAAO,CAAC,iBAAI;IAAK,SAAS;EAAmC,GAAEA,OAAO,CAAO,EAE1FS,SAAS,iBAAI,oBAAC,kBAAkB;IAAC,OAAO,EAAER;EAAQ,EAAG,EACrDW,qBAAqB,iBACpB,oBAAC,iBAAiB;IAChB,cAAYV,YAAa;IACzB,SAAS,8BAAmC;IAC5C,OAAO,EAAED;EAAQ,gBAEjB,oBAAC,aAAa,OAAG,CAEpB,CACG,CACF;AAEV,CAAC"}
|
|
@@ -6,13 +6,9 @@ export interface ModalPageProps extends React.HTMLAttributes<HTMLDivElement>, Na
|
|
|
6
6
|
*/
|
|
7
7
|
header?: React.ReactNode;
|
|
8
8
|
/**
|
|
9
|
-
* Задаёт контенту максимальную
|
|
10
|
-
*
|
|
11
|
-
* > ⚠️ **Заметки:**
|
|
12
|
-
* > - Для `viewWidth < SMALL_TABLET_SIZE` будет всегда `"s"`
|
|
13
|
-
* > - Для `platform === VKCOM` максимальная ширина зашита, её не изменить.
|
|
9
|
+
* Задаёт контенту максимальную ширину для десктопной версии.
|
|
14
10
|
*/
|
|
15
|
-
size?: 's' | 'm' | 'l';
|
|
11
|
+
size?: 's' | 'm' | 'l' | number;
|
|
16
12
|
/**
|
|
17
13
|
* Будет вызвано при начале открытия модалки.
|
|
18
14
|
*/
|
|
@@ -2,7 +2,6 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
3
|
var _excluded = ["children", "header", "size", "onOpen", "onOpened", "onClose", "onClosed", "settlingHeight", "dynamicContentHeight", "getModalContentRef", "nav", "id", "hideCloseButton", "className"];
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import { getSizeXClassName } from '../../helpers/getSizeXClassName';
|
|
6
5
|
import { classNames } from '@vkontakte/vkjs';
|
|
7
6
|
import { Platform } from '../../lib/platform';
|
|
8
7
|
import { ModalRootContext, useModalRegistry } from '../ModalRoot/ModalRootContext';
|
|
@@ -14,6 +13,15 @@ import { ModalType } from '../ModalRoot/types';
|
|
|
14
13
|
import { getNavId } from '../../lib/getNavId';
|
|
15
14
|
import { warnOnce } from '../../lib/warnOnce';
|
|
16
15
|
import { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';
|
|
16
|
+
var sizeXClassNames = {
|
|
17
|
+
regular: "vkuiModalPage--sizeX-regular",
|
|
18
|
+
compact: ''
|
|
19
|
+
};
|
|
20
|
+
var sizeClassName = {
|
|
21
|
+
s: "vkuiModalPage--size-s",
|
|
22
|
+
m: "vkuiModalPage--size-m",
|
|
23
|
+
l: "vkuiModalPage--size-l"
|
|
24
|
+
};
|
|
17
25
|
var warn = warnOnce('ModalPage');
|
|
18
26
|
|
|
19
27
|
/**
|
|
@@ -55,9 +63,12 @@ export var ModalPage = function ModalPage(_ref) {
|
|
|
55
63
|
refs = _useModalRegistry.refs;
|
|
56
64
|
return /*#__PURE__*/React.createElement("div", _extends({}, restProps, {
|
|
57
65
|
id: id,
|
|
58
|
-
className: classNames("vkuiModalPage", platform === Platform.IOS && "vkuiModalPage--ios",
|
|
66
|
+
className: classNames("vkuiModalPage", platform === Platform.IOS && "vkuiModalPage--ios", isDesktop && "vkuiModalPage--desktop", sizeXClassNames[sizeX], typeof size === 'string' && sizeClassName[size], className)
|
|
59
67
|
}), /*#__PURE__*/React.createElement("div", {
|
|
60
68
|
className: "vkuiModalPage__in-wrap",
|
|
69
|
+
style: {
|
|
70
|
+
maxWidth: typeof size === 'number' ? size : undefined
|
|
71
|
+
},
|
|
61
72
|
ref: refs.innerElement
|
|
62
73
|
}, /*#__PURE__*/React.createElement("div", {
|
|
63
74
|
className: "vkuiModalPage__in"
|
|
@@ -75,9 +86,4 @@ export var ModalPage = function ModalPage(_ref) {
|
|
|
75
86
|
onClick: onClose || modalContext.onClose
|
|
76
87
|
}))));
|
|
77
88
|
};
|
|
78
|
-
var styles = {
|
|
79
|
-
"ModalPage--size-s": "vkuiModalPage--size-s",
|
|
80
|
-
"ModalPage--size-m": "vkuiModalPage--size-m",
|
|
81
|
-
"ModalPage--size-l": "vkuiModalPage--size-l"
|
|
82
|
-
};
|
|
83
89
|
//# sourceMappingURL=ModalPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalPage.js","names":["React","
|
|
1
|
+
{"version":3,"file":"ModalPage.js","names":["React","classNames","Platform","ModalRootContext","useModalRegistry","usePlatform","useOrientationChange","ModalDismissButton","multiRef","ModalType","getNavId","warnOnce","useAdaptivityWithJSMediaQueries","sizeXClassNames","regular","compact","sizeClassName","s","m","l","warn","ModalPage","children","header","size","sizeProp","onOpen","onOpened","onClose","onClosed","settlingHeight","dynamicContentHeight","getModalContentRef","nav","id","hideCloseButton","className","restProps","useContext","updateModalHeight","platform","orientation","sizeX","isDesktop","useEffect","isCloseButtonShown","modalContext","PAGE","refs","IOS","maxWidth","undefined","innerElement","headerElement","contentElement"],"sources":["../../../src/components/ModalPage/ModalPage.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { Platform } from '../../lib/platform';\nimport { ModalRootContext, useModalRegistry } from '../ModalRoot/ModalRootContext';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useOrientationChange } from '../../hooks/useOrientationChange';\nimport { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';\nimport { multiRef } from '../../lib/utils';\nimport { ModalType } from '../ModalRoot/types';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport styles from './ModalPage.module.css';\n\nconst sizeXClassNames = {\n regular: styles['ModalPage--sizeX-regular'],\n compact: '',\n};\n\nconst sizeClassName = {\n s: styles[`ModalPage--size-s`],\n m: styles[`ModalPage--size-m`],\n l: styles[`ModalPage--size-l`],\n};\n\nexport interface ModalPageProps extends React.HTMLAttributes<HTMLDivElement>, NavIdProps {\n /**\n * Шапка модальной страницы, `<ModalPageHeader />`\n */\n header?: React.ReactNode;\n /**\n * Задаёт контенту максимальную ширину для десктопной версии.\n */\n size?: 's' | 'm' | 'l' | number;\n /**\n * Будет вызвано при начале открытия модалки.\n */\n onOpen?: VoidFunction;\n /**\n * Будет вызвано при окончательном открытии модалки.\n */\n onOpened?: VoidFunction;\n /**\n * Будет вызвано при начале закрытия модалки.\n */\n onClose?: VoidFunction;\n /**\n * Будет вызвано при окончательном закрытии модалки.\n */\n onClosed?: VoidFunction;\n /**\n * Процент, на который изначально будет открыта модальная страница. При `settlingHeight={100}` модальная страница раскрывается на всю высоту.\n */\n settlingHeight?: number;\n /**\n * Если высота контента в модальной странице может поменяться, нужно установить это свойство\n */\n dynamicContentHeight?: boolean;\n getModalContentRef?: React.Ref<HTMLDivElement>;\n /**\n * Скрывает кнопку закрытия (актуально для iOS, т.к. можно отрисовать кнопку закрытия внутри модалки)\n */\n hideCloseButton?: boolean;\n}\n\nconst warn = warnOnce('ModalPage');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalPage\n */\nexport const ModalPage = ({\n children,\n header,\n size: sizeProp = 's',\n onOpen,\n onOpened,\n onClose,\n onClosed,\n settlingHeight, // 75\n dynamicContentHeight,\n getModalContentRef,\n nav,\n id,\n hideCloseButton = false,\n className,\n ...restProps\n}: ModalPageProps) => {\n const { updateModalHeight } = React.useContext(ModalRootContext);\n\n const platform = usePlatform();\n const orientation = useOrientationChange();\n const { sizeX, isDesktop } = useAdaptivityWithJSMediaQueries();\n\n React.useEffect(updateModalHeight, [children, orientation, updateModalHeight]);\n\n const isCloseButtonShown = !hideCloseButton && isDesktop;\n const size = isDesktop ? sizeProp : 's';\n\n const modalContext = React.useContext(ModalRootContext);\n const { refs } = useModalRegistry(getNavId({ nav, id }, warn), ModalType.PAGE);\n\n return (\n <div\n {...restProps}\n id={id}\n className={classNames(\n styles['ModalPage'],\n platform === Platform.IOS && styles['ModalPage--ios'],\n isDesktop && styles['ModalPage--desktop'],\n sizeXClassNames[sizeX],\n typeof size === 'string' && sizeClassName[size],\n className,\n )}\n >\n <div\n className={styles['ModalPage__in-wrap']}\n style={{\n maxWidth: typeof size === 'number' ? size : undefined,\n }}\n ref={refs.innerElement}\n >\n <div className={styles['ModalPage__in']}>\n <div className={styles['ModalPage__header']} ref={refs.headerElement}>\n {header}\n </div>\n\n <div className={styles['ModalPage__content-wrap']}>\n <div\n className={styles['ModalPage__content']}\n ref={multiRef<HTMLDivElement>(refs.contentElement, getModalContentRef)}\n >\n <div className={styles['ModalPage__content-in']}>{children}</div>\n </div>\n </div>\n {isCloseButtonShown && <ModalDismissButton onClick={onClose || modalContext.onClose} />}\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -28,7 +28,6 @@ import { FocusTrap } from '../FocusTrap/FocusTrap';
|
|
|
28
28
|
import { withModalManager } from './useModalManager';
|
|
29
29
|
import { clamp } from '../../helpers/math';
|
|
30
30
|
var warn = warnOnce('ModalRoot');
|
|
31
|
-
var IS_DEV = process.env.NODE_ENV === 'development';
|
|
32
31
|
function numberInRange(number, range) {
|
|
33
32
|
if (!range) {
|
|
34
33
|
return false;
|
|
@@ -594,7 +593,7 @@ function initModal(modalState) {
|
|
|
594
593
|
case ModalType.CARD:
|
|
595
594
|
return initCardModal(modalState);
|
|
596
595
|
default:
|
|
597
|
-
|
|
596
|
+
process.env.NODE_ENV === 'development' && warn("initActiveModal: modalState.type=\"".concat(modalState.type, "\" \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F"), 'error');
|
|
598
597
|
}
|
|
599
598
|
}
|
|
600
599
|
function initPageModal(modalState) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalRoot.js","names":["React","Touch","TouchRootContext","classNames","setTransformStyle","rubber","Platform","transitionEvent","withPlatform","withContext","ModalRootContext","ConfigProviderContext","WebviewType","ModalType","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withDOM","getNavId","warnOnce","FocusTrap","withModalManager","clamp","warn","IS_DEV","process","env","NODE_ENV","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","props","createRef","undefined","event","originalEvent","preventDefault","modalState","getModalState","activeModal","animateTranslate","translateY","type","PAGE","dynamicContentHeight","enteringModal","waitTransitionFinish","requestAnimationFrame","checkPageContentHeight","e","exitingModal","onPageTouchMove","CARD","onCardTouchMove","onPageTouchEnd","onCardTouchEnd","target","contentElement","contains","contentScrolled","contentScrollStopTimeout","clearTimeout","setTimeout","state","touchDown","dragging","maskElementRef","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","onClose","onExit","isInsideModal","frameIds","platform","IOS","document","window","Children","toArray","children","addEventListener","updateModalTranslate","toggleDocumentScrolling","removeEventListener","prevProps","closeModal","enteringState","onEnter","innerElement","style","transitionDelay","onEntered","delayEnter","timeout","restoreFocusTo","activeElement","focus","enabled","documentScrolling","preventTouch","passive","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","setState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","setMaskOpacity","shiftY","isY","viewportRef","current","stopPropagation","collapsed","expanded","touchStartContentScrollTop","scrollTop","touchMovePositive","headerElement","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","offsetHeight","Math","max","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","hidden","eventHandler","supported","onceHandler","name","percent","frameId","cancelAnimationFrame","forceOpacity","history","maskAnimationFrame","opacity","toString","configProvider","webviewType","VKAPPS","onTouchMove","onTouchEnd","onScroll","getModals","map","Modal","modalId","_modalState","isPage","key","Component","ModalRootTouch","initModal","initCardModal","contentHeight","firstElementChild","prevTranslateY","clientHeight","shiftHalf","visiblePart","headerHeight","height","parentElement"],"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { classNames } from '@vkontakte/vkjs';\nimport { setTransformStyle } from '../../lib/styles';\nimport { rubber } from '../../lib/touch';\nimport { Platform } from '../../lib/platform';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport { clamp } from '../../helpers/math';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n\n /**\n * Будет вызвано при начале открытия активной модалки с её id\n */\n onOpen?(modalId: string): void;\n\n /**\n * Будет вызвано при окончательном открытии активной модалки с её id\n */\n onOpened?(modalId: string): void;\n\n /**\n * Будет вызвано при начале закрытия активной модалки с её id\n */\n onClose?(modalId: string): void;\n\n /**\n * Будет вызвано при окончательном закрытии активной модалки с её id\n */\n onClosed?(modalId: string): void;\n\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n children?: React.ReactNode;\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling = false;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === Platform.IOS ? 400 : 320;\n }\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n getModalState(id: string | undefined | null) {\n if (!id) {\n return undefined;\n }\n return this.props.getModalState(id);\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport (Необходимо для iOS)\n if (this.props.platform === Platform.IOS) {\n this.window?.addEventListener('resize', this.updateModalTranslate, false);\n }\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window!.removeEventListener('resize', this.updateModalTranslate, false);\n }\n\n componentDidUpdate(prevProps: ModalRootProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.getModalState(enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.props.onEntered(enteringModal);\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document!.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n this.window!.removeEventListener('touchmove', this.preventTouch, {\n // @ts-expect-error: TS2769 В интерфейсе EventListenerOptions нет поля passive\n passive: false,\n });\n } else {\n this.window!.addEventListener('touchmove', this.preventTouch, {\n passive: false,\n });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n updateModalTranslate = () => {\n const modalState = this.getModalState(this.props.activeModal);\n modalState && this.animateTranslate(modalState, modalState.translateY);\n };\n\n checkPageContentHeight() {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === ModalType.PAGE && modalState.dynamicContentHeight) {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n\n const nextModalState = this.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.getModalState(activeModal);\n if (modalState?.type === ModalType.PAGE && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState?.innerElement?.removeEventListener(transitionEvent.name as string, onceHandler);\n eventHandler();\n };\n\n modalState?.innerElement?.addEventListener(transitionEvent.name as string, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.webviewType === WebviewType.VKAPPS &&\n styles['ModalRoot--vkapps'],\n touchDown && styles['ModalRoot--touched'],\n !!(enteringModal || exitingModal) && styles['ModalRoot--switching'],\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => {\n const modalState = this.getModalState(modalId);\n if (modalState) {\n modalState.modalElement = e;\n }\n }}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && styles['ModalRoot__modal--dragging'],\n\n isPage && modalState.expandable && styles['ModalRoot__modal--expandable'],\n isPage && modalState.collapsed && styles['ModalRoot__modal--collapsed'],\n )}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(\n withPlatform(withDOM<ModalRootProps>(withModalManager(initModal)(ModalRootTouchComponent))),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case ModalType.CARD:\n return initCardModal(modalState);\n default:\n IS_DEV &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement?.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (\n (modalState.expandable && translateY > (prevTranslateY ?? 100)) ||\n modalState.settlingHeight === 100\n ) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModalRoot.js","names":["React","Touch","TouchRootContext","classNames","setTransformStyle","rubber","Platform","transitionEvent","withPlatform","withContext","ModalRootContext","ConfigProviderContext","WebviewType","ModalType","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","withDOM","getNavId","warnOnce","FocusTrap","withModalManager","clamp","warn","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","props","createRef","undefined","event","originalEvent","preventDefault","modalState","getModalState","activeModal","animateTranslate","translateY","type","PAGE","dynamicContentHeight","enteringModal","waitTransitionFinish","requestAnimationFrame","checkPageContentHeight","e","exitingModal","onPageTouchMove","CARD","onCardTouchMove","onPageTouchEnd","onCardTouchEnd","target","contentElement","contains","contentScrolled","contentScrollStopTimeout","clearTimeout","setTimeout","state","touchDown","dragging","maskElementRef","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","onClose","onExit","isInsideModal","frameIds","platform","IOS","document","window","Children","toArray","children","addEventListener","updateModalTranslate","toggleDocumentScrolling","removeEventListener","prevProps","closeModal","enteringState","onEnter","innerElement","style","transitionDelay","onEntered","delayEnter","timeout","restoreFocusTo","activeElement","focus","enabled","documentScrolling","preventTouch","passive","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","setState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","setMaskOpacity","shiftY","isY","viewportRef","current","stopPropagation","collapsed","expanded","touchStartContentScrollTop","scrollTop","touchMovePositive","headerElement","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","offsetHeight","Math","max","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","hidden","eventHandler","supported","onceHandler","name","percent","frameId","cancelAnimationFrame","forceOpacity","history","maskAnimationFrame","opacity","toString","configProvider","webviewType","VKAPPS","onTouchMove","onTouchEnd","onScroll","getModals","map","Modal","modalId","_modalState","isPage","key","Component","ModalRootTouch","initModal","initCardModal","process","env","NODE_ENV","contentHeight","firstElementChild","prevTranslateY","clientHeight","shiftHalf","visiblePart","headerHeight","height","parentElement"],"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { classNames } from '@vkontakte/vkjs';\nimport { setTransformStyle } from '../../lib/styles';\nimport { rubber } from '../../lib/touch';\nimport { Platform } from '../../lib/platform';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport { clamp } from '../../helpers/math';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n\n /**\n * Будет вызвано при начале открытия активной модалки с её id\n */\n onOpen?(modalId: string): void;\n\n /**\n * Будет вызвано при окончательном открытии активной модалки с её id\n */\n onOpened?(modalId: string): void;\n\n /**\n * Будет вызвано при начале закрытия активной модалки с её id\n */\n onClose?(modalId: string): void;\n\n /**\n * Будет вызвано при окончательном закрытии активной модалки с её id\n */\n onClosed?(modalId: string): void;\n\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n children?: React.ReactNode;\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling = false;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === Platform.IOS ? 400 : 320;\n }\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n getModalState(id: string | undefined | null) {\n if (!id) {\n return undefined;\n }\n return this.props.getModalState(id);\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport (Необходимо для iOS)\n if (this.props.platform === Platform.IOS) {\n this.window?.addEventListener('resize', this.updateModalTranslate, false);\n }\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window!.removeEventListener('resize', this.updateModalTranslate, false);\n }\n\n componentDidUpdate(prevProps: ModalRootProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.getModalState(enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.props.onEntered(enteringModal);\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document!.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n this.window!.removeEventListener('touchmove', this.preventTouch, {\n // @ts-expect-error: TS2769 В интерфейсе EventListenerOptions нет поля passive\n passive: false,\n });\n } else {\n this.window!.addEventListener('touchmove', this.preventTouch, {\n passive: false,\n });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n updateModalTranslate = () => {\n const modalState = this.getModalState(this.props.activeModal);\n modalState && this.animateTranslate(modalState, modalState.translateY);\n };\n\n checkPageContentHeight() {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === ModalType.PAGE && modalState.dynamicContentHeight) {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n\n const nextModalState = this.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.getModalState(activeModal);\n if (modalState?.type === ModalType.PAGE && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState?.innerElement?.removeEventListener(transitionEvent.name as string, onceHandler);\n eventHandler();\n };\n\n modalState?.innerElement?.addEventListener(transitionEvent.name as string, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.webviewType === WebviewType.VKAPPS &&\n styles['ModalRoot--vkapps'],\n touchDown && styles['ModalRoot--touched'],\n !!(enteringModal || exitingModal) && styles['ModalRoot--switching'],\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => {\n const modalState = this.getModalState(modalId);\n if (modalState) {\n modalState.modalElement = e;\n }\n }}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && styles['ModalRoot__modal--dragging'],\n\n isPage && modalState.expandable && styles['ModalRoot__modal--expandable'],\n isPage && modalState.collapsed && styles['ModalRoot__modal--collapsed'],\n )}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(\n withPlatform(withDOM<ModalRootProps>(withModalManager(initModal)(ModalRootTouchComponent))),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case ModalType.CARD:\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement?.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (\n (modalState.expandable && translateY > (prevTranslateY ?? 100)) ||\n modalState.settlingHeight === 100\n ) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
export declare type Placement = 'auto' | 'auto-start' | 'auto-end' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'right-start' | 'right-end' | 'left-start' | 'left-end' | 'top' | 'bottom' | 'left' | 'right';
|
|
2
|
+
import type { HasRef } from '../../types';
|
|
3
|
+
import { type Placement, type PlacementWithAuto, type UseFloatingMiddleware } from '../../lib/floating';
|
|
5
4
|
export interface PopperRenderContentProps {
|
|
6
5
|
className: string;
|
|
7
6
|
}
|
|
@@ -9,7 +8,7 @@ export interface PopperCommonProps extends React.HTMLAttributes<HTMLDivElement>,
|
|
|
9
8
|
/**
|
|
10
9
|
* По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства
|
|
11
10
|
*/
|
|
12
|
-
placement?:
|
|
11
|
+
placement?: PlacementWithAuto;
|
|
13
12
|
/**
|
|
14
13
|
* Отступ по вспомогательной оси
|
|
15
14
|
*/
|
|
@@ -31,13 +30,14 @@ export interface PopperCommonProps extends React.HTMLAttributes<HTMLDivElement>,
|
|
|
31
30
|
*/
|
|
32
31
|
sameWidth?: boolean;
|
|
33
32
|
forcePortal?: boolean;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Подписывается на изменение геометрии `targetRef`, чтобы пересчитать свою позицию.
|
|
35
|
+
*/
|
|
36
|
+
autoUpdateOnTargetResize?: boolean;
|
|
37
37
|
/**
|
|
38
38
|
* Массив кастомных модификаторов для Popper (необходимо мемоизировать)
|
|
39
39
|
*/
|
|
40
|
-
|
|
40
|
+
customMiddlewares?: UseFloatingMiddleware[];
|
|
41
41
|
/**
|
|
42
42
|
* При передаче содержимого в `children`, он будет обёрнут во внутренний контейнер.
|
|
43
43
|
*
|
|
@@ -46,6 +46,9 @@ export interface PopperCommonProps extends React.HTMLAttributes<HTMLDivElement>,
|
|
|
46
46
|
* > ⚠️ Параметр `children` будет проигнорирован.
|
|
47
47
|
*/
|
|
48
48
|
renderContent?(props: PopperRenderContentProps): React.ReactNode;
|
|
49
|
+
onPlacementChange?(data: {
|
|
50
|
+
placement?: Placement;
|
|
51
|
+
}): void;
|
|
49
52
|
}
|
|
50
53
|
export interface PopperProps extends PopperCommonProps {
|
|
51
54
|
targetRef: React.RefObject<HTMLElement>;
|
|
@@ -53,4 +56,4 @@ export interface PopperProps extends PopperCommonProps {
|
|
|
53
56
|
/**
|
|
54
57
|
* @see https://vkcom.github.io/VKUI/#/Popper
|
|
55
58
|
*/
|
|
56
|
-
export declare const Popper: ({ targetRef, children, getRef, placement, onPlacementChange, arrow, arrowClassName, sameWidth, offsetDistance, offsetSkidding, forcePortal, style:
|
|
59
|
+
export declare const Popper: ({ targetRef, children, getRef, placement: placementProp, onPlacementChange, arrow, arrowClassName, sameWidth, offsetDistance, offsetSkidding, forcePortal, autoUpdateOnTargetResize, style: styleProp, customMiddlewares, renderContent, className, ...restProps }: PopperProps) => JSX.Element;
|