@vkontakte/vkui 5.7.1 → 5.7.2
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/Banner/Banner.js +1 -1
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js +3 -1
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +4 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/Group/Group.js +2 -3
- package/dist/cjs/components/Group/Group.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +13 -11
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/Image/Image.js +52 -37
- package/dist/cjs/components/Image/Image.js.map +1 -1
- package/dist/cjs/components/ImageBase/ImageBase.js +20 -1
- package/dist/cjs/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js +1 -1
- package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js +1 -3
- package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js +1 -1
- package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +8 -3
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/View/View.js +4 -4
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +4 -4
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityHasHover.js +4 -3
- package/dist/cjs/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/cjs/hooks/useAdaptivityHasPointer.js +5 -5
- package/dist/cjs/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/cjs/hooks/useAutoFocus.d.ts +2 -0
- package/dist/cjs/hooks/useAutoFocus.js +23 -0
- package/dist/cjs/hooks/useAutoFocus.js.map +1 -0
- package/dist/cjs/hooks/useChipsSelect.js +5 -4
- package/dist/cjs/hooks/useChipsSelect.js.map +1 -1
- package/dist/cjs/hooks/useFocusWithin.js +3 -0
- package/dist/cjs/hooks/useFocusWithin.js.map +1 -1
- package/dist/cjs/hooks/useIsClient.js +2 -1
- package/dist/cjs/hooks/useIsClient.js.map +1 -1
- package/dist/components/Banner/Banner.js +2 -2
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +3 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +4 -2
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/Group/Group.js +2 -3
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.js +13 -11
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/Image/Image.js +54 -39
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/ImageBase/ImageBase.js +20 -1
- package/dist/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/components/PopoutRoot/PopoutRoot.js +1 -3
- package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js +1 -1
- package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +8 -3
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/View/View.js +4 -4
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +4 -4
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +22 -22
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +757 -698
- package/dist/cssm/components/ActionSheet/ActionSheet.module.css +3 -3
- package/dist/cssm/components/Alert/Alert.module.css +4 -4
- package/dist/cssm/components/Banner/Banner.js +2 -2
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.module.css +2 -2
- package/dist/cssm/components/Checkbox/Checkbox.js +3 -1
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.module.css +6 -0
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +3 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/FocusVisible/FocusVisible.module.css +4 -4
- package/dist/cssm/components/Group/Group.js +2 -3
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +13 -11
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/Image/Image.js +46 -33
- package/dist/cssm/components/Image/Image.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.js +20 -1
- package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.module.css +0 -4
- package/dist/cssm/components/ModalRoot/ModalRoot.module.css +2 -2
- package/dist/cssm/components/PanelHeader/PanelHeader.module.css +4 -2
- package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.module.css +8 -8
- package/dist/cssm/components/Placeholder/Placeholder.module.css +1 -0
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js +1 -3
- package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
- package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +0 -4
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
- package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +2 -2
- package/dist/cssm/components/Popover/Popover.module.css +2 -2
- package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +4 -4
- package/dist/cssm/components/RichTooltip/RichTooltip.module.css +2 -2
- package/dist/cssm/components/Root/Root.module.css +12 -13
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +5 -5
- package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +6 -2
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js +0 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.module.css +4 -4
- package/dist/cssm/components/Tappable/Tappable.module.css +2 -2
- package/dist/cssm/components/TextTooltip/TextTooltip.module.css +2 -2
- package/dist/cssm/components/View/View.js +4 -4
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/View.module.css +16 -16
- package/dist/cssm/components/View/ViewInfinite.js +4 -4
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityHasHover.js +4 -3
- package/dist/cssm/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/cssm/hooks/useAdaptivityHasPointer.js +5 -5
- package/dist/cssm/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/cssm/hooks/useAutoFocus.d.ts +2 -0
- package/dist/cssm/hooks/useAutoFocus.js +12 -0
- package/dist/cssm/hooks/useAutoFocus.js.map +1 -0
- package/dist/cssm/hooks/useChipsSelect.js +5 -4
- package/dist/cssm/hooks/useChipsSelect.js.map +1 -1
- package/dist/cssm/hooks/useFocusWithin.js +3 -0
- package/dist/cssm/hooks/useFocusWithin.js.map +1 -1
- package/dist/cssm/hooks/useIsClient.js +2 -1
- package/dist/cssm/hooks/useIsClient.js.map +1 -1
- package/dist/cssm/styles/constants.css +1 -1
- package/dist/hooks/useAdaptivityHasHover.js +4 -3
- package/dist/hooks/useAdaptivityHasHover.js.map +1 -1
- package/dist/hooks/useAdaptivityHasPointer.js +5 -5
- package/dist/hooks/useAdaptivityHasPointer.js.map +1 -1
- package/dist/hooks/useAutoFocus.d.ts +2 -0
- package/dist/hooks/useAutoFocus.js +12 -0
- package/dist/hooks/useAutoFocus.js.map +1 -0
- package/dist/hooks/useChipsSelect.js +5 -4
- package/dist/hooks/useChipsSelect.js.map +1 -1
- package/dist/hooks/useFocusWithin.js +3 -0
- package/dist/hooks/useFocusWithin.js.map +1 -1
- package/dist/hooks/useIsClient.js +2 -1
- package/dist/hooks/useIsClient.js.map +1 -1
- package/dist/vkui.css +22 -22
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +757 -698
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/View/ViewInfinite.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { animationEvent, transitionEvent } from '../../lib/supportEvents';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasPlatform } from '../../types';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { swipeBackExcluded } from './utils';\nimport styles from './View.module.css';\n\nconst warn = warnOnce('ViewInfinite');\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: Array<number | undefined>;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nlet scrollsCache: ViewsScrolls = {};\n\nexport type TransitionParams = { from: string | null; to: string | null };\n\nexport interface ViewInfiniteProps\n extends React.HTMLAttributes<HTMLElement>,\n HasPlatform,\n NavIdProps {\n activePanel: string;\n onTransition?(params: TransitionParams & { isBack: boolean }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n isBackCheck?(params: TransitionParams): boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewInfiniteState {\n animated: boolean;\n\n visiblePanels: Array<string | null>;\n activePanel: string | null;\n isBack?: boolean;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackPrevented: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nclass ViewInfiniteComponent extends React.Component<\n ViewInfiniteProps & DOMProps,\n ViewInfiniteState\n> {\n private static readonly SWIPE_BACK_AREA = 70;\n\n constructor(props: ViewInfiniteProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipeBackPrevented: false,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewInfiniteProps> = {\n history: [],\n };\n\n private scrolls = scrollsCache[getNavId(this.props, warn) as string] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private animationFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement | null } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n }\n\n componentDidUpdate(prevProps: ViewInfiniteProps, prevState: ViewInfiniteState) {\n // Нужен переход\n if (\n prevProps.activePanel !== this.props.activePanel &&\n !prevState.swipingBack &&\n !prevState.browserSwipe\n ) {\n let isBack = false;\n\n if (this.props.isBackCheck) {\n isBack = this.props.isBackCheck({\n from: prevProps.activePanel,\n to: this.props.activePanel,\n });\n } else {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n isBack = firstLayerId === this.props.activePanel;\n }\n\n this.blurActiveElement();\n\n const prevScrolls = this.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...this.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n this.scrolls = scrolls;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n this.animationFinishTimeout = setTimeout(\n this.transitionEndHandler,\n this.props.platform === Platform.ANDROID || this.props.platform === Platform.VKCOM\n ? 300\n : 600,\n );\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.state.swipeBackNextPanel;\n const prevPanel = this.state.swipeBackPrevPanel;\n let scrollPosition: undefined | number = undefined;\n\n this.scrolls = {\n ...this.scrolls,\n };\n\n if (prevPanel !== null) {\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n this.scrolls[prevPanel] = prevPanelScrolls;\n }\n if (nextPanel !== null) {\n const newPanelScrolls = [...(this.scrolls[nextPanel] || [])];\n scrollPosition = newPanelScrolls.pop();\n this.scrolls[nextPanel] = newPanelScrolls;\n }\n\n this.setState(\n {\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n },\n () => {\n this.props.scroll?.scrollTo(0, scrollPosition);\n prevProps.onTransition &&\n prevProps.onTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n },\n );\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(\n this.pickPanel(this.state.swipeBackNextPanel),\n this.swipingBackTransitionEndHandler,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (\n prevState.swipeBackResult === SwipeBackResults.fail &&\n !this.state.swipeBackResult &&\n this.state.activePanel !== null\n ) {\n const newPanelScrolls = [...(this.scrolls[this.state.activePanel] || [])];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll?.scrollTo(0, scrollPosition);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return (\n this.props.configProvider?.transitionMotionEnabled === false ||\n !this.props.splitCol?.animate ||\n this.props.platform === Platform.VKCOM\n );\n }\n\n waitTransitionFinish(\n elem: HTMLElement | null | undefined,\n eventHandler: TransitionEventHandler,\n ): void {\n if (transitionEvent.supported && transitionEvent.name && elem) {\n elem.removeEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n elem.addEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n } else {\n if (this.transitionFinishTimeout) {\n clearTimeout(this.transitionFinishTimeout);\n }\n\n this.transitionFinishTimeout = setTimeout(\n eventHandler,\n this.props.platform === Platform.ANDROID || this.props.platform === Platform.VKCOM\n ? 300\n : 600,\n );\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document?.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string | null) {\n if (id === null) {\n return undefined;\n }\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n const newPanelScrolls = [...(this.scrolls[activePanel] || [])];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n if (isBack) {\n this.scrolls = {\n ...this.scrolls,\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n };\n }\n\n this.setState(\n {\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n },\n () => {\n this.props.scroll?.scrollTo(0, isBack ? scrollPosition : 0);\n this.props.onTransition &&\n this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n },\n );\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['vkui-animation-ios-next-forward'],\n styles['vkui-animation-ios-prev-back'],\n styles['vkui-animation-view-next-forward'],\n styles['vkui-animation-view-prev-back'],\n ].includes(e.animationName)) &&\n this.state.prevPanel !== null\n ) {\n this.flushTransition(this.state.prevPanel, Boolean(this.state.isBack));\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e.propertyName.includes('transform') &&\n e.target === this.pickPanel(this.state.swipeBackNextPanel))\n ) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (event: TouchEvent): void => {\n if (\n !this.window ||\n this.props.platform !== Platform.IOS ||\n this.state.swipeBackPrevented ||\n swipeBackExcluded(event) ||\n this.shouldDisableTransitionMotion()\n ) {\n return;\n }\n\n if (!this.props.configProvider?.isWebView) {\n if (\n (event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA ||\n event.startX >= this.window.innerWidth - ViewInfiniteComponent.SWIPE_BACK_AREA) &&\n !this.state.browserSwipe\n ) {\n this.setState({ browserSwipe: true });\n }\n\n return;\n }\n\n if (\n !this.props.onSwipeBack ||\n (this.state.animated && event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA)\n ) {\n return;\n }\n\n if (\n !this.state.swipingBack &&\n event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA &&\n this.props.history &&\n this.props.history.length > 1\n ) {\n if (this.props.onSwipeBackStart) {\n const payload = this.props.onSwipeBackStart(this.state.activePanel);\n if (payload === 'prevent') {\n this.setState({ swipeBackPrevented: true });\n return;\n }\n }\n\n if (this.state.activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n this.blurActiveElement();\n const prevScrolls = this.scrolls[this.state.activePanel] || [];\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n }\n\n this.setState({\n swipingBack: true,\n swipeBackStartX: event.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > this.window.innerWidth - this.state.swipeBackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n };\n\n onEnd = (event: TouchEvent): void => {\n if (this.state.swipingBack && this.window) {\n const speed = (this.state.swipeBackShift / event.duration) * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (\n speed > 250 ||\n this.state.swipeBackStartX + this.state.swipeBackShift > this.window.innerWidth / 2\n ) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n if (this.state.swipeBackPrevented) {\n this.setState({ swipeBackPrevented: false });\n }\n };\n\n calcPanelSwipeStyles(panelId: string | undefined): React.CSSProperties {\n if (!canUseDOM || !this.window) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${\n -50 + (this.state.swipeBackShift * 100) / this.window.innerWidth / 2\n }%`;\n let prevPanelShadow =\n (0.3 * (this.window.innerWidth - this.state.swipeBackShift)) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n platform,\n activePanel: _1,\n splitCol,\n configProvider,\n history,\n id,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel,\n window,\n document,\n scroll,\n isBackCheck,\n className,\n ...restProps\n } = this.props;\n const {\n prevPanel,\n nextPanel,\n activePanel,\n isBack,\n animated,\n swipeBackPrevPanel,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n } = this.state;\n\n const panels = this.panels\n .filter((panel) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && this.state.visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n })\n .sort((panel) => {\n const panelId = getNavId(panel.props, warn);\n const isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;\n\n if (isNextPanel) {\n return swipingBack || this.state.isBack ? -1 : 1;\n }\n\n if (isPrevPanel) {\n return swipingBack || this.state.isBack ? 1 : -1;\n }\n\n return 0;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && this.state.animated && styles['View--animated'],\n !disableAnimation && this.state.swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const scrollList = (panelId && this.scrolls[panelId]) || [];\n const scroll = scrollList[scrollList.length - 1] || 0;\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n styles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (this.panelNodes[panelId] = el)}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{ marginTop: compensateScroll ? -scroll : undefined }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n }\n}\n\nexport const ViewInfinite = withContext(\n withContext(\n withContext(\n withPlatform(withDOM<ViewInfiniteProps>(ViewInfiniteComponent)),\n SplitColContext,\n 'splitCol',\n ),\n ConfigProviderContext,\n 'configProvider',\n ),\n ScrollContext,\n 'scroll',\n);\n"],"names":["ViewInfinite","warn","warnOnce","SwipeBackResults","fail","success","scrollsCache","React","ViewInfiniteComponent","props","scrolls","getNavId","transitionFinishTimeout","undefined","animationFinishTimeout","panelNodes","transitionEndHandler","e","includes","animationName","state","prevPanel","flushTransition","Boolean","isBack","swipingBackTransitionEndHandler","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","onSwipeBackCancel","onSwipeBackSuccess","onMoveX","event","window","platform","Platform","IOS","swipeBackPrevented","swipeBackExcluded","shouldDisableTransitionMotion","configProvider","isWebView","startX","SWIPE_BACK_AREA","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","onSwipeBackStart","payload","activePanel","blurActiveElement","prevScrolls","scroll","getScroll","y","swipeBackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","onEnd","speed","duration","visiblePanels","nextPanel","document","panels","Children","toArray","children","componentWillUnmount","id","clearTimeout","componentDidUpdate","prevProps","prevState","isBackCheck","from","to","firstLayerId","map","panel","find","animationEvent","supported","setTimeout","ANDROID","VKCOM","scrollPosition","prevPanelScrolls","newPanelScrolls","pop","scrollTo","onTransition","waitTransitionFinish","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","name","removeEventListener","addEventListener","activeElement","blur","calcPanelSwipeStyles","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","render","_1","nav","className","restProps","filter","sort","isPrevPanel","isNextPanel","disableAnimation","Touch","Component","classNames","div","compensateScroll","isTransitionTarget","scrollList","onAnimationEnd","ref","el","style","key","marginTop","NavTransitionProvider","entering","defaultProps","withContext","withPlatform","withDOM","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/View/ViewInfinite.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { canUseDOM, DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { animationEvent, transitionEvent } from '../../lib/supportEvents';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasPlatform } from '../../types';\nimport { ScrollContext, ScrollContextInterface } from '../AppRoot/ScrollContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { SplitColContext, SplitColContextProps } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { swipeBackExcluded } from './utils';\nimport styles from './View.module.css';\n\nconst warn = warnOnce('ViewInfinite');\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: Array<number | undefined>;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\ntype TransitionEventHandler = (e?: TransitionEvent) => void;\n\nlet scrollsCache: ViewsScrolls = {};\n\nexport type TransitionParams = { from: string | null; to: string | null };\n\nexport interface ViewInfiniteProps\n extends React.HTMLAttributes<HTMLElement>,\n HasPlatform,\n NavIdProps {\n activePanel: string;\n onTransition?(params: TransitionParams & { isBack: boolean }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n isBackCheck?(params: TransitionParams): boolean;\n /**\n * @ignore\n */\n splitCol?: SplitColContextProps;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n /**\n * @ignore\n */\n scroll?: ScrollContextInterface;\n}\n\nexport interface ViewInfiniteState {\n animated: boolean;\n\n visiblePanels: Array<string | null>;\n activePanel: string | null;\n isBack?: boolean;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackPrevented: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nclass ViewInfiniteComponent extends React.Component<\n ViewInfiniteProps & DOMProps,\n ViewInfiniteState\n> {\n private static readonly SWIPE_BACK_AREA = 70;\n\n constructor(props: ViewInfiniteProps) {\n super(props);\n\n this.state = {\n animated: false,\n\n visiblePanels: [props.activePanel],\n activePanel: props.activePanel,\n isBack: undefined,\n prevPanel: null,\n nextPanel: null,\n\n swipingBack: false,\n swipeBackPrevented: false,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n swipeBackNextPanel: null,\n swipeBackPrevPanel: null,\n swipeBackResult: null,\n\n browserSwipe: false,\n };\n }\n\n static defaultProps: Partial<ViewInfiniteProps> = {\n history: [],\n };\n\n private scrolls = scrollsCache[getNavId(this.props, warn) as string] || {};\n private transitionFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n private animationFinishTimeout: ReturnType<typeof setTimeout> | undefined = undefined;\n\n get document() {\n return this.props.document;\n }\n\n get window() {\n return this.props.window;\n }\n\n get panels() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n panelNodes: { [id: string]: HTMLDivElement | null } = {};\n\n componentWillUnmount() {\n const id = getNavId(this.props);\n if (id) {\n scrollsCache[id] = this.scrolls;\n }\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n }\n\n componentDidUpdate(prevProps: ViewInfiniteProps, prevState: ViewInfiniteState) {\n // Нужен переход\n if (\n prevProps.activePanel !== this.props.activePanel &&\n !prevState.swipingBack &&\n !prevState.browserSwipe\n ) {\n let isBack = false;\n\n if (this.props.isBackCheck) {\n isBack = this.props.isBackCheck({\n from: prevProps.activePanel,\n to: this.props.activePanel,\n });\n } else {\n const firstLayerId = this.panels\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevProps.activePanel || id === this.props.activePanel);\n isBack = firstLayerId === this.props.activePanel;\n }\n\n this.blurActiveElement();\n\n const prevScrolls = this.scrolls[prevProps.activePanel] || [];\n const scrolls = {\n ...this.scrolls,\n [prevProps.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n this.scrolls = scrolls;\n\n if (this.shouldDisableTransitionMotion()) {\n this.flushTransition(prevProps.activePanel, isBack);\n } else {\n this.setState({\n visiblePanels: [prevProps.activePanel, this.props.activePanel],\n prevPanel: prevProps.activePanel,\n nextPanel: this.props.activePanel,\n activePanel: null,\n animated: true,\n isBack,\n });\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n if (this.animationFinishTimeout) {\n clearTimeout(this.animationFinishTimeout);\n }\n this.animationFinishTimeout = setTimeout(\n this.transitionEndHandler,\n this.props.platform === Platform.ANDROID || this.props.platform === Platform.VKCOM\n ? 300\n : 600,\n );\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevProps.activePanel !== this.props.activePanel && prevState.swipingBack) {\n const nextPanel = this.state.swipeBackNextPanel;\n const prevPanel = this.state.swipeBackPrevPanel;\n let scrollPosition: undefined | number = undefined;\n\n this.scrolls = {\n ...this.scrolls,\n };\n\n if (prevPanel !== null) {\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n this.scrolls[prevPanel] = prevPanelScrolls;\n }\n if (nextPanel !== null) {\n const newPanelScrolls = [...(this.scrolls[nextPanel] || [])];\n scrollPosition = newPanelScrolls.pop();\n this.scrolls[nextPanel] = newPanelScrolls;\n }\n\n this.setState(\n {\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n activePanel: nextPanel,\n visiblePanels: [nextPanel],\n },\n () => {\n this.props.scroll?.scrollTo(0, scrollPosition);\n prevProps.onTransition &&\n prevProps.onTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n },\n );\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevState.swipeBackResult && this.state.swipeBackResult) {\n this.waitTransitionFinish(\n this.pickPanel(this.state.swipeBackNextPanel),\n this.swipingBackTransitionEndHandler,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (\n prevState.swipeBackResult === SwipeBackResults.fail &&\n !this.state.swipeBackResult &&\n this.state.activePanel !== null\n ) {\n const newPanelScrolls = [...(this.scrolls[this.state.activePanel] || [])];\n const scrollPosition = newPanelScrolls.pop();\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: newPanelScrolls,\n };\n\n this.props.scroll?.scrollTo(0, scrollPosition);\n }\n\n // Закончился Safari свайп\n if (prevProps.activePanel !== this.props.activePanel && this.state.browserSwipe) {\n this.setState({\n browserSwipe: false,\n nextPanel: null,\n prevPanel: null,\n animated: false,\n visiblePanels: [this.props.activePanel],\n activePanel: this.props.activePanel,\n });\n }\n }\n\n shouldDisableTransitionMotion(): boolean {\n return (\n this.props.configProvider?.transitionMotionEnabled === false ||\n !this.props.splitCol?.animate ||\n this.props.platform === Platform.VKCOM\n );\n }\n\n waitTransitionFinish(\n elem: HTMLElement | null | undefined,\n eventHandler: TransitionEventHandler,\n ): void {\n if (transitionEvent.supported && transitionEvent.name && elem) {\n elem.removeEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n elem.addEventListener(\n transitionEvent.name as keyof HTMLElementEventMap,\n eventHandler as EventListener,\n );\n } else {\n if (this.transitionFinishTimeout) {\n clearTimeout(this.transitionFinishTimeout);\n }\n\n this.transitionFinishTimeout = setTimeout(\n eventHandler,\n this.props.platform === Platform.ANDROID || this.props.platform === Platform.VKCOM\n ? 300\n : 600,\n );\n }\n }\n\n blurActiveElement(): void {\n if (typeof this.window !== 'undefined' && this.document?.activeElement) {\n (this.document.activeElement as HTMLElement).blur();\n }\n }\n\n pickPanel(id: string | null) {\n if (id === null) {\n return undefined;\n }\n return this.panelNodes[id];\n }\n\n flushTransition(prevPanel: string, isBack: boolean) {\n const activePanel = this.props.activePanel;\n\n const prevPanelScrolls = [...(this.scrolls[prevPanel] || [])].slice(0, -1);\n const newPanelScrolls = [...(this.scrolls[activePanel] || [])];\n const scrollPosition = isBack ? newPanelScrolls.pop() : 0;\n if (isBack) {\n this.scrolls = {\n ...this.scrolls,\n [prevPanel]: prevPanelScrolls,\n [activePanel]: newPanelScrolls,\n };\n }\n\n this.setState(\n {\n prevPanel: null,\n nextPanel: null,\n visiblePanels: [activePanel],\n activePanel: activePanel,\n animated: false,\n isBack: undefined,\n },\n () => {\n this.props.scroll?.scrollTo(0, isBack ? scrollPosition : 0);\n this.props.onTransition &&\n this.props.onTransition({ isBack, from: prevPanel, to: activePanel });\n },\n );\n }\n\n transitionEndHandler = (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['animation-ios-next-forward'],\n styles['animation-ios-prev-back'],\n styles['animation-view-next-forward'],\n styles['animation-view-prev-back'],\n ].includes(e.animationName)) &&\n this.state.prevPanel !== null\n ) {\n this.flushTransition(this.state.prevPanel, Boolean(this.state.isBack));\n }\n };\n\n swipingBackTransitionEndHandler = (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e.propertyName.includes('transform') &&\n e.target === this.pickPanel(this.state.swipeBackNextPanel))\n ) {\n switch (this.state.swipeBackResult) {\n case SwipeBackResults.fail:\n this.onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n this.onSwipeBackSuccess();\n }\n }\n };\n\n onSwipeBackSuccess(): void {\n this.props.onSwipeBack && this.props.onSwipeBack();\n }\n\n onSwipeBackCancel(): void {\n this.props.onSwipeBackCancel && this.props.onSwipeBackCancel();\n this.setState({\n swipeBackPrevPanel: null,\n swipeBackNextPanel: null,\n swipingBack: false,\n swipeBackResult: null,\n swipeBackStartX: 0,\n swipeBackShift: 0,\n });\n }\n\n onMoveX = (event: TouchEvent): void => {\n if (\n !this.window ||\n this.props.platform !== Platform.IOS ||\n this.state.swipeBackPrevented ||\n swipeBackExcluded(event) ||\n this.shouldDisableTransitionMotion()\n ) {\n return;\n }\n\n if (!this.props.configProvider?.isWebView) {\n if (\n (event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA ||\n event.startX >= this.window.innerWidth - ViewInfiniteComponent.SWIPE_BACK_AREA) &&\n !this.state.browserSwipe\n ) {\n this.setState({ browserSwipe: true });\n }\n\n return;\n }\n\n if (\n !this.props.onSwipeBack ||\n (this.state.animated && event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA)\n ) {\n return;\n }\n\n if (\n !this.state.swipingBack &&\n event.startX <= ViewInfiniteComponent.SWIPE_BACK_AREA &&\n this.props.history &&\n this.props.history.length > 1\n ) {\n if (this.props.onSwipeBackStart) {\n const payload = this.props.onSwipeBackStart(this.state.activePanel);\n if (payload === 'prevent') {\n this.setState({ swipeBackPrevented: true });\n return;\n }\n }\n\n if (this.state.activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n this.blurActiveElement();\n const prevScrolls = this.scrolls[this.state.activePanel] || [];\n this.scrolls = {\n ...this.scrolls,\n [this.state.activePanel]: [...prevScrolls, this.props.scroll?.getScroll().y],\n };\n }\n\n this.setState({\n swipingBack: true,\n swipeBackStartX: event.startX,\n swipeBackPrevPanel: this.state.activePanel,\n swipeBackNextPanel: this.props.history.slice(-2)[0],\n });\n }\n\n if (this.state.swipingBack) {\n let swipeBackShift;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > this.window.innerWidth - this.state.swipeBackStartX) {\n swipeBackShift = this.window.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n this.setState({ swipeBackShift });\n }\n };\n\n onEnd = (event: TouchEvent): void => {\n if (this.state.swipingBack && this.window) {\n const speed = (this.state.swipeBackShift / event.duration) * 1000;\n if (this.state.swipeBackShift === 0) {\n this.onSwipeBackCancel();\n } else if (this.state.swipeBackShift >= this.window.innerWidth) {\n this.onSwipeBackSuccess();\n } else if (\n speed > 250 ||\n this.state.swipeBackStartX + this.state.swipeBackShift > this.window.innerWidth / 2\n ) {\n this.setState({ swipeBackResult: SwipeBackResults.success });\n } else {\n this.setState({ swipeBackResult: SwipeBackResults.fail });\n }\n }\n if (this.state.swipeBackPrevented) {\n this.setState({ swipeBackPrevented: false });\n }\n };\n\n calcPanelSwipeStyles(panelId: string | undefined): React.CSSProperties {\n if (!canUseDOM || !this.window) {\n return {};\n }\n\n const isPrev = panelId === this.state.swipeBackPrevPanel;\n const isNext = panelId === this.state.swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || this.state.swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${this.state.swipeBackShift}px`;\n let nextPanelTranslate = `${\n -50 + (this.state.swipeBackShift * 100) / this.window.innerWidth / 2\n }%`;\n let prevPanelShadow =\n (0.3 * (this.window.innerWidth - this.state.swipeBackShift)) / this.window.innerWidth;\n\n if (this.state.swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n }\n\n render() {\n const {\n platform,\n activePanel: _1,\n splitCol,\n configProvider,\n history,\n id,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel,\n window,\n document,\n scroll,\n isBackCheck,\n className,\n ...restProps\n } = this.props;\n const {\n prevPanel,\n nextPanel,\n activePanel,\n isBack,\n animated,\n swipeBackPrevPanel,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n } = this.state;\n\n const panels = this.panels\n .filter((panel) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && this.state.visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n })\n .sort((panel) => {\n const panelId = getNavId(panel.props, warn);\n const isPrevPanel = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isNextPanel = panelId === nextPanel || panelId === swipeBackNextPanel;\n\n if (isNextPanel) {\n return swipingBack || this.state.isBack ? -1 : 1;\n }\n\n if (isPrevPanel) {\n return swipingBack || this.state.isBack ? 1 : -1;\n }\n\n return 0;\n });\n\n const disableAnimation = this.shouldDisableTransitionMotion();\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && this.state.animated && styles['View--animated'],\n !disableAnimation && this.state.swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={this.onMoveX}\n onEnd={this.onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const scrollList = (panelId && this.scrolls[panelId]) || [];\n const scroll = scrollList[scrollList.length - 1] || 0;\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n styles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (this.panelNodes[panelId] = el)}\n style={this.calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{ marginTop: compensateScroll ? -scroll : undefined }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n }\n}\n\nexport const ViewInfinite = withContext(\n withContext(\n withContext(\n withPlatform(withDOM<ViewInfiniteProps>(ViewInfiniteComponent)),\n SplitColContext,\n 'splitCol',\n ),\n ConfigProviderContext,\n 'configProvider',\n ),\n ScrollContext,\n 'scroll',\n);\n"],"names":["ViewInfinite","warn","warnOnce","SwipeBackResults","fail","success","scrollsCache","React","ViewInfiniteComponent","props","scrolls","getNavId","transitionFinishTimeout","undefined","animationFinishTimeout","panelNodes","transitionEndHandler","e","includes","animationName","state","prevPanel","flushTransition","Boolean","isBack","swipingBackTransitionEndHandler","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","onSwipeBackCancel","onSwipeBackSuccess","onMoveX","event","window","platform","Platform","IOS","swipeBackPrevented","swipeBackExcluded","shouldDisableTransitionMotion","configProvider","isWebView","startX","SWIPE_BACK_AREA","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","onSwipeBackStart","payload","activePanel","blurActiveElement","prevScrolls","scroll","getScroll","y","swipeBackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","onEnd","speed","duration","visiblePanels","nextPanel","document","panels","Children","toArray","children","componentWillUnmount","id","clearTimeout","componentDidUpdate","prevProps","prevState","isBackCheck","from","to","firstLayerId","map","panel","find","animationEvent","supported","setTimeout","ANDROID","VKCOM","scrollPosition","prevPanelScrolls","newPanelScrolls","pop","scrollTo","onTransition","waitTransitionFinish","transitionMotionEnabled","splitCol","animate","elem","eventHandler","transitionEvent","name","removeEventListener","addEventListener","activeElement","blur","calcPanelSwipeStyles","panelId","canUseDOM","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","render","_1","nav","className","restProps","filter","sort","isPrevPanel","isNextPanel","disableAnimation","Touch","Component","classNames","div","compensateScroll","isTransitionTarget","scrollList","onAnimationEnd","ref","el","style","key","marginTop","NavTransitionProvider","entering","defaultProps","withContext","withPlatform","withDOM","SplitColContext","ConfigProviderContext","ScrollContext"],"mappings":"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"}
|
|
@@ -17,9 +17,10 @@ function useAdaptivityHasHover() {
|
|
|
17
17
|
var deferDetect = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
18
18
|
var _React_useContext = _react.useContext(_AdaptivityContext.AdaptivityContext), hasHoverContext = _React_useContext.hasHover;
|
|
19
19
|
var hasHover = hasHoverContext === undefined ? _vkjs.hasHover : hasHoverContext;
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
var needTwoPassRendering = deferDetect || hasHoverContext === undefined;
|
|
21
|
+
var isClient = (0, _useIsClient.useIsClient)(!needTwoPassRendering);
|
|
22
|
+
if (!isClient || hasHoverContext !== undefined) {
|
|
23
|
+
return hasHoverContext;
|
|
23
24
|
}
|
|
24
25
|
return hasHover;
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useAdaptivityHasHover.ts"],"sourcesContent":["import * as React from 'react';\nimport { hasHover as hasHoverLib } from '@vkontakte/vkjs';\nimport { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';\nimport { useIsClient } from './useIsClient';\n\n/**\n * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию\n * откладываем определение на второй рендер.\n *\n * [No SSR] Если передать `false`, то определение будет сразу.\n */\nexport function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;\nexport function useAdaptivityHasHover(deferDetect?: false): boolean;\nexport function useAdaptivityHasHover(deferDetect = true): undefined | boolean {\n const { hasHover: hasHoverContext } = React.useContext(AdaptivityContext);\n const hasHover = hasHoverContext === undefined ? hasHoverLib : hasHoverContext;\n\n const isClient = useIsClient(!
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useAdaptivityHasHover.ts"],"sourcesContent":["import * as React from 'react';\nimport { hasHover as hasHoverLib } from '@vkontakte/vkjs';\nimport { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';\nimport { useIsClient } from './useIsClient';\n\n/**\n * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию\n * откладываем определение на второй рендер.\n *\n * [No SSR] Если передать `false`, то определение будет сразу.\n */\nexport function useAdaptivityHasHover(deferDetect?: true): undefined | boolean;\nexport function useAdaptivityHasHover(deferDetect?: false): boolean;\nexport function useAdaptivityHasHover(deferDetect = true): undefined | boolean {\n const { hasHover: hasHoverContext } = React.useContext(AdaptivityContext);\n const hasHover = hasHoverContext === undefined ? hasHoverLib : hasHoverContext;\n\n const needTwoPassRendering = deferDetect || hasHoverContext === undefined;\n\n const isClient = useIsClient(!needTwoPassRendering);\n if (!isClient || hasHoverContext !== undefined) {\n return hasHoverContext;\n }\n\n return hasHover;\n}\n"],"names":["useAdaptivityHasHover","deferDetect","React","useContext","AdaptivityContext","hasHover","hasHoverContext","undefined","hasHoverLib","needTwoPassRendering","isClient","useIsClient"],"mappings":";;;;+BAagBA;;;eAAAA;;;;+DAbO;oBACiB;iCACN;2BACN;AAUrB,SAASA;QAAsBC,cAAAA,iEAAc;IAClD,IAAsCC,oBAAAA,OAAMC,UAAU,CAACC,oCAAiB,GAAhEC,AAAUC,kBAAoBJ,kBAA9BG;IACR,IAAMA,WAAWC,oBAAoBC,YAAYC,cAAW,GAAGF;IAE/D,IAAMG,uBAAuBR,eAAeK,oBAAoBC;IAEhE,IAAMG,WAAWC,IAAAA,wBAAW,EAAC,CAACF;IAC9B,IAAI,CAACC,YAAYJ,oBAAoBC,WAAW;QAC9C,OAAOD;IACT;IAEA,OAAOD;AACT"}
|
|
@@ -16,12 +16,12 @@ var _useIsClient = require("./useIsClient");
|
|
|
16
16
|
function useAdaptivityHasPointer() {
|
|
17
17
|
var deferDetect = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
18
18
|
var _React_useContext = _react.useContext(_AdaptivityContext.AdaptivityContext), hasPointerContext = _React_useContext.hasPointer;
|
|
19
|
-
var
|
|
20
|
-
var isClient = (0, _useIsClient.useIsClient)(!
|
|
21
|
-
if (!isClient) {
|
|
22
|
-
return
|
|
19
|
+
var needTwoPassRendering = deferDetect || hasPointerContext === undefined;
|
|
20
|
+
var isClient = (0, _useIsClient.useIsClient)(!needTwoPassRendering);
|
|
21
|
+
if (!isClient || hasPointerContext !== undefined) {
|
|
22
|
+
return hasPointerContext;
|
|
23
23
|
}
|
|
24
|
-
return
|
|
24
|
+
return _vkjs.hasMouse;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
//# sourceMappingURL=useAdaptivityHasPointer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useAdaptivityHasPointer.ts"],"sourcesContent":["import * as React from 'react';\nimport { hasMouse as hasPointerLib } from '@vkontakte/vkjs';\nimport { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';\nimport { useIsClient } from './useIsClient';\n\n/**\n * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию\n * откладываем определение на второй рендер.\n *\n * [No SSR] Если передать `false`, то определение будет сразу.\n */\nexport function useAdaptivityHasPointer(deferDetect?: true): undefined | boolean; // prettier-ignore\nexport function useAdaptivityHasPointer(deferDetect?: false): boolean;\nexport function useAdaptivityHasPointer(deferDetect = true): undefined | boolean {\n const { hasPointer: hasPointerContext } = React.useContext(AdaptivityContext);\n const
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useAdaptivityHasPointer.ts"],"sourcesContent":["import * as React from 'react';\nimport { hasMouse as hasPointerLib } from '@vkontakte/vkjs';\nimport { AdaptivityContext } from '../components/AdaptivityProvider/AdaptivityContext';\nimport { useIsClient } from './useIsClient';\n\n/**\n * Определение происходит с помощью `window.matchMedia`. Для того, чтобы не было ошибок при гидратации, по умолчанию\n * откладываем определение на второй рендер.\n *\n * [No SSR] Если передать `false`, то определение будет сразу.\n */\nexport function useAdaptivityHasPointer(deferDetect?: true): undefined | boolean; // prettier-ignore\nexport function useAdaptivityHasPointer(deferDetect?: false): boolean;\nexport function useAdaptivityHasPointer(deferDetect = true): undefined | boolean {\n const { hasPointer: hasPointerContext } = React.useContext(AdaptivityContext);\n\n const needTwoPassRendering = deferDetect || hasPointerContext === undefined;\n\n const isClient = useIsClient(!needTwoPassRendering);\n if (!isClient || hasPointerContext !== undefined) {\n return hasPointerContext;\n }\n\n return hasPointerLib;\n}\n"],"names":["useAdaptivityHasPointer","deferDetect","React","useContext","AdaptivityContext","hasPointer","hasPointerContext","needTwoPassRendering","undefined","isClient","useIsClient","hasPointerLib"],"mappings":";;;;+BAagBA;;;eAAAA;;;;+DAbO;oBACmB;iCACR;2BACN;AAUrB,SAASA;QAAwBC,cAAAA,iEAAc;IACpD,IAA0CC,oBAAAA,OAAMC,UAAU,CAACC,oCAAiB,GAApEC,AAAYC,oBAAsBJ,kBAAlCG;IAER,IAAME,uBAAuBN,eAAeK,sBAAsBE;IAElE,IAAMC,WAAWC,IAAAA,wBAAW,EAAC,CAACH;IAC9B,IAAI,CAACE,YAAYH,sBAAsBE,WAAW;QAChD,OAAOF;IACT;IAEA,OAAOK,cAAa;AACtB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "useAutoFocus", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return useAutoFocus;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
12
|
+
var _react = /*#__PURE__*/ _interop_require_default._(require("react"));
|
|
13
|
+
var _useIsomorphicLayoutEffect = require("../lib/useIsomorphicLayoutEffect");
|
|
14
|
+
function useAutoFocus(ref, autoFocus) {
|
|
15
|
+
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function() {
|
|
16
|
+
if (!autoFocus || !ref.current) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
ref.current.focus();
|
|
20
|
+
}, []);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=useAutoFocus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useAutoFocus.ts"],"sourcesContent":["import React from 'react';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\nexport function useAutoFocus(\n ref: React.RefObject<HTMLElement | null>,\n autoFocus: boolean | undefined,\n) {\n useIsomorphicLayoutEffect(() => {\n if (!autoFocus || !ref.current) {\n return;\n }\n\n ref.current.focus();\n }, []);\n}\n"],"names":["useAutoFocus","ref","autoFocus","useIsomorphicLayoutEffect","current","focus"],"mappings":";;;;+BAGgBA;;;eAAAA;;;;8DAHE;yCACwB;AAEnC,SAASA,aACdC,GAAwC,EACxCC,SAA8B;IAE9BC,IAAAA,oDAAyB,EAAC;QACxB,IAAI,CAACD,aAAa,CAACD,IAAIG,OAAO,EAAE;YAC9B;QACF;QAEAH,IAAIG,OAAO,CAACC,KAAK;IACnB,GAAG,EAAE;AACP"}
|
|
@@ -17,7 +17,7 @@ var _to_consumable_array = require("@swc/helpers/_/_to_consumable_array");
|
|
|
17
17
|
var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
18
18
|
var _useChipsInput = require("./useChipsInput");
|
|
19
19
|
var useChipsSelect = function(props) {
|
|
20
|
-
var options = props.options, filterFn = props.filterFn, getOptionLabel = props.getOptionLabel, getOptionValue = props.getOptionValue;
|
|
20
|
+
var options = props.options, filterFn = props.filterFn, getOptionLabel = props.getOptionLabel, getOptionValue = props.getOptionValue, showSelected = props.showSelected;
|
|
21
21
|
var _React_useState = _sliced_to_array._(_react.useState(false), 2), opened = _React_useState[0], setOpened = _React_useState[1];
|
|
22
22
|
var _React_useState1 = _sliced_to_array._(_react.useState(0), 2), focusedOptionIndex = _React_useState1[0], setFocusedOptionIndex = _React_useState1[1];
|
|
23
23
|
var _React_useState2 = _sliced_to_array._(_react.useState(null), 2), focusedOption = _React_useState2[0], setFocusedOption = _React_useState2[1];
|
|
@@ -45,8 +45,8 @@ var useChipsSelect = function(props) {
|
|
|
45
45
|
fieldValue,
|
|
46
46
|
getOptionLabel
|
|
47
47
|
]);
|
|
48
|
-
filteredOptions = _react.useMemo(function() {
|
|
49
|
-
if (!filteredOptions.length) {
|
|
48
|
+
filteredOptions = _react.useMemo(function filterOutSelectedIfNeeded() {
|
|
49
|
+
if (!filteredOptions.length || showSelected) {
|
|
50
50
|
return filteredOptions;
|
|
51
51
|
}
|
|
52
52
|
var filteredSet = new Set(filteredOptions);
|
|
@@ -79,7 +79,8 @@ var useChipsSelect = function(props) {
|
|
|
79
79
|
}, [
|
|
80
80
|
filteredOptions,
|
|
81
81
|
selectedOptions,
|
|
82
|
-
getOptionValue
|
|
82
|
+
getOptionValue,
|
|
83
|
+
showSelected
|
|
83
84
|
]);
|
|
84
85
|
return _object_spread_props._(_object_spread._({}, chipsInputState), {
|
|
85
86
|
fieldValue: fieldValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useChipsSelect.ts"],"sourcesContent":["import * as React from 'react';\nimport { ChipOption } from '../components/Chip/Chip';\nimport { ChipsSelectProps } from '../components/ChipsSelect/ChipsSelect';\nimport { useChipsInput } from './useChipsInput';\n\nexport const useChipsSelect = <Option extends ChipOption>(\n props: Partial<ChipsSelectProps<Option>>,\n) => {\n const { options, filterFn, getOptionLabel, getOptionValue } = props;\n\n const [opened, setOpened] = React.useState(false);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<number | null>(0);\n const [focusedOption, setFocusedOption] = React.useState<Option | null>(null);\n\n const { fieldValue, selectedOptions, ...chipsInputState } = useChipsInput(props);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement> | undefined) => {\n if (!e) {\n return;\n }\n chipsInputState.handleInputChange(e);\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n }\n };\n\n let filteredOptions = React.useMemo(() => {\n return filterFn\n ? options!.filter((option) => filterFn(fieldValue, option, getOptionLabel))\n : (options as Option[]);\n }, [options, filterFn, fieldValue, getOptionLabel]);\n\n filteredOptions = React.useMemo(()
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useChipsSelect.ts"],"sourcesContent":["import * as React from 'react';\nimport { ChipOption } from '../components/Chip/Chip';\nimport { ChipsSelectProps } from '../components/ChipsSelect/ChipsSelect';\nimport { useChipsInput } from './useChipsInput';\n\nexport const useChipsSelect = <Option extends ChipOption>(\n props: Partial<ChipsSelectProps<Option>>,\n) => {\n const { options, filterFn, getOptionLabel, getOptionValue, showSelected } = props;\n\n const [opened, setOpened] = React.useState(false);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<number | null>(0);\n const [focusedOption, setFocusedOption] = React.useState<Option | null>(null);\n\n const { fieldValue, selectedOptions, ...chipsInputState } = useChipsInput(props);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement> | undefined) => {\n if (!e) {\n return;\n }\n chipsInputState.handleInputChange(e);\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n }\n };\n\n let filteredOptions = React.useMemo(() => {\n return filterFn\n ? options!.filter((option) => filterFn(fieldValue, option, getOptionLabel))\n : (options as Option[]);\n }, [options, filterFn, fieldValue, getOptionLabel]);\n\n filteredOptions = React.useMemo(\n function filterOutSelectedIfNeeded() {\n if (!filteredOptions.length || showSelected) {\n return filteredOptions;\n }\n\n const filteredSet = new Set(filteredOptions);\n const selected = selectedOptions.map((item) => getOptionValue!(item));\n\n for (const item of filteredSet) {\n if (selected.includes(getOptionValue!(item))) {\n filteredSet.delete(item);\n }\n }\n\n return [...filteredSet];\n },\n [filteredOptions, selectedOptions, getOptionValue, showSelected],\n );\n\n return {\n ...chipsInputState,\n fieldValue,\n handleInputChange,\n opened,\n setOpened,\n filteredOptions,\n focusedOptionIndex,\n setFocusedOptionIndex,\n focusedOption,\n setFocusedOption,\n selectedOptions,\n };\n};\n"],"names":["useChipsSelect","props","options","filterFn","getOptionLabel","getOptionValue","showSelected","React","useState","opened","setOpened","focusedOptionIndex","setFocusedOptionIndex","focusedOption","setFocusedOption","useChipsInput","fieldValue","selectedOptions","chipsInputState","handleInputChange","e","filteredOptions","useMemo","filter","option","filterOutSelectedIfNeeded","length","filteredSet","Set","selected","map","item","includes","delete"],"mappings":";;;;+BAKaA;;;eAAAA;;;;;;;;;+DALU;6BAGO;AAEvB,IAAMA,iBAAiB,SAC5BC;IAEA,IAAQC,UAAoED,MAApEC,SAASC,WAA2DF,MAA3DE,UAAUC,iBAAiDH,MAAjDG,gBAAgBC,iBAAiCJ,MAAjCI,gBAAgBC,eAAiBL,MAAjBK;IAE3D,IAA4BC,qCAAAA,OAAMC,QAAQ,CAAC,YAApCC,SAAqBF,oBAAbG,YAAaH;IAC5B,IAAoDA,sCAAAA,OAAMC,QAAQ,CAAgB,QAA3EG,qBAA6CJ,qBAAzBK,wBAAyBL;IACpD,IAA0CA,sCAAAA,OAAMC,QAAQ,CAAgB,WAAjEK,gBAAmCN,qBAApBO,mBAAoBP;IAE1C,IAA4DQ,kBAAAA,IAAAA,4BAAa,EAACd,QAAlEe,aAAoDD,gBAApDC,YAAYC,kBAAwCF,gBAAxCE,iBAAoBC,+CAAoBH;QAApDC;QAAYC;;IAEpB,IAAME,oBAAoB,SAACC;QACzB,IAAI,CAACA,GAAG;YACN;QACF;QACAF,gBAAgBC,iBAAiB,CAACC;QAElC,IAAI,CAACX,QAAQ;YACXC,UAAU;YACVE,sBAAsB;QACxB;IACF;IAEA,IAAIS,kBAAkBd,OAAMe,OAAO,CAAC;QAClC,OAAOnB,WACHD,QAASqB,MAAM,CAAC,SAACC;mBAAWrB,SAASa,YAAYQ,QAAQpB;aACxDF;IACP,GAAG;QAACA;QAASC;QAAUa;QAAYZ;KAAe;IAElDiB,kBAAkBd,OAAMe,OAAO,CAC7B,SAASG;QACP,IAAI,CAACJ,gBAAgBK,MAAM,IAAIpB,cAAc;YAC3C,OAAOe;QACT;QAEA,IAAMM,cAAc,IAAIC,IAAIP;QAC5B,IAAMQ,WAAWZ,gBAAgBa,GAAG,CAAC,SAACC;mBAAS1B,eAAgB0B;;YAE1D,kCAAA,2BAAA;;YAAL,QAAK,YAAcJ,gCAAd,SAAA,6BAAA,QAAA,yBAAA,iCAA2B;gBAA3B,IAAMI,OAAN;gBACH,IAAIF,SAASG,QAAQ,CAAC3B,eAAgB0B,QAAQ;oBAC5CJ,YAAYM,MAAM,CAACF;gBACrB;YACF;;YAJK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;QAML,OAAQ,uBAAGJ;IACb,GACA;QAACN;QAAiBJ;QAAiBZ;QAAgBC;KAAa;IAGlE,OAAO,4CACFY;QACHF,YAAAA;QACAG,mBAAAA;QACAV,QAAAA;QACAC,WAAAA;QACAW,iBAAAA;QACAV,oBAAAA;QACAC,uBAAAA;QACAC,eAAAA;QACAC,kBAAAA;QACAG,iBAAAA;;AAEJ"}
|
|
@@ -12,6 +12,7 @@ var _interop_require_default = require("@swc/helpers/_/_interop_require_default"
|
|
|
12
12
|
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
|
|
13
13
|
var _react = /*#__PURE__*/ _interop_require_default._(require("react"));
|
|
14
14
|
var _dom = require("../lib/dom");
|
|
15
|
+
var _useIsomorphicLayoutEffect = require("../lib/useIsomorphicLayoutEffect");
|
|
15
16
|
var _useGlobalEventListener = require("./useGlobalEventListener");
|
|
16
17
|
function useFocusWithin(ref) {
|
|
17
18
|
var document = (0, _dom.useDOM)().document;
|
|
@@ -26,6 +27,8 @@ function useFocusWithin(ref) {
|
|
|
26
27
|
var focus = isFocusWithin();
|
|
27
28
|
focus !== focusWithin && setFocusWithin(focus);
|
|
28
29
|
};
|
|
30
|
+
// Проверяем autoFocus
|
|
31
|
+
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(listener, []);
|
|
29
32
|
(0, _useGlobalEventListener.useGlobalEventListener)(document, "focus", listener, {
|
|
30
33
|
capture: true
|
|
31
34
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useFocusWithin.ts"],"sourcesContent":["import React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\nexport function useFocusWithin(ref: React.RefObject<HTMLElement | null>): boolean {\n const { document } = useDOM();\n const isFocusWithin = () => {\n if (!ref.current || !document) {\n return false;\n }\n\n return ref.current.contains(document.activeElement);\n };\n\n const [focusWithin, setFocusWithin] = React.useState<boolean>(isFocusWithin);\n\n const listener = () => {\n const focus = isFocusWithin();\n focus !== focusWithin && setFocusWithin(focus);\n };\n\n useGlobalEventListener(document, 'focus', listener, { capture: true });\n useGlobalEventListener(document, 'blur', listener, { capture: true });\n\n return focusWithin;\n}\n"],"names":["useFocusWithin","ref","document","useDOM","isFocusWithin","current","contains","activeElement","React","useState","focusWithin","setFocusWithin","listener","focus","useGlobalEventListener","capture"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useFocusWithin.ts"],"sourcesContent":["import React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\nexport function useFocusWithin(ref: React.RefObject<HTMLElement | null>): boolean {\n const { document } = useDOM();\n const isFocusWithin = () => {\n if (!ref.current || !document) {\n return false;\n }\n\n return ref.current.contains(document.activeElement);\n };\n\n const [focusWithin, setFocusWithin] = React.useState<boolean>(isFocusWithin);\n\n const listener = () => {\n const focus = isFocusWithin();\n focus !== focusWithin && setFocusWithin(focus);\n };\n\n // Проверяем autoFocus\n useIsomorphicLayoutEffect(listener, []);\n\n useGlobalEventListener(document, 'focus', listener, { capture: true });\n useGlobalEventListener(document, 'blur', listener, { capture: true });\n\n return focusWithin;\n}\n"],"names":["useFocusWithin","ref","document","useDOM","isFocusWithin","current","contains","activeElement","React","useState","focusWithin","setFocusWithin","listener","focus","useIsomorphicLayoutEffect","useGlobalEventListener","capture"],"mappings":";;;;+BAKgBA;;;eAAAA;;;;;8DALE;mBACK;yCACmB;sCACH;AAEhC,SAASA,eAAeC,GAAwC;IACrE,IAAM,AAAEC,WAAaC,IAAAA,WAAM,IAAnBD;IACR,IAAME,gBAAgB;QACpB,IAAI,CAACH,IAAII,OAAO,IAAI,CAACH,UAAU;YAC7B,OAAO;QACT;QAEA,OAAOD,IAAII,OAAO,CAACC,QAAQ,CAACJ,SAASK,aAAa;IACpD;IAEA,IAAsCC,qCAAAA,cAAK,CAACC,QAAQ,CAAUL,oBAAvDM,cAA+BF,oBAAlBG,iBAAkBH;IAEtC,IAAMI,WAAW;QACf,IAAMC,QAAQT;QACdS,UAAUH,eAAeC,eAAeE;IAC1C;IAEA,sBAAsB;IACtBC,IAAAA,oDAAyB,EAACF,UAAU,EAAE;IAEtCG,IAAAA,8CAAsB,EAACb,UAAU,SAASU,UAAU;QAAEI,SAAS;IAAK;IACpED,IAAAA,8CAAsB,EAACb,UAAU,QAAQU,UAAU;QAAEI,SAAS;IAAK;IAEnE,OAAON;AACT"}
|
|
@@ -11,10 +11,11 @@ Object.defineProperty(exports, "useIsClient", {
|
|
|
11
11
|
var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
12
12
|
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
|
|
13
13
|
var _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
14
|
+
var _useIsomorphicLayoutEffect = require("../lib/useIsomorphicLayoutEffect");
|
|
14
15
|
function useIsClient() {
|
|
15
16
|
var initial = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
|
|
16
17
|
var _React_useState = _sliced_to_array._(_react.useState(initial), 2), isClient = _React_useState[0], setIsClient = _React_useState[1];
|
|
17
|
-
|
|
18
|
+
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function() {
|
|
18
19
|
setIsClient(true);
|
|
19
20
|
}, []);
|
|
20
21
|
return isClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/useIsClient.ts"],"sourcesContent":["import * as React from 'react';\n\n/**\n * Хук для two-pass рендеринга.\n *\n * ВНИМАНИЕ: Этот подход сделает ваши компоненты медленнее, потому что они\n * должны рендериться дважды, поэтому используйте хук с осторожностью.\n *\n * @see {@link https://beta.reactjs.org/apis/react-dom/hydrate#handling-different-client-and-server-content React Docs}\n */\nexport function useIsClient(initial = false) {\n const [isClient, setIsClient] = React.useState(initial);\n\n
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/useIsClient.ts"],"sourcesContent":["import * as React from 'react';\nimport { useIsomorphicLayoutEffect } from '../lib/useIsomorphicLayoutEffect';\n\n/**\n * Хук для two-pass рендеринга.\n *\n * ВНИМАНИЕ: Этот подход сделает ваши компоненты медленнее, потому что они\n * должны рендериться дважды, поэтому используйте хук с осторожностью.\n *\n * @see {@link https://beta.reactjs.org/apis/react-dom/hydrate#handling-different-client-and-server-content React Docs}\n */\nexport function useIsClient(initial = false) {\n const [isClient, setIsClient] = React.useState(initial);\n\n useIsomorphicLayoutEffect(() => {\n setIsClient(true);\n }, []);\n\n return isClient;\n}\n"],"names":["useIsClient","initial","React","useState","isClient","setIsClient","useIsomorphicLayoutEffect"],"mappings":";;;;+BAWgBA;;;eAAAA;;;;;+DAXO;yCACmB;AAUnC,SAASA;QAAYC,UAAAA,iEAAU;IACpC,IAAgCC,qCAAAA,OAAMC,QAAQ,CAACF,cAAxCG,WAAyBF,oBAAfG,cAAeH;IAEhCI,IAAAA,oDAAyB,EAAC;QACxBD,YAAY;IACd,GAAG,EAAE;IAEL,OAAOD;AACT"}
|
|
@@ -2,7 +2,7 @@ import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
|
2
2
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
3
3
|
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
4
4
|
import * as React from "react";
|
|
5
|
-
import { Icon24Cancel, Icon24Chevron,
|
|
5
|
+
import { Icon24Cancel, Icon24Chevron, Icon24Dismiss, Icon24DismissDark } from "@vkontakte/icons";
|
|
6
6
|
import { classNames, hasReactNode } from "@vkontakte/vkjs";
|
|
7
7
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
8
8
|
import { Platform } from "../../lib/platform";
|
|
@@ -36,7 +36,7 @@ import { Title } from "../Typography/Title/Title";
|
|
|
36
36
|
var platform = usePlatform();
|
|
37
37
|
var HeaderTypography = size === "m" ? Title : Headline;
|
|
38
38
|
var SubheaderTypography = size === "m" ? Text : Subhead;
|
|
39
|
-
var IconDismissIOS = mode === "image" ? Icon24DismissDark :
|
|
39
|
+
var IconDismissIOS = mode === "image" ? Icon24DismissDark : Icon24Dismiss;
|
|
40
40
|
var content = /*#__PURE__*/ React.createElement(React.Fragment, null, mode === "image" && background && /*#__PURE__*/ React.createElement("div", {
|
|
41
41
|
"aria-hidden": true,
|
|
42
42
|
className: "vkuiBanner__bg"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Banner/Banner.tsx"],"sourcesContent":["import * as React from 'react';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Banner/Banner.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon24Cancel, Icon24Chevron, Icon24Dismiss, Icon24DismissDark } from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { HasRootRef } from '../../types';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './Banner.module.css';\n\nexport interface BannerProps extends React.HTMLAttributes<HTMLDivElement>, HasRootRef<HTMLElement> {\n /**\n * Тип баннера.\n */\n mode?: 'tint' | 'image';\n size?: 's' | 'm';\n /**\n * Тип действия в правой части баннера.\n *\n * - `dismiss` – отображается иконка крестика, при клике на неё сработает свойство `onDismiss`.\n * - `expand` – отображается иконка шеврона, которая подразумевает, что при клике на баннер можно куда-то перейти.\n */\n asideMode?: 'dismiss' | 'expand';\n /**\n * Срабатывает при клике на иконку крестика при `asideMode=\"dismiss\"`.\n */\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * `aria-label` для кнопки при `asideMode=\"dismiss\". Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n /**\n * Содержимое, отображаемое в левой части баннера.\n */\n before?: React.ReactNode;\n /**\n * Заголовок.\n */\n header?: React.ReactNode;\n /**\n * Подзаголовок.\n */\n subheader?: React.ReactNode;\n /**\n * Текст баннера.\n */\n text?: React.ReactNode;\n /**\n * При использовании `mode=\"image\"`.\n *\n * - `light` – в качестве фона используется светлое изображение, цвет текста в баннере будет тёмным.\n * - `dark` – в качестве фона используется тёмное изображение, цвет текста будет светлым.\n */\n imageTheme?: 'light' | 'dark';\n /**\n * При использовании `mode=\"image\"`.\n *\n * Элемент, который нужно стилизовать цветом и/или фоном. Этот элемент будет растянут на 100% ширины и высоты баннера.\n */\n background?: React.ReactNode;\n /**\n * Кнопки-действия. Принимает [`Button`](https://vkcom.github.io/VKUI/#/Button).\n *\n * - В режиме `tint` или `image` со светлым фоном используйте только с параметрами:\n * - `mode=\"primary\"`\n * - `mode=\"secondary\"`\n * - В режиме `image` с тёмным фоном используйте с параметрами:\n * - `appearance=\"overlay\"`.\n *\n * Для набора кнопок используйте [`ButtonGroup`](https://vkcom.github.io/VKUI/#/ButtonGroup) с параметрами:\n *\n * - `gap=\"m\" mode=\"horizontal\" stretched`\n * - `gap=\"m\" mode=\"vertical\" stretched`\n */\n actions?: React.ReactNode;\n /**\n * Удаляет отступы у компонента\n */\n noPadding?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Banner\n */\nexport const Banner = ({\n mode = 'tint',\n imageTheme = 'dark',\n size = 's',\n before,\n asideMode,\n header,\n subheader,\n text,\n children,\n background,\n actions,\n onDismiss,\n dismissLabel = 'Скрыть',\n className,\n getRootRef,\n noPadding,\n ...restProps\n}: BannerProps) => {\n const platform = usePlatform();\n\n const HeaderTypography = size === 'm' ? Title : Headline;\n const SubheaderTypography = size === 'm' ? Text : Subhead;\n\n const IconDismissIOS = mode === 'image' ? Icon24DismissDark : Icon24Dismiss;\n\n const content = (\n <>\n {mode === 'image' && background && (\n <div aria-hidden className={styles['Banner__bg']}>\n {background}\n </div>\n )}\n\n {before && <div className={styles['Banner__before']}>{before}</div>}\n\n <div className={styles['Banner__content']}>\n {hasReactNode(header) && (\n <HeaderTypography Component=\"p\" weight=\"2\" level={size === 'm' ? '2' : '1'}>\n {header}\n </HeaderTypography>\n )}\n {hasReactNode(subheader) && (\n <SubheaderTypography Component=\"p\" className={styles['Banner__subheader']}>\n {subheader}\n </SubheaderTypography>\n )}\n {hasReactNode(text) && (\n <Text Component=\"p\" className={styles['Banner__text']}>\n {text}\n </Text>\n )}\n {hasReactNode(actions) && React.Children.count(actions) > 0 && (\n <div className={styles['Banner__actions']}>{actions}</div>\n )}\n </div>\n </>\n );\n\n return (\n <section\n {...restProps}\n className={classNames(\n styles['Banner'],\n !noPadding && styles['Banner--withPadding'],\n platform === Platform.IOS && styles['Banner--ios'],\n mode === 'image' && styles['Banner--mode-image'],\n {\n s: styles['Banner--size-s'],\n m: styles['Banner--size-m'],\n }[size],\n mode === 'image' && imageTheme === 'dark' && styles['Banner--inverted'],\n className,\n )}\n ref={getRootRef}\n >\n {asideMode === 'expand' ? (\n <Tappable\n className={styles['Banner__in']}\n activeMode={platform === Platform.IOS ? 'opacity' : 'background'}\n role=\"button\"\n >\n {content}\n\n <div className={styles['Banner__aside']}>\n <Icon24Chevron className={styles['Banner__expand']} />\n </div>\n </Tappable>\n ) : (\n <div className={styles['Banner__in']}>\n {content}\n\n {asideMode === 'dismiss' && (\n <div className={styles['Banner__aside']}>\n <IconButton\n aria-label={dismissLabel}\n className={styles['Banner__dismiss']}\n onClick={onDismiss}\n hoverMode=\"opacity\"\n hasActive={false}\n >\n {platform === Platform.IOS ? <IconDismissIOS /> : <Icon24Cancel />}\n </IconButton>\n </div>\n )}\n </div>\n )}\n </section>\n );\n};\n"],"names":["React","Icon24Cancel","Icon24Chevron","Icon24Dismiss","Icon24DismissDark","classNames","hasReactNode","usePlatform","Platform","IconButton","Tappable","Headline","Subhead","Text","Title","Banner","mode","imageTheme","size","before","asideMode","header","subheader","text","children","background","actions","onDismiss","dismissLabel","className","getRootRef","noPadding","restProps","platform","HeaderTypography","SubheaderTypography","IconDismissIOS","content","div","aria-hidden","Component","weight","level","Children","count","section","IOS","s","m","ref","activeMode","role","aria-label","onClick","hoverMode","hasActive"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAY,EAAEC,aAAa,EAAEC,aAAa,EAAEC,iBAAiB,QAAQ,mBAAmB;AACjG,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,qBAAqB;AAE9C,SAASC,UAAU,QAAQ,2BAA2B;AACtD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,OAAO,QAAQ,gCAAgC;AACxD,SAASC,IAAI,QAAQ,0BAA0B;AAC/C,SAASC,KAAK,QAAQ,4BAA4B;AA0ElD;;CAEC,GACD,OAAO,IAAMC,SAAS;6BACpBC,MAAAA,gCAAO,iDACPC,YAAAA,4CAAa,iDACbC,MAAAA,gCAAO,mBACPC,gBAAAA,QACAC,mBAAAA,WACAC,gBAAAA,QACAC,mBAAAA,WACAC,cAAAA,MACAC,kBAAAA,UACAC,oBAAAA,YACAC,iBAAAA,SACAC,mBAAAA,wCACAC,cAAAA,gDAAe,gCACfC,mBAAAA,WACAC,oBAAAA,YACAC,mBAAAA,WACGC;QAhBHhB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,WAAW1B;IAEjB,IAAM2B,mBAAmBhB,SAAS,MAAMJ,QAAQH;IAChD,IAAMwB,sBAAsBjB,SAAS,MAAML,OAAOD;IAElD,IAAMwB,iBAAiBpB,SAAS,UAAUZ,oBAAoBD;IAE9D,IAAMkC,wBACJ,0CACGrB,SAAS,WAAWS,4BACnB,oBAACa;QAAIC,eAAAA;QAAYV,SAAS;OACvBJ,aAIJN,wBAAU,oBAACmB;QAAIT,SAAS;OAA6BV,uBAEtD,oBAACmB;QAAIT,SAAS;OACXvB,aAAae,yBACZ,oBAACa;QAAiBM,WAAU;QAAIC,QAAO;QAAIC,OAAOxB,SAAS,MAAM,MAAM;OACpEG,SAGJf,aAAagB,4BACZ,oBAACa;QAAoBK,WAAU;QAAIX,SAAS;OACzCP,YAGJhB,aAAaiB,uBACZ,oBAACV;QAAK2B,WAAU;QAAIX,SAAS;OAC1BN,OAGJjB,aAAaoB,YAAY1B,MAAM2C,QAAQ,CAACC,KAAK,CAAClB,WAAW,mBACxD,oBAACY;QAAIT,SAAS;OAA8BH;IAMpD,qBACE,oBAACmB,mDACKb;QACJH,WAAWxB,yBAET,CAAC0B,wCACDE,aAAazB,SAASsC,GAAG,uBACzB9B,SAAS,qCACT;YACE+B,CAAC;YACDC,CAAC;QACH,CAAC,CAAC9B,KAAK,EACPF,SAAS,WAAWC,eAAe,kCACnCY;QAEFoB,KAAKnB;QAEJV,cAAc,yBACb,oBAACV;QACCmB,SAAS;QACTqB,YAAYjB,aAAazB,SAASsC,GAAG,GAAG,YAAY;QACpDK,MAAK;OAEJd,uBAED,oBAACC;QAAIT,SAAS;qBACZ,oBAAC3B;QAAc2B,SAAS;yBAI5B,oBAACS;QAAIT,SAAS;OACXQ,SAEAjB,cAAc,2BACb,oBAACkB;QAAIT,SAAS;qBACZ,oBAACpB;QACC2C,cAAYxB;QACZC,SAAS;QACTwB,SAAS1B;QACT2B,WAAU;QACVC,WAAW;OAEVtB,aAAazB,SAASsC,GAAG,iBAAG,oBAACV,sCAAoB,oBAACnC;AAQnE,EAAE"}
|
|
@@ -128,7 +128,9 @@ var warn = warnOnce("Checkbox");
|
|
|
128
128
|
className: "vkuiCheckbox__content"
|
|
129
129
|
}, /*#__PURE__*/ React.createElement("div", {
|
|
130
130
|
className: "vkuiCheckbox__title"
|
|
131
|
-
}, /*#__PURE__*/ React.createElement(Text,
|
|
131
|
+
}, /*#__PURE__*/ React.createElement(Text, {
|
|
132
|
+
className: "vkuiCheckbox__titleBefore"
|
|
133
|
+
}, children), /*#__PURE__*/ React.createElement("div", {
|
|
132
134
|
className: "vkuiCheckbox__titleAfter"
|
|
133
135
|
}, titleAfter)), hasReactNode(description) && /*#__PURE__*/ React.createElement(Footnote, {
|
|
134
136
|
className: "vkuiCheckbox__description"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n Icon20CheckBoxIndetermanate,\n Icon20CheckBoxOff,\n Icon20CheckBoxOn,\n Icon24CheckBoxOff,\n Icon24CheckBoxOn,\n} from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasRef, HasRootRef } from '../../types';\nimport { ACTIVE_EFFECT_DELAY, Tappable, type TappableProps } from '../Tappable/Tappable';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Text } from '../Typography/Text/Text';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './Checkbox.module.css';\n\nconst sizeYClassNames = {\n none: styles['Checkbox--sizeY-none'],\n [SizeType.COMPACT]: styles['Checkbox--sizeY-compact'],\n [SizeType.REGULAR]: styles['Checkbox--sizeY-regular'],\n};\n\nexport interface CheckboxProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRootRef<HTMLLabelElement>,\n HasRef<HTMLInputElement>,\n Pick<\n TappableProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'\n > {\n description?: React.ReactNode;\n indeterminate?: boolean;\n defaultIndeterminate?: boolean;\n titleAfter?: React.ReactNode;\n}\n\nconst warn = warnOnce('Checkbox');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Checkbox\n */\nexport const Checkbox = ({\n children,\n className,\n style,\n getRootRef,\n getRef,\n description,\n indeterminate,\n defaultIndeterminate,\n hoverMode,\n activeMode,\n hasHover,\n hasActive,\n focusVisibleMode,\n onChange,\n titleAfter,\n ...restProps\n}: CheckboxProps) => {\n const inputRef = useExternRef(getRef);\n const platform = usePlatform();\n const { sizeY = 'none' } = useAdaptivity();\n const { sizeY: adaptiveSizeY } = useAdaptivityConditionalRender();\n\n React.useEffect(() => {\n const indeterminateValue = indeterminate === undefined ? defaultIndeterminate : indeterminate;\n\n if (inputRef.current) {\n inputRef.current.indeterminate = Boolean(indeterminateValue);\n }\n }, [defaultIndeterminate, indeterminate, inputRef]);\n\n const handleChange: CheckboxProps['onChange'] = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (\n defaultIndeterminate !== undefined &&\n indeterminate === undefined &&\n restProps.checked === undefined &&\n inputRef.current\n ) {\n inputRef.current.indeterminate = false;\n }\n if (indeterminate !== undefined && inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n onChange && onChange(event);\n },\n [defaultIndeterminate, indeterminate, restProps.checked, onChange, inputRef],\n );\n\n if (process.env.NODE_ENV === 'development') {\n if (defaultIndeterminate && restProps.defaultChecked) {\n warn('defaultIndeterminate и defaultChecked не могут быть true одновременно', 'error');\n }\n\n if (indeterminate && restProps.checked) {\n warn('indeterminate и checked не могут быть true одновременно', 'error');\n }\n\n if (restProps.defaultChecked && restProps.checked) {\n warn('defaultChecked и checked не могут быть true одновременно', 'error');\n }\n }\n\n return (\n <Tappable\n Component=\"label\"\n className={classNames(\n styles['Checkbox'],\n platform === Platform.VKCOM && styles['Checkbox--vkcom'],\n sizeYClassNames[sizeY],\n !(hasReactNode(children) || hasReactNode(description)) && styles['Checkbox--simple'],\n className,\n )}\n style={style}\n disabled={restProps.disabled}\n activeEffectDelay={platform === Platform.IOS ? 100 : ACTIVE_EFFECT_DELAY}\n getRootRef={getRootRef}\n hoverMode={hoverMode}\n activeMode={activeMode}\n hasHover={hasHover}\n hasActive={hasActive}\n focusVisibleMode={focusVisibleMode}\n >\n <VisuallyHidden\n {...restProps}\n Component=\"input\"\n type=\"checkbox\"\n onChange={handleChange}\n className={styles['Checkbox__input']}\n getRootRef={inputRef}\n />\n <div className={classNames(styles['Checkbox__icon'], styles['Checkbox__icon--on'])}>\n {platform === Platform.VKCOM ? (\n <Icon20CheckBoxOn />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <Icon20CheckBoxOn className={adaptiveSizeY.compact.className} />\n )}\n {adaptiveSizeY.regular && (\n <Icon24CheckBoxOn className={adaptiveSizeY.regular.className} />\n )}\n </React.Fragment>\n )}\n </div>\n <div className={classNames(styles['Checkbox__icon'], styles['Checkbox__icon--off'])}>\n {platform === Platform.VKCOM ? (\n <Icon20CheckBoxOff />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <Icon20CheckBoxOff className={adaptiveSizeY.compact.className} />\n )}\n {adaptiveSizeY.regular && (\n <Icon24CheckBoxOff className={adaptiveSizeY.regular.className} />\n )}\n </React.Fragment>\n )}\n </div>\n <div\n className={classNames(styles['Checkbox__icon'], styles['Checkbox__icon--indeterminate'])}\n >\n {platform === Platform.VKCOM ? (\n <Icon20CheckBoxIndetermanate width={20} height={20} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <Icon20CheckBoxIndetermanate\n className={adaptiveSizeY.compact.className}\n width={20}\n height={20}\n />\n )}\n {adaptiveSizeY.regular && (\n <Icon20CheckBoxIndetermanate\n className={adaptiveSizeY.regular.className}\n width={24}\n height={24}\n />\n )}\n </React.Fragment>\n )}\n </div>\n <div className={styles['Checkbox__content']}>\n <div className={styles['Checkbox__title']}>\n <Text>{children}</Text>\n <div className={styles['Checkbox__titleAfter']}>{titleAfter}</div>\n </div>\n {hasReactNode(description) && (\n <Footnote className={styles['Checkbox__description']}>{description}</Footnote>\n )}\n </div>\n </Tappable>\n );\n};\n"],"names":["React","Icon20CheckBoxIndetermanate","Icon20CheckBoxOff","Icon20CheckBoxOn","Icon24CheckBoxOff","Icon24CheckBoxOn","classNames","hasReactNode","useAdaptivity","useAdaptivityConditionalRender","useExternRef","usePlatform","SizeType","Platform","warnOnce","ACTIVE_EFFECT_DELAY","Tappable","Footnote","Text","VisuallyHidden","sizeYClassNames","none","COMPACT","REGULAR","warn","Checkbox","children","className","style","getRootRef","getRef","description","indeterminate","defaultIndeterminate","hoverMode","activeMode","hasHover","hasActive","focusVisibleMode","onChange","titleAfter","restProps","inputRef","platform","sizeY","adaptiveSizeY","useEffect","indeterminateValue","undefined","current","Boolean","handleChange","useCallback","event","checked","process","env","NODE_ENV","defaultChecked","Component","VKCOM","disabled","activeEffectDelay","IOS","type","div","Fragment","compact","regular","width","height"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n Icon20CheckBoxIndetermanate,\n Icon20CheckBoxOff,\n Icon20CheckBoxOn,\n Icon24CheckBoxOff,\n Icon24CheckBoxOn,\n} from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasRef, HasRootRef } from '../../types';\nimport { ACTIVE_EFFECT_DELAY, Tappable, type TappableProps } from '../Tappable/Tappable';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Text } from '../Typography/Text/Text';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './Checkbox.module.css';\n\nconst sizeYClassNames = {\n none: styles['Checkbox--sizeY-none'],\n [SizeType.COMPACT]: styles['Checkbox--sizeY-compact'],\n [SizeType.REGULAR]: styles['Checkbox--sizeY-regular'],\n};\n\nexport interface CheckboxProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRootRef<HTMLLabelElement>,\n HasRef<HTMLInputElement>,\n Pick<\n TappableProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'\n > {\n description?: React.ReactNode;\n indeterminate?: boolean;\n defaultIndeterminate?: boolean;\n titleAfter?: React.ReactNode;\n}\n\nconst warn = warnOnce('Checkbox');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Checkbox\n */\nexport const Checkbox = ({\n children,\n className,\n style,\n getRootRef,\n getRef,\n description,\n indeterminate,\n defaultIndeterminate,\n hoverMode,\n activeMode,\n hasHover,\n hasActive,\n focusVisibleMode,\n onChange,\n titleAfter,\n ...restProps\n}: CheckboxProps) => {\n const inputRef = useExternRef(getRef);\n const platform = usePlatform();\n const { sizeY = 'none' } = useAdaptivity();\n const { sizeY: adaptiveSizeY } = useAdaptivityConditionalRender();\n\n React.useEffect(() => {\n const indeterminateValue = indeterminate === undefined ? defaultIndeterminate : indeterminate;\n\n if (inputRef.current) {\n inputRef.current.indeterminate = Boolean(indeterminateValue);\n }\n }, [defaultIndeterminate, indeterminate, inputRef]);\n\n const handleChange: CheckboxProps['onChange'] = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n if (\n defaultIndeterminate !== undefined &&\n indeterminate === undefined &&\n restProps.checked === undefined &&\n inputRef.current\n ) {\n inputRef.current.indeterminate = false;\n }\n if (indeterminate !== undefined && inputRef.current) {\n inputRef.current.indeterminate = indeterminate;\n }\n onChange && onChange(event);\n },\n [defaultIndeterminate, indeterminate, restProps.checked, onChange, inputRef],\n );\n\n if (process.env.NODE_ENV === 'development') {\n if (defaultIndeterminate && restProps.defaultChecked) {\n warn('defaultIndeterminate и defaultChecked не могут быть true одновременно', 'error');\n }\n\n if (indeterminate && restProps.checked) {\n warn('indeterminate и checked не могут быть true одновременно', 'error');\n }\n\n if (restProps.defaultChecked && restProps.checked) {\n warn('defaultChecked и checked не могут быть true одновременно', 'error');\n }\n }\n\n return (\n <Tappable\n Component=\"label\"\n className={classNames(\n styles['Checkbox'],\n platform === Platform.VKCOM && styles['Checkbox--vkcom'],\n sizeYClassNames[sizeY],\n !(hasReactNode(children) || hasReactNode(description)) && styles['Checkbox--simple'],\n className,\n )}\n style={style}\n disabled={restProps.disabled}\n activeEffectDelay={platform === Platform.IOS ? 100 : ACTIVE_EFFECT_DELAY}\n getRootRef={getRootRef}\n hoverMode={hoverMode}\n activeMode={activeMode}\n hasHover={hasHover}\n hasActive={hasActive}\n focusVisibleMode={focusVisibleMode}\n >\n <VisuallyHidden\n {...restProps}\n Component=\"input\"\n type=\"checkbox\"\n onChange={handleChange}\n className={styles['Checkbox__input']}\n getRootRef={inputRef}\n />\n <div className={classNames(styles['Checkbox__icon'], styles['Checkbox__icon--on'])}>\n {platform === Platform.VKCOM ? (\n <Icon20CheckBoxOn />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <Icon20CheckBoxOn className={adaptiveSizeY.compact.className} />\n )}\n {adaptiveSizeY.regular && (\n <Icon24CheckBoxOn className={adaptiveSizeY.regular.className} />\n )}\n </React.Fragment>\n )}\n </div>\n <div className={classNames(styles['Checkbox__icon'], styles['Checkbox__icon--off'])}>\n {platform === Platform.VKCOM ? (\n <Icon20CheckBoxOff />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <Icon20CheckBoxOff className={adaptiveSizeY.compact.className} />\n )}\n {adaptiveSizeY.regular && (\n <Icon24CheckBoxOff className={adaptiveSizeY.regular.className} />\n )}\n </React.Fragment>\n )}\n </div>\n <div\n className={classNames(styles['Checkbox__icon'], styles['Checkbox__icon--indeterminate'])}\n >\n {platform === Platform.VKCOM ? (\n <Icon20CheckBoxIndetermanate width={20} height={20} />\n ) : (\n <React.Fragment>\n {adaptiveSizeY.compact && (\n <Icon20CheckBoxIndetermanate\n className={adaptiveSizeY.compact.className}\n width={20}\n height={20}\n />\n )}\n {adaptiveSizeY.regular && (\n <Icon20CheckBoxIndetermanate\n className={adaptiveSizeY.regular.className}\n width={24}\n height={24}\n />\n )}\n </React.Fragment>\n )}\n </div>\n <div className={styles['Checkbox__content']}>\n <div className={styles['Checkbox__title']}>\n <Text className={styles['Checkbox__titleBefore']}>{children}</Text>\n <div className={styles['Checkbox__titleAfter']}>{titleAfter}</div>\n </div>\n {hasReactNode(description) && (\n <Footnote className={styles['Checkbox__description']}>{description}</Footnote>\n )}\n </div>\n </Tappable>\n );\n};\n"],"names":["React","Icon20CheckBoxIndetermanate","Icon20CheckBoxOff","Icon20CheckBoxOn","Icon24CheckBoxOff","Icon24CheckBoxOn","classNames","hasReactNode","useAdaptivity","useAdaptivityConditionalRender","useExternRef","usePlatform","SizeType","Platform","warnOnce","ACTIVE_EFFECT_DELAY","Tappable","Footnote","Text","VisuallyHidden","sizeYClassNames","none","COMPACT","REGULAR","warn","Checkbox","children","className","style","getRootRef","getRef","description","indeterminate","defaultIndeterminate","hoverMode","activeMode","hasHover","hasActive","focusVisibleMode","onChange","titleAfter","restProps","inputRef","platform","sizeY","adaptiveSizeY","useEffect","indeterminateValue","undefined","current","Boolean","handleChange","useCallback","event","checked","process","env","NODE_ENV","defaultChecked","Component","VKCOM","disabled","activeEffectDelay","IOS","type","div","Fragment","compact","regular","width","height"],"mappings":"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"}
|
|
@@ -89,8 +89,10 @@ var chipsSelectDefaultProps = _object_spread_props(_object_spread({}, chipsInput
|
|
|
89
89
|
}
|
|
90
90
|
};
|
|
91
91
|
var handleClickOutside = function(e) {
|
|
92
|
-
var _rootRef_current;
|
|
93
|
-
|
|
92
|
+
var _rootRef_current, _scrollBoxRef_current;
|
|
93
|
+
var isClickOutsideFormField = !((_rootRef_current = rootRef.current) === null || _rootRef_current === void 0 ? void 0 : _rootRef_current.contains(e.target));
|
|
94
|
+
var isClickOutsideDropdown = !((_scrollBoxRef_current = scrollBoxRef.current) === null || _scrollBoxRef_current === void 0 ? void 0 : _scrollBoxRef_current.contains(e.target));
|
|
95
|
+
if (isClickOutsideFormField && isClickOutsideDropdown) {
|
|
94
96
|
setOpened(false);
|
|
95
97
|
}
|
|
96
98
|
};
|