@vkontakte/vkui 5.2.2 → 5.2.4
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/AdaptivityProvider/AdaptivityProvider.js +3 -16
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +1 -2
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js +1 -2
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cjs/components/File/File.js +1 -4
- package/dist/cjs/components/File/File.js.map +1 -1
- package/dist/cjs/components/Input/Input.js +3 -7
- package/dist/cjs/components/Input/Input.js.map +1 -1
- package/dist/cjs/components/ModalCard/ModalCard.js +6 -2
- package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js +6 -2
- package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +1 -2
- package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.js +1 -4
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/PanelHeader/PanelHeader.js +6 -11
- package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +6 -11
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +6 -2
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cjs/components/PopperArrow/PopperArrow.js +22 -7
- package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +1 -4
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SelectTypography/SelectTypography.js +1 -1
- package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.js +6 -2
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/SplitCol/SplitCol.d.ts +2 -0
- package/dist/cjs/components/SplitCol/SplitCol.js +6 -0
- package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cjs/components/Switch/Switch.js +2 -2
- package/dist/cjs/components/Switch/Switch.js.map +1 -1
- package/dist/cjs/components/Touch/Touch.js +10 -2
- package/dist/cjs/components/Touch/Touch.js.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +1 -2
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/helpers/getPlatformClassName.d.ts +11 -0
- package/dist/cjs/helpers/getPlatformClassName.js +2 -0
- package/dist/cjs/helpers/getPlatformClassName.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js +3 -15
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js +1 -2
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/components/Cell/CellDragger/CellDragger.js +1 -2
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/components/File/File.js +1 -4
- package/dist/components/File/File.js.map +1 -1
- package/dist/components/Input/Input.js +3 -7
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/ModalCard/ModalCard.js +6 -2
- package/dist/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/components/ModalCardBase/ModalCardBase.js +6 -2
- package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/components/ModalPageHeader/ModalPageHeader.js +1 -2
- package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js +1 -4
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js +6 -11
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js +6 -11
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js +6 -2
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/components/PopperArrow/PopperArrow.js +22 -7
- package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +1 -4
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SelectTypography/SelectTypography.js +1 -1
- package/dist/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js +6 -2
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/SplitCol/SplitCol.d.ts +2 -0
- package/dist/components/SplitCol/SplitCol.js +6 -0
- package/dist/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/components/Switch/Switch.js +2 -2
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Touch/Touch.js +10 -2
- package/dist/components/Touch/Touch.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.js +1 -1
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +1 -2
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +3 -3
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +1128 -1127
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +3 -15
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +1 -2
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js +1 -2
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -1
- package/dist/cssm/components/File/File.js +1 -4
- package/dist/cssm/components/File/File.js.map +1 -1
- package/dist/cssm/components/Input/Input.js +3 -7
- package/dist/cssm/components/Input/Input.js.map +1 -1
- package/dist/cssm/components/Input/Input.module.css +1 -1
- package/dist/cssm/components/ModalCard/ModalCard.js +6 -2
- package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js +6 -2
- package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +1 -2
- package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -4
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js +6 -11
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +6 -11
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +6 -2
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PopperArrow/PopperArrow.js +22 -7
- package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
- package/dist/cssm/components/PopperArrow/PopperArrow.module.css +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -4
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SelectTypography/SelectTypography.js +1 -1
- package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js +6 -2
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SplitCol/SplitCol.d.ts +2 -0
- package/dist/cssm/components/SplitCol/SplitCol.js +6 -0
- package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cssm/components/Switch/Switch.js +2 -2
- package/dist/cssm/components/Switch/Switch.js.map +1 -1
- package/dist/cssm/components/Touch/Touch.js +10 -2
- package/dist/cssm/components/Touch/Touch.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +1 -2
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.module.css +1 -1
- package/dist/cssm/helpers/getPlatformClassName.d.ts +11 -0
- package/dist/cssm/helpers/getPlatformClassName.js +9 -0
- package/dist/cssm/helpers/getPlatformClassName.js.map +1 -1
- package/dist/helpers/getPlatformClassName.d.ts +11 -0
- package/dist/helpers/getPlatformClassName.js +9 -0
- package/dist/helpers/getPlatformClassName.js.map +1 -1
- package/dist/vkui.css +3 -3
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +1128 -1127
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Touch.js","names":["React","useEventListener","useExternRef","useDOM","coordX","coordY","getSupportedEvents","touchEnabled","useIsomorphicLayoutEffect","Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","usePointerHover","slideThreshold","useCapture","Component","getRootRef","noSlideClick","stopPropagation","restProps","document","events","useMemo","didSlide","useRef","gesture","handle","e","handlers","forEach","cb","duration","Date","now","current","startT","getTime","originalEvent","enterHandler","leaveHandler","startHandler","initGesture","subscribe","target","capture","passive","containerRef","el","add","isPressed","isX","isY","startX","startY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","Boolean","unsubscribe","listenerParams","listeners","l","remove","onDragStart","tagName","preventDefault","postGestureClick"],"sources":["../../../../src/components/Touch/Touch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { coordX, coordY, getSupportedEvents, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\n\nexport interface TouchProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent {\n /**\n * Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах\n */\n usePointerHover?: boolean;\n useCapture?: boolean;\n slideThreshold?: number;\n noSlideClick?: boolean;\n onEnter?: HoverHandler;\n onLeave?: HoverHandler;\n onStart?: TouchEventHandler;\n onStartX?: TouchEventHandler;\n onStartY?: TouchEventHandler;\n onMove?: TouchEventHandler;\n onMoveX?: TouchEventHandler;\n onMoveY?: TouchEventHandler;\n onEnd?: TouchEventHandler;\n onEndX?: TouchEventHandler;\n onEndY?: TouchEventHandler;\n stopPropagation?: boolean;\n}\n\nexport interface Gesture {\n startX: number;\n startY: number;\n startT: Date;\n duration: number;\n isPressed: boolean;\n isY: boolean;\n isX: boolean;\n isSlideX: boolean;\n isSlideY: boolean;\n isSlide: boolean;\n shiftX: number;\n shiftY: number;\n shiftXAbs: number;\n shiftYAbs: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\ntype HoverHandler = (outputEvent: MouseEvent) => void;\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Touch\n */\nexport const Touch = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n usePointerHover,\n slideThreshold = 5,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n stopPropagation = false,\n ...restProps\n}: TouchProps) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture> | null>(null);\n const handle = (e: VKUITouchEvent, handlers: Array<TouchEventHandler | undefined | false>) => {\n stopPropagation && e.stopPropagation();\n handlers.forEach((cb) => {\n const duration = Date.now() - (gesture.current?.startT?.getTime() ?? 0);\n cb && cb({ ...(gesture.current as Gesture), duration, originalEvent: e });\n });\n };\n\n const enterHandler = useEventListener(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);\n const leaveHandler = useEventListener(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);\n const startHandler = useEventListener(\n events[0],\n (e: VKUITouchEvent) => {\n gesture.current = initGesture(coordX(e), coordY(e));\n\n handle(e, [onStart, onStartX, onStartY]);\n // 1 line, 2 bad specs, 2 workarounds:\n subscribe(\n touchEnabled()\n ? // Touch events fire on initial target, and won't bubble if its removed\n // see: #235, #1968, https://stackoverflow.com/a/45760014\n (e.target as HTMLElement)\n : // Mouse events fire on the element under pointer, so we lose move / end\n // if pointer goes outside container.\n // Can be fixed by PointerEvents' setPointerCapture later\n document,\n );\n },\n { capture: useCapture, passive: false },\n );\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n if (el) {\n enterHandler.add(el);\n leaveHandler.add(el);\n startHandler.add(el);\n }\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX = 0, startY = 0 } = gesture.current ?? {};\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= slideThreshold && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= slideThreshold && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n if (gesture.current) {\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n }\n\n if (gesture.current?.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [\n _onMove,\n gesture.current.isSlideX && onMoveX,\n gesture.current.isSlideY && onMoveY,\n ]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current ?? {};\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n didSlide.current = Boolean(isSlide);\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (touchEnabled()) {\n onLeave && onLeave(e);\n }\n unsubscribe();\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n\n if (noSlideClick) {\n e.stopPropagation();\n\n // https://github.com/VKCOM/VKUI/issues/1977\n // https://github.com/VKCOM/VKUI/issues/3892\n e.preventDefault();\n } else {\n onClickCapture && onClickCapture(e);\n }\n\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n\nfunction initGesture(startX: number, startY: number): Gesture {\n return {\n startX,\n startY,\n startT: new Date(),\n duration: 0,\n isPressed: true,\n isY: false,\n isX: false,\n isSlideX: false,\n isSlideY: false,\n isSlide: false,\n shiftX: 0,\n shiftY: 0,\n shiftXAbs: 0,\n shiftYAbs: 0,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Touch.js","names":["React","useEventListener","useExternRef","useDOM","coordX","coordY","getSupportedEvents","touchEnabled","useIsomorphicLayoutEffect","Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","usePointerHover","slideThreshold","useCapture","Component","getRootRef","noSlideClick","stopPropagation","restProps","document","events","useMemo","didSlide","useRef","gesture","handle","e","handlers","forEach","cb","duration","Date","now","current","startT","getTime","originalEvent","enterHandler","leaveHandler","startHandler","initGesture","subscribe","target","capture","passive","containerRef","el","add","isPressed","isX","isY","startX","startY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","isTouchEnabled","Boolean","unsubscribe","listenerParams","listeners","l","remove","onDragStart","tagName","preventDefault","postGestureClick"],"sources":["../../../../src/components/Touch/Touch.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { coordX, coordY, getSupportedEvents, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\n\nexport interface TouchProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent {\n /**\n * Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах\n */\n usePointerHover?: boolean;\n useCapture?: boolean;\n slideThreshold?: number;\n noSlideClick?: boolean;\n onEnter?: HoverHandler;\n onLeave?: HoverHandler;\n onStart?: TouchEventHandler;\n onStartX?: TouchEventHandler;\n onStartY?: TouchEventHandler;\n onMove?: TouchEventHandler;\n onMoveX?: TouchEventHandler;\n onMoveY?: TouchEventHandler;\n onEnd?: TouchEventHandler;\n onEndX?: TouchEventHandler;\n onEndY?: TouchEventHandler;\n stopPropagation?: boolean;\n}\n\nexport interface Gesture {\n startX: number;\n startY: number;\n startT: Date;\n duration: number;\n isPressed: boolean;\n isY: boolean;\n isX: boolean;\n isSlideX: boolean;\n isSlideY: boolean;\n isSlide: boolean;\n shiftX: number;\n shiftY: number;\n shiftXAbs: number;\n shiftYAbs: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\ntype HoverHandler = (outputEvent: MouseEvent) => void;\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Touch\n */\nexport const Touch = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n usePointerHover,\n slideThreshold = 5,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n stopPropagation = false,\n ...restProps\n}: TouchProps) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture> | null>(null);\n const handle = (e: VKUITouchEvent, handlers: Array<TouchEventHandler | undefined | false>) => {\n stopPropagation && e.stopPropagation();\n handlers.forEach((cb) => {\n const duration = Date.now() - (gesture.current?.startT?.getTime() ?? 0);\n cb && cb({ ...(gesture.current as Gesture), duration, originalEvent: e });\n });\n };\n\n const enterHandler = useEventListener(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);\n const leaveHandler = useEventListener(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);\n const startHandler = useEventListener(\n events[0],\n (e: VKUITouchEvent) => {\n gesture.current = initGesture(coordX(e), coordY(e));\n\n handle(e, [onStart, onStartX, onStartY]);\n // 1 line, 2 bad specs, 2 workarounds:\n subscribe(\n touchEnabled()\n ? // Touch events fire on initial target, and won't bubble if its removed\n // see: #235, #1968, https://stackoverflow.com/a/45760014\n (e.target as HTMLElement)\n : // Mouse events fire on the element under pointer, so we lose move / end\n // if pointer goes outside container.\n // Can be fixed by PointerEvents' setPointerCapture later\n document,\n );\n },\n { capture: useCapture, passive: false },\n );\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n if (el) {\n enterHandler.add(el);\n leaveHandler.add(el);\n startHandler.add(el);\n }\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX = 0, startY = 0 } = gesture.current ?? {};\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= slideThreshold && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= slideThreshold && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n if (gesture.current) {\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n }\n\n if (gesture.current?.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [\n _onMove,\n gesture.current.isSlideX && onMoveX,\n gesture.current.isSlideY && onMoveY,\n ]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current ?? {};\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n const isTouchEnabled = touchEnabled();\n\n if (isTouchEnabled && isSlide) {\n // https://github.com/VKCOM/VKUI/issues/4414\n // если тач-устройство и был зафиксирован touchmove,\n // то событие клика не вызывается\n didSlide.current = false;\n } else {\n didSlide.current = Boolean(isSlide);\n }\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (isTouchEnabled) {\n onLeave && onLeave(e);\n }\n unsubscribe();\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n\n if (noSlideClick) {\n e.stopPropagation();\n\n // https://github.com/VKCOM/VKUI/issues/1977\n // https://github.com/VKCOM/VKUI/issues/3892\n e.preventDefault();\n } else {\n onClickCapture && onClickCapture(e);\n }\n\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n\nfunction initGesture(startX: number, startY: number): Gesture {\n return {\n startX,\n startY,\n startT: new Date(),\n duration: 0,\n isPressed: true,\n isY: false,\n isX: false,\n isSlideX: false,\n isSlideY: false,\n isSlide: false,\n shiftX: 0,\n shiftY: 0,\n shiftXAbs: 0,\n shiftYAbs: 0,\n };\n}\n"],"mappings":"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"}
|
|
@@ -72,7 +72,7 @@ export var UsersStack = function UsersStack(_ref2) {
|
|
|
72
72
|
className = _ref2.className,
|
|
73
73
|
restProps = _objectWithoutProperties(_ref2, _excluded2);
|
|
74
74
|
var cmpId = useId();
|
|
75
|
-
var canShowOthers = count > 0 && size !== 's';
|
|
75
|
+
var canShowOthers = count > 0 && count < 100 && size !== 's';
|
|
76
76
|
var CounterTypography = size === 'l' ? Footnote : Caption;
|
|
77
77
|
var photoSize = photoSizes[size];
|
|
78
78
|
var directionClip = canShowOthers ? 'right' : 'left';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UsersStack.js","names":["React","classNames","hasReactNode","useId","Caption","Footnote","PathElement","photoSize","direction","props","radius","photoSizes","s","m","l","UsersStack","photos","visibleCount","count","Math","max","length","size","layout","children","className","restProps","cmpId","canShowOthers","CounterTypography","directionClip","photosElements","slice","map","photo","i","id","hrefID","maskID","othersElement","styles"],"sources":["../../../../src/components/UsersStack/UsersStack.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useId } from '../../hooks/useId';\nimport { Caption } from '../Typography/Caption/Caption';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport styles from './UsersStack.module.css';\n\nexport interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Массив ссылок на фотографии\n */\n photos?: string[];\n /**\n * Размер аватарок\n */\n size?: 's' | 'm' | 'l';\n /**\n * Вертикальный режим рекомендуется использовать с размером `m`\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Количество аватарок, которые будут показаны.\n * Если в массиве `photos` больше элементов и используется размер `m`, то будет показано количество остальных элементов\n */\n visibleCount?: number;\n /**\n * Число, которое будет указано в счетчике.\n * По умолчанию высчитывается по формуле `photos.length - visibleCount`.\n * Если число больше 99, то счетчик скроется.\n */\n count?: number;\n}\n\ninterface PathElementProps extends React.SVGAttributes<SVGElement> {\n photoSize: number;\n direction: 'circle' | 'right' | 'left';\n}\n\ntype PhotoSizeType = 16 | 24 | 32;\n\nfunction PathElement({ photoSize, direction, ...props }: PathElementProps) {\n switch (direction) {\n case 'circle':\n const radius = photoSize / 2;\n\n return <circle cx={radius} cy={radius} r={radius} {...props} />;\n\n case 'right':\n switch (photoSize) {\n case 24:\n return (\n <path\n d=\"M22,18.625A12 12 0 0 1 12 24A12 12 0 0 1 12 0A12 12 0 0 1 22 5.375A12 12 0 0 0 22,18.625\"\n {...props}\n />\n );\n\n default:\n return (\n <path\n d=\"M30,23.75A16 16 0 0 1 16 32A16 16 0 0 1 16 0A16 16 0 0 1 30 8.25A16 16 0 0 0 30,23.75\"\n {...props}\n />\n );\n }\n\n default:\n switch (photoSize) {\n case 16:\n return (\n <path\n d=\"M2,13.285A8 8 0 0 0 8 16A8 8 0 0 0 8 0A8 8 0 0 0 2 2.715A8 8 0 0 1 2,13.285\"\n {...props}\n />\n );\n case 24:\n return (\n <path\n d=\"M2,18.625A12 12 0 0 0 12 24A12 12 0 0 0 12 0A12 12 0 0 0 2 5.375A12 12 0 0 1 2,18.625\"\n {...props}\n />\n );\n\n default:\n return (\n <path\n d=\"M2,23.75A16 16 0 0 0 16 32A16 16 0 0 0 16 0A16 16 0 0 0 2 8.25A16 16 0 0 1 2,23.75\"\n {...props}\n />\n );\n }\n }\n}\n\nconst photoSizes: Record<NonNullable<UsersStackProps['size']>, PhotoSizeType> = {\n s: 16,\n m: 24,\n l: 32,\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/UsersStack\n */\nexport const UsersStack = ({\n photos = [],\n visibleCount = 3,\n count = Math.max(0, photos.length - visibleCount),\n size = 'm',\n layout = 'horizontal',\n children,\n className,\n ...restProps\n}: UsersStackProps) => {\n const cmpId = useId();\n\n const canShowOthers = count > 0 && size !== 's';\n const CounterTypography = size === 'l' ? Footnote : Caption;\n\n const photoSize = photoSizes[size];\n const directionClip = canShowOthers ? 'right' : 'left';\n\n const photosElements = photos.slice(0, visibleCount).map((photo, i) => {\n const direction = i === 0 && !canShowOthers ? 'circle' : directionClip;\n\n const id = `UsersStackDefs${cmpId}${i}`;\n const hrefID = `#${id}`;\n const maskID = `UsersStackMask${cmpId}${i}`;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={styles['UsersStack__photo']}\n key={i}\n aria-hidden\n >\n <defs>\n <PathElement id={id} direction={direction} photoSize={photoSize} />\n </defs>\n <clipPath id={maskID}>\n <use href={hrefID} />\n </clipPath>\n <g clipPath={`url(#${maskID})`}>\n <use href={hrefID} className={styles['UsersStack__fill']} />\n <image href={photo} width={photoSize} height={photoSize} />\n <use href={hrefID} fill=\"none\" stroke=\"rgba(0, 0, 0, 0.08)\" />\n </g>\n </svg>\n );\n });\n const othersElement = canShowOthers ? (\n <CounterTypography\n caps\n weight=\"1\"\n className={classNames(styles['UsersStack__photo'], styles['UsersStack__photo--others'])}\n >\n +{count}\n </CounterTypography>\n ) : null;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['UsersStack'],\n styles[`UsersStack--size-${size}`],\n styles[`UsersStack--layout-${layout}`],\n canShowOthers && styles['UsersStack--others'],\n className,\n )}\n >\n {(photosElements.length > 0 || othersElement) && (\n <div className={styles['UsersStack__photos']} role=\"presentation\">\n {photosElements}\n {othersElement}\n </div>\n )}\n {hasReactNode(children) && (\n <Footnote className={styles['UsersStack__text']}>{children}</Footnote>\n )}\n </div>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,EAAEC,YAAY,QAAQ,iBAAiB;AAC1D,SAASC,KAAK,QAAQ,mBAAmB;AACzC,SAASC,OAAO,QAAQ,+BAA+B;AACvD,SAASC,QAAQ,QAAQ,iCAAiC;AAAC;AAoC3D,SAASC,WAAW,OAAuD;EAAA,IAApDC,SAAS,QAATA,SAAS;IAAEC,SAAS,QAATA,SAAS;IAAKC,KAAK;EACnD,QAAQD,SAAS;IACf,KAAK,QAAQ;MACX,IAAME,MAAM,GAAGH,SAAS,GAAG,CAAC;MAE5B,oBAAO;QAAQ,EAAE,EAAEG,MAAO;QAAC,EAAE,EAAEA,MAAO;QAAC,CAAC,EAAEA;MAAO,GAAKD,KAAK,EAAI;IAEjE,KAAK,OAAO;MACV,QAAQF,SAAS;QACf,KAAK,EAAE;UACL,oBACE;YACE,CAAC,EAAC;UAA0F,GACxFE,KAAK,EACT;QAGN;UACE,oBACE;YACE,CAAC,EAAC;UAAuF,GACrFA,KAAK,EACT;MACF;IAGR;MACE,QAAQF,SAAS;QACf,KAAK,EAAE;UACL,oBACE;YACE,CAAC,EAAC;UAA6E,GAC3EE,KAAK,EACT;QAEN,KAAK,EAAE;UACL,oBACE;YACE,CAAC,EAAC;UAAuF,GACrFA,KAAK,EACT;QAGN;UACE,oBACE;YACE,CAAC,EAAC;UAAoF,GAClFA,KAAK,EACT;MACF;EACL;AAEP;AAEA,IAAME,UAAuE,GAAG;EAC9EC,CAAC,EAAE,EAAE;EACLC,CAAC,EAAE,EAAE;EACLC,CAAC,EAAE;AACL,CAAC;;AAED;AACA;AACA;AACA,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAU,QASA;EAAA,yBARrBC,MAAM;IAANA,MAAM,6BAAG,EAAE;IAAA,2BACXC,YAAY;IAAZA,YAAY,mCAAG,CAAC;IAAA,oBAChBC,KAAK;IAALA,KAAK,4BAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,MAAM,CAACK,MAAM,GAAGJ,YAAY,CAAC;IAAA,mBACjDK,IAAI;IAAJA,IAAI,2BAAG,GAAG;IAAA,qBACVC,MAAM;IAANA,MAAM,6BAAG,YAAY;IACrBC,QAAQ,SAARA,QAAQ;IACRC,SAAS,SAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,KAAK,GAAGxB,KAAK,EAAE;EAErB,IAAMyB,aAAa,GAAGV,KAAK,GAAG,CAAC,IAAII,IAAI,KAAK,GAAG;
|
|
1
|
+
{"version":3,"file":"UsersStack.js","names":["React","classNames","hasReactNode","useId","Caption","Footnote","PathElement","photoSize","direction","props","radius","photoSizes","s","m","l","UsersStack","photos","visibleCount","count","Math","max","length","size","layout","children","className","restProps","cmpId","canShowOthers","CounterTypography","directionClip","photosElements","slice","map","photo","i","id","hrefID","maskID","othersElement","styles"],"sources":["../../../../src/components/UsersStack/UsersStack.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useId } from '../../hooks/useId';\nimport { Caption } from '../Typography/Caption/Caption';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport styles from './UsersStack.module.css';\n\nexport interface UsersStackProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Массив ссылок на фотографии\n */\n photos?: string[];\n /**\n * Размер аватарок\n */\n size?: 's' | 'm' | 'l';\n /**\n * Вертикальный режим рекомендуется использовать с размером `m`\n */\n layout?: 'vertical' | 'horizontal';\n /**\n * Количество аватарок, которые будут показаны.\n * Если в массиве `photos` больше элементов и используется размер `m`, то будет показано количество остальных элементов\n */\n visibleCount?: number;\n /**\n * Число, которое будет указано в счетчике.\n * По умолчанию высчитывается по формуле `photos.length - visibleCount`.\n * Если число больше 99, то счетчик скроется.\n */\n count?: number;\n}\n\ninterface PathElementProps extends React.SVGAttributes<SVGElement> {\n photoSize: number;\n direction: 'circle' | 'right' | 'left';\n}\n\ntype PhotoSizeType = 16 | 24 | 32;\n\nfunction PathElement({ photoSize, direction, ...props }: PathElementProps) {\n switch (direction) {\n case 'circle':\n const radius = photoSize / 2;\n\n return <circle cx={radius} cy={radius} r={radius} {...props} />;\n\n case 'right':\n switch (photoSize) {\n case 24:\n return (\n <path\n d=\"M22,18.625A12 12 0 0 1 12 24A12 12 0 0 1 12 0A12 12 0 0 1 22 5.375A12 12 0 0 0 22,18.625\"\n {...props}\n />\n );\n\n default:\n return (\n <path\n d=\"M30,23.75A16 16 0 0 1 16 32A16 16 0 0 1 16 0A16 16 0 0 1 30 8.25A16 16 0 0 0 30,23.75\"\n {...props}\n />\n );\n }\n\n default:\n switch (photoSize) {\n case 16:\n return (\n <path\n d=\"M2,13.285A8 8 0 0 0 8 16A8 8 0 0 0 8 0A8 8 0 0 0 2 2.715A8 8 0 0 1 2,13.285\"\n {...props}\n />\n );\n case 24:\n return (\n <path\n d=\"M2,18.625A12 12 0 0 0 12 24A12 12 0 0 0 12 0A12 12 0 0 0 2 5.375A12 12 0 0 1 2,18.625\"\n {...props}\n />\n );\n\n default:\n return (\n <path\n d=\"M2,23.75A16 16 0 0 0 16 32A16 16 0 0 0 16 0A16 16 0 0 0 2 8.25A16 16 0 0 1 2,23.75\"\n {...props}\n />\n );\n }\n }\n}\n\nconst photoSizes: Record<NonNullable<UsersStackProps['size']>, PhotoSizeType> = {\n s: 16,\n m: 24,\n l: 32,\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/UsersStack\n */\nexport const UsersStack = ({\n photos = [],\n visibleCount = 3,\n count = Math.max(0, photos.length - visibleCount),\n size = 'm',\n layout = 'horizontal',\n children,\n className,\n ...restProps\n}: UsersStackProps) => {\n const cmpId = useId();\n\n const canShowOthers = count > 0 && count < 100 && size !== 's';\n const CounterTypography = size === 'l' ? Footnote : Caption;\n\n const photoSize = photoSizes[size];\n const directionClip = canShowOthers ? 'right' : 'left';\n\n const photosElements = photos.slice(0, visibleCount).map((photo, i) => {\n const direction = i === 0 && !canShowOthers ? 'circle' : directionClip;\n\n const id = `UsersStackDefs${cmpId}${i}`;\n const hrefID = `#${id}`;\n const maskID = `UsersStackMask${cmpId}${i}`;\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={styles['UsersStack__photo']}\n key={i}\n aria-hidden\n >\n <defs>\n <PathElement id={id} direction={direction} photoSize={photoSize} />\n </defs>\n <clipPath id={maskID}>\n <use href={hrefID} />\n </clipPath>\n <g clipPath={`url(#${maskID})`}>\n <use href={hrefID} className={styles['UsersStack__fill']} />\n <image href={photo} width={photoSize} height={photoSize} />\n <use href={hrefID} fill=\"none\" stroke=\"rgba(0, 0, 0, 0.08)\" />\n </g>\n </svg>\n );\n });\n const othersElement = canShowOthers ? (\n <CounterTypography\n caps\n weight=\"1\"\n className={classNames(styles['UsersStack__photo'], styles['UsersStack__photo--others'])}\n >\n +{count}\n </CounterTypography>\n ) : null;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['UsersStack'],\n styles[`UsersStack--size-${size}`],\n styles[`UsersStack--layout-${layout}`],\n canShowOthers && styles['UsersStack--others'],\n className,\n )}\n >\n {(photosElements.length > 0 || othersElement) && (\n <div className={styles['UsersStack__photos']} role=\"presentation\">\n {photosElements}\n {othersElement}\n </div>\n )}\n {hasReactNode(children) && (\n <Footnote className={styles['UsersStack__text']}>{children}</Footnote>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
11
11
|
var _excluded = ["popout", "modal", "platform", "activePanel", "splitCol", "configProvider", "history", "id", "nav", "onTransition", "onSwipeBack", "onSwipeBackStart", "onSwipeBackCancel", "window", "document", "scroll", "isBackCheck", "className"];
|
|
12
12
|
import * as React from 'react';
|
|
13
13
|
import { classNames } from '@vkontakte/vkjs';
|
|
14
|
-
import { getPlatformClassName } from '../../helpers/getPlatformClassName';
|
|
15
14
|
import { withContext } from '../../hoc/withContext';
|
|
16
15
|
import { withPlatform } from '../../hoc/withPlatform';
|
|
17
16
|
import { canUseDOM, withDOM } from '../../lib/dom';
|
|
@@ -466,7 +465,7 @@ var ViewInfiniteComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
466
465
|
return /*#__PURE__*/React.createElement(Touch, _extends({
|
|
467
466
|
Component: "section"
|
|
468
467
|
}, restProps, {
|
|
469
|
-
className: classNames("vkuiView",
|
|
468
|
+
className: classNames("vkuiView", platform === Platform.IOS && "vkuiView--ios", !disableAnimation && this.state.animated && "vkuiView--animated", !disableAnimation && this.state.swipingBack && "vkuiView--swiping-back", disableAnimation && "vkuiView--no-motion", className),
|
|
470
469
|
onMoveX: this.onMoveX,
|
|
471
470
|
onEnd: this.onEnd
|
|
472
471
|
}), /*#__PURE__*/React.createElement("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewInfinite.js","names":["React","classNames","getPlatformClassName","withContext","withPlatform","canUseDOM","withDOM","getNavId","Platform","animationEvent","transitionEvent","warnOnce","AppRootPortal","ScrollContext","ConfigProviderContext","NavTransitionProvider","SplitColContext","Touch","swipeBackExcluded","warn","SwipeBackResults","scrollsCache","ViewInfiniteComponent","props","undefined","e","includes","animationName","state","prevPanel","flushTransition","Boolean","isBack","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","event","window","platform","IOS","swipeBackPrevented","shouldDisableTransitionMotion","configProvider","isWebView","startX","SWIPE_BACK_AREA","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","onSwipeBackStart","payload","activePanel","blurActiveElement","prevScrolls","scrolls","scroll","getScroll","y","swipeBackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","visiblePanels","nextPanel","document","Children","toArray","children","id","animationFinishTimeout","clearTimeout","prevProps","prevState","popout","modal","isBackCheck","from","to","firstLayerId","panels","map","panel","find","supported","setTimeout","transitionEndHandler","ANDROID","VKCOM","scrollPosition","prevPanelScrolls","newPanelScrolls","pop","scrollTo","onTransition","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","name","removeEventListener","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","panelId","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","className","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","onMoveX","onEnd","compensateScroll","isTransitionTarget","scrollList","el","calcPanelSwipeStyles","marginTop","Component","ViewInfinite"],"sources":["../../../../src/components/View/ViewInfinite.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\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 { AppRootPortal } from '../AppRoot/AppRootPortal';\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';\nimport iosStyles from './ViewIOS.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 popout?: React.ReactNode;\n modal?: React.ReactNode;\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 this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\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 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n '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 popout,\n modal,\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 hasPopout = !!popout;\n const hasModal = !!modal;\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 getPlatformClassName(styles['View'], platform),\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 && iosStyles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && iosStyles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && iosStyles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n iosStyles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n iosStyles['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 <AppRootPortal>\n {hasPopout && <div className={styles['View__popout']}>{popout}</div>}\n {hasModal && <div className={styles['View__modal']}>{modal}</div>}\n </AppRootPortal>\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ViewInfinite.js","names":["React","classNames","withContext","withPlatform","canUseDOM","withDOM","getNavId","Platform","animationEvent","transitionEvent","warnOnce","AppRootPortal","ScrollContext","ConfigProviderContext","NavTransitionProvider","SplitColContext","Touch","swipeBackExcluded","warn","SwipeBackResults","scrollsCache","ViewInfiniteComponent","props","undefined","e","includes","animationName","state","prevPanel","flushTransition","Boolean","isBack","propertyName","target","pickPanel","swipeBackNextPanel","swipeBackResult","fail","onSwipeBackCancel","success","onSwipeBackSuccess","event","window","platform","IOS","swipeBackPrevented","shouldDisableTransitionMotion","configProvider","isWebView","startX","SWIPE_BACK_AREA","innerWidth","browserSwipe","setState","onSwipeBack","animated","swipingBack","history","length","onSwipeBackStart","payload","activePanel","blurActiveElement","prevScrolls","scrolls","scroll","getScroll","y","swipeBackStartX","swipeBackPrevPanel","slice","swipeBackShift","shiftX","speed","duration","visiblePanels","nextPanel","document","Children","toArray","children","id","animationFinishTimeout","clearTimeout","prevProps","prevState","popout","modal","isBackCheck","from","to","firstLayerId","panels","map","panel","find","supported","setTimeout","transitionEndHandler","ANDROID","VKCOM","scrollPosition","prevPanelScrolls","newPanelScrolls","pop","scrollTo","onTransition","waitTransitionFinish","swipingBackTransitionEndHandler","transitionMotionEnabled","splitCol","animate","elem","eventHandler","name","removeEventListener","addEventListener","transitionFinishTimeout","activeElement","blur","panelNodes","panelId","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","_1","nav","className","restProps","hasPopout","hasModal","filter","sort","isPrevPanel","isNextPanel","disableAnimation","onMoveX","onEnd","compensateScroll","isTransitionTarget","scrollList","el","calcPanelSwipeStyles","marginTop","Component","ViewInfinite"],"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 { AppRootPortal } from '../AppRoot/AppRootPortal';\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';\nimport iosStyles from './ViewIOS.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 popout?: React.ReactNode;\n modal?: React.ReactNode;\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 this.props.popout && !prevProps.popout && this.blurActiveElement();\n this.props.modal && !prevProps.modal && this.blurActiveElement();\n\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 'vkui-animation-ios-next-forward',\n 'vkui-animation-ios-prev-back',\n 'vkui-animation-view-next-forward',\n '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 popout,\n modal,\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 hasPopout = !!popout;\n const hasModal = !!modal;\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 && iosStyles['View--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 && iosStyles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && iosStyles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && iosStyles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n iosStyles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n iosStyles['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 <AppRootPortal>\n {hasPopout && <div className={styles['View__popout']}>{popout}</div>}\n {hasModal && <div className={styles['View__modal']}>{modal}</div>}\n </AppRootPortal>\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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.vkuiWriteBarIcon{background:none;border:0;border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);color:#99a2ad;color:var(--vkui--color_icon_secondary);cursor:pointer;height:52px;position:relative;width:44px}.vkuiWriteBarIcon__in{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.vkuiWriteBarIcon:disabled{opacity:.4;pointer-events:none}.vkuiWriteBarIcon__active{opacity:.6}.vkuiWriteBarIcon__counter{box-shadow:0 0 0 2px #fff;box-shadow:0 0 0 2px var(--vkui--color_background_modal);position:absolute;right:2px;top:6px}.vkuiWriteBarIcon--ios,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-send{color:#2688eb;color:var(--vkui--color_icon_accent)}.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-send{padding-left:0;padding-right:0;width:48px}
|
|
1
|
+
.vkuiWriteBarIcon{background:none;border:0;border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);color:#99a2ad;color:var(--vkui--color_icon_secondary);cursor:pointer;height:52px;margin:0;padding:0;position:relative;width:44px}.vkuiWriteBarIcon__in{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.vkuiWriteBarIcon:disabled{opacity:.4;pointer-events:none}.vkuiWriteBarIcon__active{opacity:.6}.vkuiWriteBarIcon__counter{box-shadow:0 0 0 2px #fff;box-shadow:0 0 0 2px var(--vkui--color_background_modal);position:absolute;right:2px;top:6px}.vkuiWriteBarIcon--ios,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-send{color:#2688eb;color:var(--vkui--color_icon_accent)}.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-send{padding-left:0;padding-right:0;width:48px}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
1
|
import { PlatformType } from '../lib/platform';
|
|
2
|
+
/**
|
|
3
|
+
* Подставляйте соответствующий селектор самостоятельно.
|
|
4
|
+
*
|
|
5
|
+
* @deprecated
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
2
8
|
export declare function getPlatformClassName(base: string, osname?: PlatformType): string;
|
|
9
|
+
/**
|
|
10
|
+
* Подставляйте соответствующий селектор самостоятельно.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated
|
|
13
|
+
*/
|
|
3
14
|
export declare function getPlatformClassName<Styles extends Record<string, string>>(base: keyof Styles, osname?: PlatformType, styles?: Styles): string | undefined;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
// TODO v6 удалить этот хеллпер
|
|
1
2
|
import { platform } from '../lib/platform';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Подставляйте соответствующий селектор самостоятельно.
|
|
6
|
+
*
|
|
7
|
+
* @deprecated
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
|
|
2
11
|
export function getPlatformClassName(base) {
|
|
3
12
|
var osname = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : platform();
|
|
4
13
|
var
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPlatformClassName.js","names":["platform","getPlatformClassName","base","osname","styles","platformClassName","String"],"sources":["../../../src/helpers/getPlatformClassName.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"getPlatformClassName.js","names":["platform","getPlatformClassName","base","osname","styles","platformClassName","String"],"sources":["../../../src/helpers/getPlatformClassName.ts"],"sourcesContent":["// TODO v6 удалить этот хеллпер\nimport { platform, PlatformType } from '../lib/platform';\n\n/**\n * Подставляйте соответствующий селектор самостоятельно.\n *\n * @deprecated\n *\n */\nexport function getPlatformClassName(base: string, osname?: PlatformType): string;\n/**\n * Подставляйте соответствующий селектор самостоятельно.\n *\n * @deprecated\n */\nexport function getPlatformClassName<Styles extends Record<string, string>>(\n base: keyof Styles,\n osname?: PlatformType,\n styles?: Styles,\n): string | undefined;\nexport function getPlatformClassName<Styles extends Record<string, string>>(\n base: keyof Styles,\n osname: PlatformType = platform(),\n /**\n * Note: ввиду того, что Typescript не поддерживает `typescript-plugin-css-modules` во время компиляции,\n * не удалось покрыть дженерик типом параметр `styles`. Поэтому может вернуться undefined.\n */\n styles?: Styles,\n): string | undefined {\n const platformClassName = `${String(base)}--${osname}`;\n return styles ? styles[platformClassName] : platformClassName;\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAsB,iBAAiB;;AAExD;AACA;AACA;AACA;AACA;AACA;;AAYA,OAAO,SAASC,oBAAoB,CAClCC,IAAkB,EAOE;EAAA,IANpBC,MAAoB,uEAAGH,QAAQ,EAAE;EAAA;EACjC;AACF;AACA;AACA;EACEI,MAAe;EAEf,IAAMC,iBAAiB,aAAMC,MAAM,CAACJ,IAAI,CAAC,eAAKC,MAAM,CAAE;EACtD,OAAOC,MAAM,GAAGA,MAAM,CAACC,iBAAiB,CAAC,GAAGA,iBAAiB;AAC/D"}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
1
|
import { PlatformType } from '../lib/platform';
|
|
2
|
+
/**
|
|
3
|
+
* Подставляйте соответствующий селектор самостоятельно.
|
|
4
|
+
*
|
|
5
|
+
* @deprecated
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
2
8
|
export declare function getPlatformClassName(base: string, osname?: PlatformType): string;
|
|
9
|
+
/**
|
|
10
|
+
* Подставляйте соответствующий селектор самостоятельно.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated
|
|
13
|
+
*/
|
|
3
14
|
export declare function getPlatformClassName<Styles extends Record<string, string>>(base: keyof Styles, osname?: PlatformType, styles?: Styles): string | undefined;
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
// TODO v6 удалить этот хеллпер
|
|
1
2
|
import { platform } from '../lib/platform';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Подставляйте соответствующий селектор самостоятельно.
|
|
6
|
+
*
|
|
7
|
+
* @deprecated
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
|
|
2
11
|
export function getPlatformClassName(base) {
|
|
3
12
|
var osname = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : platform();
|
|
4
13
|
var
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPlatformClassName.js","names":["platform","getPlatformClassName","base","osname","styles","platformClassName","String"],"sources":["../../src/helpers/getPlatformClassName.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"getPlatformClassName.js","names":["platform","getPlatformClassName","base","osname","styles","platformClassName","String"],"sources":["../../src/helpers/getPlatformClassName.ts"],"sourcesContent":["// TODO v6 удалить этот хеллпер\nimport { platform, PlatformType } from '../lib/platform';\n\n/**\n * Подставляйте соответствующий селектор самостоятельно.\n *\n * @deprecated\n *\n */\nexport function getPlatformClassName(base: string, osname?: PlatformType): string;\n/**\n * Подставляйте соответствующий селектор самостоятельно.\n *\n * @deprecated\n */\nexport function getPlatformClassName<Styles extends Record<string, string>>(\n base: keyof Styles,\n osname?: PlatformType,\n styles?: Styles,\n): string | undefined;\nexport function getPlatformClassName<Styles extends Record<string, string>>(\n base: keyof Styles,\n osname: PlatformType = platform(),\n /**\n * Note: ввиду того, что Typescript не поддерживает `typescript-plugin-css-modules` во время компиляции,\n * не удалось покрыть дженерик типом параметр `styles`. Поэтому может вернуться undefined.\n */\n styles?: Styles,\n): string | undefined {\n const platformClassName = `${String(base)}--${osname}`;\n return styles ? styles[platformClassName] : platformClassName;\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAsB,iBAAiB;;AAExD;AACA;AACA;AACA;AACA;AACA;;AAYA,OAAO,SAASC,oBAAoB,CAClCC,IAAkB,EAOE;EAAA,IANpBC,MAAoB,uEAAGH,QAAQ,EAAE;EAAA;EACjC;AACF;AACA;AACA;EACEI,MAAe;EAEf,IAAMC,iBAAiB,aAAMC,MAAM,CAACJ,IAAI,CAAC,eAAKC,MAAM,CAAE;EACtD,OAAOC,MAAM,GAAGA,MAAM,CAACC,iBAAiB,CAAC,GAAGA,iBAAiB;AAC/D"}
|
package/dist/vkui.css
CHANGED
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
.vkuiModalDismissButton{box-sizing:border-box;color:#fff;color:var(--vkui--color_icon_contrast);height:56px;justify-content:center;padding:18px;position:absolute;right:-56px;top:0;transition:opacity .15s ease-out;width:56px}.vkuiModalDismissButton:before{background:rgba(0,0,0,.4);background:var(--vkui--color_overlay_primary);border-radius:50%;bottom:14px;content:"";display:block;left:14px;position:absolute;right:14px;top:14px}.vkuiModalDismissButton .vkuiIcon{transform:translateX(0)}.vkuiModalDismissButton--hover.vkuiModalDismissButton:before{background:rgba(0,0,0,.44);background:var(--vkui--color_overlay_primary--hover)}.vkuiModalDismissButton--active.vkuiModalDismissButton:before{background:rgba(0,0,0,.48);background:var(--vkui--color_overlay_primary--active)}
|
|
42
42
|
.vkuiActionSheet{align-items:stretch;animation:vkui-animation-actionsheet-intro .2s cubic-bezier(.4,0,.2,1);animation:vkui-animation-actionsheet-intro .2s var(--vkui--animation_easing_platform);background:#fff;background:var(--vkui--color_background_modal);border-radius:12px;box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3);box-sizing:border-box;display:flex;flex-direction:column;margin:10px;max-width:420px;max-width:var(--vkui--size_popup_small--regular);overflow:hidden;padding:8px 0;position:relative;width:calc(100% - 20px)}.vkuiActionSheet__header{color:#6d7885;color:var(--vkui--color_text_subhead);padding:16px 20px}.vkuiActionSheet--closing{transform:translateY(calc(100% + 20px));transition:transform .2s cubic-bezier(.4,0,.2,1);transition:transform .2s var(--vkui--animation_easing_platform)}.vkuiActionSheet__title+.vkuiActionSheet__text{margin-top:8px}.vkuiActionSheet--ios{animation:vkui-animation-actionsheet-intro .3s cubic-bezier(.4,0,.2,1);animation:vkui-animation-actionsheet-intro .3s var(--vkui--animation_easing_platform);background:transparent;margin:unset;padding:10px;width:100%}.vkuiActionSheet--ios.vkuiActionSheet--closing{transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s var(--vkui--animation_easing_platform)}.vkuiActionSheet--ios .vkuiActionSheet__header{border-radius:14px 14px 0 0;overflow:hidden;position:relative;text-align:center}.vkuiActionSheet--ios .vkuiActionSheet__title{position:relative}.vkuiActionSheet--ios .vkuiActionSheet__title+.vkuiActionSheet__text{margin-top:9px}.vkuiActionSheet--ios .vkuiActionSheet__text{position:relative}.vkuiActionSheet--ios .vkuiActionSheet__header:before{background-color:#fff;background-color:var(--vkui--color_background_modal);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.vkuiActionSheet--sizeY-compact .vkuiActionSheet__header{padding:12px 20px}.vkuiActionSheet--desktop{animation:none;height:auto;margin:0;max-width:100%;width:auto}.vkuiActionSheet--desktop.vkuiActionSheet--ios{border-radius:14px;padding:0}@keyframes vkui-animation-actionsheet-intro{0%{transform:translateY(100%)}to{transform:translateY(0)}}
|
|
43
43
|
.vkuiPopper{z-index:100;z-index:var(--vkui--z_index_popout)}
|
|
44
|
-
.vkuiPopperArrow{position:absolute}.vkuiPopperArrow__in{content:"";display:block;
|
|
44
|
+
.vkuiPopperArrow{position:absolute}.vkuiPopperArrow__in{content:"";display:block;transform:translateY(1px)}.vkuiPopperArrow[data-placement^=top] .vkuiPopperArrow__in{transform:rotate(180deg) translateY(1px)}.vkuiPopperArrow[data-placement^=left] .vkuiPopperArrow__in{transform:rotate(90deg) translateY(1px)}.vkuiPopperArrow[data-placement^=right] .vkuiPopperArrow__in{transform:rotate(270deg) translateY(1px)}
|
|
45
45
|
.vkuiActionSheetItem{align-items:center;border-radius:0;box-sizing:border-box;color:#000;color:var(--vkui--color_text_primary);display:flex;min-height:48px;overflow:hidden;padding:0 20px;position:relative;text-decoration:none}.vkuiActionSheetItem__after,.vkuiActionSheetItem__before,.vkuiActionSheetItem__container{position:relative}.vkuiActionSheetItem__after,.vkuiActionSheetItem__before{flex-shrink:0}.vkuiActionSheetItem__before{margin-left:-2px;margin-right:18px}.vkuiActionSheetItem__container{flex-grow:1;max-width:100%;padding:10px 0}.vkuiActionSheetItem--ellipsis{overflow:hidden;white-space:nowrap}.vkuiActionSheetItem__content{align-items:baseline;display:flex;justify-content:space-between;overflow:hidden}.vkuiActionSheetItem--ellipsis .vkuiActionSheetItem__content{justify-content:flex-start}.vkuiActionSheetItem__children{min-width:0;overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__subtitle{color:#818c99;color:var(--vkui--color_text_secondary);margin-top:2px;overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__meta{color:#818c99;color:var(--vkui--color_text_secondary);flex-shrink:0;margin-left:6px}.vkuiActionSheetItem__before{color:#2688eb;color:var(--vkui--color_icon_accent)}.vkuiActionSheetItem--ios .vkuiActionSheetItem__before{color:#2688eb;color:var(--vkui--color_icon_accent_themed)}.vkuiActionSheetItem--mode-destructive .vkuiActionSheetItem__container:first-child{color:#e64646;color:var(--vkui--color_text_negative)}.vkuiActionSheetItem--mode-destructive .vkuiActionSheetItem__before{color:#e64646;color:var(--vkui--color_icon_negative)}.vkuiActionSheetItem__radio{display:none}.vkuiActionSheetItem__marker{align-items:center;background-color:initial;color:#2688eb;color:var(--vkui--color_icon_accent);display:none;justify-content:center;margin-left:16px}.vkuiActionSheetItem__radio:checked~.vkuiActionSheetItem__marker{display:flex}.vkuiActionSheetItem--ios{background:#fff;background:var(--vkui--color_background_modal);border-radius:0;color:#2688eb;color:var(--vkui--color_text_accent_themed);min-height:56px;padding:14px 20px 14px 19px}.vkuiActionSheetItem--rich{color:#000;color:var(--vkui--color_text_primary)}.vkuiActionSheetItem--ios.vkuiActionSheetItem--mode-destructive{color:#e64646;color:var(--vkui--color_text_negative)}.vkuiActionSheetItem--ios:first-child{border-top-left-radius:14px;border-top-right-radius:14px}.vkuiActionSheetItem--ios:last-child,.vkuiActionSheetItem--ios:not(.vkuiActionSheetItem--desktop):nth-last-child(2){border-bottom-left-radius:14px;border-bottom-right-radius:14px}.vkuiActionSheetItem--ios:before{background-color:#fff;background-color:var(--vkui--color_background_modal);content:"";height:100%;left:0;position:absolute;top:0;transition:opacity .15s ease-out,background-color .15s ease-out;width:100%}.vkuiActionSheetItem--ios:after{background:rgba(0,0,0,.12);background:var(--vkui--color_separator_primary_alpha);content:"";height:1px;left:0;position:absolute;right:0;top:0;transform-origin:center bottom}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiActionSheetItem--ios:after{transform:scaleY(.5)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiActionSheetItem--ios:after{transform:scaleY(.33)}}.vkuiActionSheet--ios .vkuiActionSheetItem--last:after,.vkuiActionSheet--ios .vkuiActionSheet__header:empty,.vkuiActionSheetItem--ios:first-child:after,.vkuiActionSheetItem--mode-cancel:after{content:none}.vkuiActionSheetItem--ios.vkuiActionSheetItem--active:before{background-color:rgba(0,16,61,.08);background-color:var(--vkui--color_transparent--active);opacity:1;transition:none}.vkuiActionSheetItem--ios .vkuiActionSheetItem__container{padding:0}.vkuiActionSheetItem--ios .vkuiActionSheetItem--centered{justify-content:center}.vkuiActionSheetItem--mode-cancel{border-radius:14px;margin-bottom:0;margin-bottom:var(--vkui_internal--safe_area_inset_bottom);margin-top:8px;min-height:52px}.vkuiActionSheetItem--desktop{cursor:pointer;width:auto}.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__children,.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__meta,.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__subtitle{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__before,.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__marker{color:#99a2ad;color:var(--vkui--color_icon_secondary)}.vkuiActionSheetItem--sizeY-compact{min-height:32px}.vkuiActionSheetItem--sizeY-compact.vkuiActionSheetItem--ios{min-height:36px;padding:4px 20px 4px 18px}.vkuiActionSheetItem--sizeY-compact:not(.vkuiActionSheetItem--ios)+.vkuiActionSheetItem--sizeY-compact:not(.vkuiActionSheetItem--ios){margin-top:2px}.vkuiActionSheetItem--sizeY-compact .vkuiActionSheetItem__container{padding:5px 0}
|
|
46
46
|
.vkuiScreenSpinner{animation:vkui-screen-spinner-intro .3s ease}.vkuiScreenSpinner--state-cancelable{cursor:pointer}.vkuiScreenSpinner__spinner{opacity:1}.vkuiScreenSpinner--hideSpinner .vkuiScreenSpinner__spinner{opacity:0;transition:opacity .1s ease}.vkuiScreenSpinner__container{background:#fff;background:var(--vkui--color_background_modal);border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);box-shadow:0 0 8px rgba(0,0,0,.12),0 16px 16px rgba(0,0,0,.16);box-shadow:var(--vkui--elevation4);color:#818c99;color:var(--vkui--color_icon_medium);height:88px;position:relative;width:88px}.vkuiScreenSpinner__icon{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;top:0;width:100%}.vkuiScreenSpinner__icon .vkuiIcon{animation:vkui-screen-spinner-intro .2s ease}.vkuiScreenSpinner--state-done .vkuiScreenSpinner__icon .vkuiIcon path{stroke-dasharray:50;stroke-dashoffset:50;animation:vkui-screen-spinner-iconDone .6s cubic-bezier(.4,0,.2,1) .3s forwards;animation:vkui-screen-spinner-iconDone .6s .3s var(--vkui--animation_easing_platform) forwards}@keyframes vkui-screen-spinner-iconDone{0%{stroke-dashoffset:50}to{stroke-dashoffset:0}}@keyframes vkui-screen-spinner-intro{0%{opacity:0}to{opacity:1}}
|
|
47
47
|
.vkuiSnackbar{bottom:0;left:auto;padding-bottom:0;padding-bottom:var(--vkui_internal--safe_area_inset_bottom);padding-left:0;padding-left:var(--vkui_internal--safe_area_inset_left);padding-right:0;padding-right:var(--vkui_internal--safe_area_inset_right);position:fixed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;z-index:100;z-index:var(--vkui--z_index_popout)}.vkuiEpic--hasTabbar .vkuiSnackbar{padding-bottom:calc(48px + 0px);padding-bottom:calc(var(--vkui_internal--tabbar_height) + var(--vkui_internal--safe_area_inset_bottom))}.vkuiSnackbar__body,.vkuiSnackbar__in{transition:transform .32s cubic-bezier(.4,0,.2,1);transition:transform .32s var(--vkui--animation_easing_platform)}.vkuiSnackbar__in{animation:vkui-animation-snackbar-intro-vertical .34s cubic-bezier(.4,0,.2,1);animation:vkui-animation-snackbar-intro-vertical .34s var(--vkui--animation_easing_platform);padding:8px}.vkuiSnackbar--closing .vkuiSnackbar__in{transform:translate3d(0,140%,0)}.vkuiSnackbar__body{align-items:center;background:#fff;background:var(--vkui--color_background_modal);border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);box-shadow:0 0 8px rgba(0,0,0,.12),0 16px 16px rgba(0,0,0,.16);box-shadow:var(--vkui--elevation4);box-sizing:border-box;display:flex;min-height:56px;padding:12px}.vkuiSnackbar--mode-dark .vkuiSnackbar__body{background:#2d2d2e;background:var(--vkui--color_background_contrast_inverse)}.vkuiSnackbar__before{margin-right:12px}.vkuiSnackbar__after{margin-left:12px}.vkuiSnackbar__content{align-items:center;display:flex;flex:1;overflow:hidden}.vkuiSnackbar--layout-vertical .vkuiSnackbar__content{align-items:flex-start;flex-direction:column}.vkuiSnackbar__content-text{-webkit-line-clamp:3;-webkit-box-orient:vertical;color:#000;color:var(--vkui--color_text_primary);display:-webkit-box;flex:1;overflow:hidden;width:100%}.vkuiSnackbar__content-subtitle{color:#6d7885;color:var(--vkui--color_text_subhead);margin-top:2px}.vkuiSnackbar--mode-dark .vkuiSnackbar__content-text{color:#fff;color:var(--vkui--color_text_contrast)}.vkuiSnackbar--layout-horizontal .vkuiSnackbar__action{margin-left:12px;position:relative}.vkuiSnackbar--layout-vertical .vkuiSnackbar__action{margin-top:2px;min-height:auto}.vkuiModalRoot .vkuiSnackbar{padding-bottom:0;padding-bottom:var(--vkui_internal--safe_area_inset_bottom)}.vkuiSnackbar--ios .vkuiSnackbar__body,.vkuiSnackbar--ios .vkuiSnackbar__in{transition:transform .4s cubic-bezier(.4,0,.2,1);transition:transform .4s var(--vkui--animation_easing_platform)}.vkuiSnackbar--desktop{bottom:0;left:0;max-width:351px}.vkuiSnackbar--desktop .vkuiSnackbar__in{animation-name:vkui-animation-snackbar-intro-horizontal;padding:12px}.vkuiSnackbar--desktop.vkuiSnackbar--closing .vkuiSnackbar__in{transform:translate3d(-140%,0,0)}.vkuiSnackbar--touched .vkuiSnackbar__body{transition:none}@keyframes vkui-animation-snackbar-intro-vertical{0%{transform:translate3d(0,140%,0)}to{transform:translateZ(0)}}@keyframes vkui-animation-snackbar-intro-horizontal{0%{transform:translate3d(-140%,0,0)}to{transform:translateZ(0)}}
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
.vkuiBanner{color:#000;color:var(--vkui--color_text_primary);isolation:isolate;margin:12px 0;padding:0 16px;padding:0 var(--vkui--size_base_padding_horizontal--regular)}.vkuiBanner__in{align-items:stretch;background-color:#f5f5f5;background-color:var(--vkui--color_background_secondary);border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);display:flex;flex-flow:row nowrap;overflow:hidden;padding:12px 12px 12px 16px;position:relative}.vkuiBanner__in:before{border:1px solid rgba(0,0,0,.08);border:var(--vkui_internal--thin_border) solid var(--vkui--color_image_border_alpha);border-radius:inherit;box-sizing:border-box;content:"";display:block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:1;z-index:var(--vkui_internal--z_index_banner_content)}.vkuiBanner__before{margin-right:12px}.vkuiBanner__before,.vkuiBanner__content{position:relative;z-index:1;z-index:var(--vkui_internal--z_index_banner_content)}.vkuiBanner__content{display:flex;flex:1;flex-direction:column;justify-content:center;min-width:0}.vkuiBanner__header{display:block}.vkuiBanner__subheader{display:block}.vkuiBanner__subheader,.vkuiBanner__text{color:#6d7885;color:var(--vkui--color_text_subhead)}.vkuiBanner__bg{left:0;position:absolute;top:0;z-index:0;z-index:var(--vkui_internal--z_index_banner_background)}.vkuiBanner__bg,.vkuiBanner__bg>*{height:100%;width:100%}.vkuiBanner__aside{color:#b8c1cc;color:var(--vkui--color_icon_tertiary);justify-content:flex-end;width:28px}.vkuiBanner__aside,.vkuiBanner__dismiss{align-content:center;align-items:center;display:flex;flex-flow:row nowrap}.vkuiBanner__dismiss{color:#99a2ad;color:var(--vkui--color_icon_secondary);justify-content:center;position:absolute;right:2px;top:2px;z-index:2;z-index:var(--vkui_internal--z_index_banner_hover)}.vkuiBanner__actions{margin-top:12px}.vkuiBanner__subheader:not(:first-child),.vkuiBanner__text:not(:first-child){margin-top:2px}.vkuiBanner--mode-image .vkuiBanner__in{background-color:#f5f5f5;background-color:var(--vkui--color_background_secondary)}.vkuiBanner--inverted,.vkuiBanner--inverted .vkuiBanner__subheader,.vkuiBanner--mode-image .vkuiBanner__dismiss{color:#fff;color:var(--vkui--color_text_contrast)}.vkuiBanner--inverted .vkuiBanner__subheader{opacity:.72}.vkuiBanner--size-s .vkuiBanner__before{margin-left:-4px}.vkuiBanner--size-m .vkuiBanner__in{padding:16px}.vkuiBanner--size-m .vkuiBanner__subheader:not(:first-child),.vkuiBanner--size-m .vkuiBanner__text:not(:first-child){margin-top:4px}.vkuiBanner--ios .vkuiBanner__dismiss,.vkuiBanner--ios.vkuiBanner--mode-image .vkuiBanner__dismiss{color:#b8c1cc;color:var(--vkui--color_icon_tertiary)}.vkuiFormStatus .vkuiBanner__in:before{border:none}.vkuiFormStatus--mode-error .vkuiBanner__in{background-color:#faebeb;background-color:var(--vkui--color_background_negative_tint)}.vkuiFormStatus--mode-error .vkuiBanner__subheader{color:#e64646;color:var(--vkui--color_background_negative)}
|
|
96
96
|
.vkuiMiniInfoCell{color:#6d7885;color:var(--vkui--color_text_subhead);display:flex;padding:6px 16px;padding:6px var(--vkui--size_base_padding_horizontal--regular)}.vkuiMiniInfoCell--mode-accent{color:#000;color:var(--vkui--color_text_primary)}.vkuiMiniInfoCell__before{color:#99a2ad;color:var(--vkui--color_icon_secondary);margin-right:12px}.vkuiMiniInfoCell__middle{align-items:center;display:flex;flex:1;min-width:0;overflow:hidden}.vkuiMiniInfoCell__content{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vkuiMiniInfoCell--textWrap-short .vkuiMiniInfoCell__content{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;max-height:60px;white-space:normal}.vkuiMiniInfoCell--textWrap-full .vkuiMiniInfoCell__content{overflow:inherit;white-space:normal}.vkuiMiniInfoCell--textWrap-nowrap .vkuiMiniInfoCell__content{flex:0 1 auto}.vkuiMiniInfoCell__after{margin-bottom:-2px;margin-left:12px;margin-top:-2px}.vkuiMiniInfoCell--mode-add,.vkuiMiniInfoCell--mode-more{color:#2d81e0;color:var(--vkui--color_text_link_themed)}.vkuiMiniInfoCell--mode-add .vkuiMiniInfoCell__before,.vkuiMiniInfoCell--mode-more .vkuiMiniInfoCell__before{color:#2688eb;color:var(--vkui--color_icon_accent_themed)}.vkuiMiniInfoCell--mode-more{padding-bottom:10px;padding-top:10px}.vkuiMiniInfoCell__middle .vkuiIcon{color:#2688eb;color:var(--vkui--color_text_accent);margin-left:4px}.vkuiMiniInfoCell--mode-add .vkuiMiniInfoCell__middle .vkuiIcon,.vkuiMiniInfoCell--mode-more .vkuiMiniInfoCell__middle .vkuiIcon{color:#2688eb;color:var(--vkui--color_icon_accent_themed)}
|
|
97
97
|
.vkuiWriteBar{background:#fff;background:var(--vkui--color_background_modal)}.vkuiWriteBar--shadow{box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3)}.vkuiWriteBar__after,.vkuiWriteBar__before,.vkuiWriteBar__form{align-items:flex-end;display:flex}.vkuiWriteBar__form{min-height:52px}.vkuiWriteBar__formIn{display:flex;flex:1;min-width:0;position:relative}.vkuiWriteBar__textarea{-webkit-appearance:none;background:transparent;border:none;box-sizing:border-box;color:#000;color:var(--vkui--color_text_primary);flex:1;margin:0;max-height:120px;min-width:0;resize:none;width:100%}.vkuiWriteBar__textarea::-webkit-input-placeholder{color:#6d7885;color:var(--vkui--color_text_subhead);opacity:1}.vkuiWriteBar__textarea::-moz-placeholder{color:#6d7885;color:var(--vkui--color_text_subhead);opacity:1}.vkuiWriteBar__textarea::-ms-input-placeholder{color:#6d7885;color:var(--vkui--color_text_subhead);opacity:1}.vkuiWriteBar__textarea::placeholder{color:#6d7885;color:var(--vkui--color_text_subhead);opacity:1}.vkuiWriteBar__textarea:focus{outline:none}.vkuiWriteBar__inlineAfter{align-items:flex-end;display:flex}.vkuiWriteBar__before{padding-left:4px}.vkuiWriteBar__after{padding-right:4px}.vkuiWriteBar__textarea{height:52px;padding:16px 12px}.vkuiWriteBar--ios .vkuiWriteBar__after,.vkuiWriteBar--ios .vkuiWriteBar__before{padding:0 4px}.vkuiWriteBar--ios .vkuiWriteBar__formIn{background-color:#f2f3f5;background-color:var(--vkui--color_write_bar_input_background);border:1px solid rgba(0,0,0,.08);border:var(--vkui_internal--thin_border) solid var(--vkui--color_write_bar_input_border_alpha);border-radius:18px;box-sizing:border-box;margin:8px 0}.vkuiWriteBar--ios .vkuiWriteBar__formIn:first-child{margin-left:12px}.vkuiWriteBar--ios .vkuiWriteBar__inlineAfter{margin-bottom:-9px;margin-right:-1px;margin-top:-9px}.vkuiWriteBar--ios .vkuiWriteBar__textarea{font-size:17px;height:34px;line-height:22px;padding:6px 11px}
|
|
98
|
-
.vkuiWriteBarIcon{background:none;border:0;border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);color:#99a2ad;color:var(--vkui--color_icon_secondary);cursor:pointer;height:52px;position:relative;width:44px}.vkuiWriteBarIcon__in{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.vkuiWriteBarIcon:disabled{opacity:.4;pointer-events:none}.vkuiWriteBarIcon__active{opacity:.6}.vkuiWriteBarIcon__counter{box-shadow:0 0 0 2px #fff;box-shadow:0 0 0 2px var(--vkui--color_background_modal);position:absolute;right:2px;top:6px}.vkuiWriteBarIcon--ios,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-send{color:#2688eb;color:var(--vkui--color_icon_accent)}.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-send{padding-left:0;padding-right:0;width:48px}
|
|
98
|
+
.vkuiWriteBarIcon{background:none;border:0;border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);color:#99a2ad;color:var(--vkui--color_icon_secondary);cursor:pointer;height:52px;margin:0;padding:0;position:relative;width:44px}.vkuiWriteBarIcon__in{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.vkuiWriteBarIcon:disabled{opacity:.4;pointer-events:none}.vkuiWriteBarIcon__active{opacity:.6}.vkuiWriteBarIcon__counter{box-shadow:0 0 0 2px #fff;box-shadow:0 0 0 2px var(--vkui--color_background_modal);position:absolute;right:2px;top:6px}.vkuiWriteBarIcon--ios,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-send{color:#2688eb;color:var(--vkui--color_icon_accent)}.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-send{padding-left:0;padding-right:0;width:48px}
|
|
99
99
|
.vkuiSubnavigationBar__in{margin:-8px 0}.vkuiSubnavigationBar__scrollIn{display:flex;padding-bottom:calc(12px + 8px);padding-bottom:calc(var(--vkui--size_subnavigation_bar_padding_vertical--regular) + 8px);padding-top:calc(12px + 8px);padding-top:calc(var(--vkui--size_subnavigation_bar_padding_vertical--regular) + 8px)}.vkuiSubnavigationBar__scrollIn:after,.vkuiSubnavigationBar__scrollIn:before{content:"";min-width:16px;min-width:var(--vkui--size_base_padding_horizontal--regular)}
|
|
100
100
|
.vkuiSubnavigationButton{border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.vkuiSubnavigationButton__in{align-items:center;display:flex;justify-content:center}.vkuiSubnavigationButton--size-s .vkuiSubnavigationButton__in{height:30px;height:var(--vkui--size_button_small_height--regular)}.vkuiSubnavigationButton--size-m .vkuiSubnavigationButton__in{height:36px;height:var(--vkui--size_button_medium_height--regular)}.vkuiSubnavigationButton--size-l .vkuiSubnavigationButton__in{height:44px;height:var(--vkui--size_button_large_height--regular)}.vkuiSubnavigationButton--sizeY-compact.vkuiSubnavigationButton--size-s .vkuiSubnavigationButton__in{height:28px;height:var(--vkui--size_button_small_height--compact)}.vkuiSubnavigationButton--sizeY-compact.vkuiSubnavigationButton--size-m .vkuiSubnavigationButton__in{height:32px;height:var(--vkui--size_button_medium_height--compact)}.vkuiSubnavigationButton--sizeY-compact.vkuiSubnavigationButton--size-l .vkuiSubnavigationButton__in{height:36px;height:var(--vkui--size_button_large_height--compact)}@media (max-height:414.9px),(pointer:fine) and (min-width:768px){.vkuiSubnavigationButton--sizeY-none.vkuiSubnavigationButton--size-s .vkuiSubnavigationButton__in{height:28px;height:var(--vkui--size_button_small_height--compact)}.vkuiSubnavigationButton--sizeY-none.vkuiSubnavigationButton--size-m .vkuiSubnavigationButton__in{height:32px;height:var(--vkui--size_button_medium_height--compact)}.vkuiSubnavigationButton--sizeY-none.vkuiSubnavigationButton--size-l .vkuiSubnavigationButton__in{height:36px;height:var(--vkui--size_button_large_height--compact)}}.vkuiSubnavigationButton__before{color:#2688eb;color:var(--vkui--color_icon_accent);margin-right:8px}.vkuiSubnavigationButton__label{flex-grow:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vkuiSubnavigationButton__after{margin-left:8px}.vkuiSubnavigationButton__expandableIcon{color:#99a2ad;color:var(--vkui--color_icon_secondary);margin-left:8px;margin-top:1px}.vkuiSubnavigationButton__before:first-child,.vkuiSubnavigationButton__label:first-child{padding-left:12px;padding-left:var(--vkui--size_button_base_small_padding_horizontal_icon--regular)}.vkuiSubnavigationButton__after:last-child,.vkuiSubnavigationButton__expandableIcon,.vkuiSubnavigationButton__label:last-child{padding-right:12px;padding-right:var(--vkui--size_button_base_small_padding_horizontal_icon--regular)}.vkuiSubnavigationButton--mode-primary{background-color:#fff;background-color:var(--vkui--color_background_modal);box-shadow:0 0 2px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.08);box-shadow:var(--vkui--elevation3)}.vkuiSubnavigationButton--mode-outline{box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);box-shadow:inset 0 0 0 var(--vkui_internal--thin_border) var(--vkui--color_field_border_alpha)}.vkuiSubnavigationButton--selected{background-color:#2688eb;background-color:var(--vkui--color_background_accent_themed);border:none;box-shadow:none;color:#fff;color:var(--vkui--color_text_contrast_themed)}.vkuiSubnavigationButton--selected.vkuiSubnavigationButton--mode-tertiary{background-color:rgba(0,16,61,.08);background-color:var(--vkui--color_transparent--active);color:#000;color:var(--vkui--color_text_primary)}.vkuiSubnavigationButton--selected:not(.vkuiSubnavigationButton--mode-tertiary) .vkuiSubnavigationButton__before,.vkuiSubnavigationButton--selected:not(.vkuiSubnavigationButton--mode-tertiary) .vkuiSubnavigationButton__expandableIcon{color:#fff;color:var(--vkui--color_icon_contrast_themed)}.vkuiSubnavigationBar .vkuiSubnavigationButton+.vkuiSubnavigationButton{margin-left:8px;margin-left:var(--vkui--size_subnavigation_bar_gap--regular)}.vkuiSubnavigationBar--mode-fixed .vkuiSubnavigationButton{flex:1;min-width:0}
|
|
101
101
|
.vkuiPagination__list{display:flex;list-style-type:none;margin:0;padding:0}.vkuiPagination__prevButtonContainer{margin-right:8px}.vkuiPagination__nextButtonContainer{margin-left:8px}.vkuiPagination__page{border-radius:8px;border-radius:var(--vkui--size_border_radius--regular);box-sizing:border-box;color:#818c99;color:var(--vkui--color_text_secondary);font-family:-apple-system,system-ui,Helvetica Neue,Roboto,sans-serif;font-family:var(--vkui--font_family_base);min-width:40px;padding-left:8px;padding-right:8px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.vkuiPagination__page--state-hover{background-color:rgba(0,16,61,.04);background-color:var(--vkui--color_transparent--hover)}.vkuiPagination__page--current,.vkuiPagination__page--state-active{background-color:rgba(0,16,61,.08);background-color:var(--vkui--color_transparent--active);color:#000;color:var(--vkui--color_text_primary)}.vkuiPagination__page--disabled{opacity:.4;opacity:var(--vkui--opacity_disable)}.vkuiPagination__page--sizeY-compact{font-size:15px;font-size:var(--vkui--font_text--font_size--compact);height:36px;height:var(--vkui--size_button_large_height--compact);line-height:36px;line-height:var(--vkui--size_button_large_height--compact)}@media (max-height:414.9px),(pointer:fine) and (min-width:768px){.vkuiPagination__page--sizeY-none{font-size:15px;font-size:var(--vkui--font_text--font_size--compact);height:36px;height:var(--vkui--size_button_large_height--compact);line-height:36px;line-height:var(--vkui--size_button_large_height--compact)}}.vkuiPagination__page--sizeY-regular{font-size:16px;font-size:var(--vkui--font_text--font_size--regular);height:44px;height:var(--vkui--size_button_large_height--regular);line-height:44px;line-height:var(--vkui--size_button_large_height--regular)}@media (max-width:767.9px) and (min-height:415px),(pointer:coarse) and (min-height:415px),(pointer:none) and (min-height:415px){.vkuiPagination__page--sizeY-none{font-size:16px;font-size:var(--vkui--font_text--font_size--regular);height:44px;height:var(--vkui--size_button_large_height--regular);line-height:44px;line-height:var(--vkui--size_button_large_height--regular)}}.vkuiPagination__page--type-ellipsis{min-width:16px;padding-left:0;padding-right:0}
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
.vkuiFormStatus--mode-error{color:#e64646;color:var(--vkui--color_background_negative)}
|
|
107
107
|
.vkuiSwitch{cursor:pointer;display:block;padding:calc((20px - 14px) / 2);padding:calc((var(--vkui--size_switch_pin--regular) - var(--vkui--size_switch_height--regular)) / 2);position:relative}.vkuiSwitch--sizeY-compact{padding:calc((18px - 12px) / 2);padding:calc((var(--vkui--size_switch_pin--compact) - var(--vkui--size_switch_height--compact)) / 2)}@media (max-height:414.9px),(pointer:fine) and (min-width:768px){.vkuiSwitch--sizeY-none{padding:calc((18px - 12px) / 2);padding:calc((var(--vkui--size_switch_pin--compact) - var(--vkui--size_switch_height--compact)) / 2)}}.vkuiSwitch--disabled{cursor:default}.vkuiSwitch__pseudo{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-tap-highlight-color:transparent;box-sizing:border-box;display:block;position:relative}.vkuiSwitch__pseudo:before{background:#f2f3f5;background:var(--vkui--color_icon_contrast_secondary);border-radius:50%;box-shadow:0 0 2px 0 rgba(0,0,0,.12),0 2px 2px 0 rgba(0,0,0,.24);box-sizing:border-box;content:"";height:20px;height:var(--vkui--size_switch_pin--regular);left:calc((14px - 20px) / 2);left:calc((var(--vkui--size_switch_height--regular) - var(--vkui--size_switch_pin--regular)) / 2);position:absolute;top:calc((14px - 20px) / 2);top:calc((var(--vkui--size_switch_height--regular) - var(--vkui--size_switch_pin--regular)) / 2);width:20px;width:var(--vkui--size_switch_pin--regular)}.vkuiSwitch--sizeY-compact .vkuiSwitch__pseudo:before{height:18px;height:var(--vkui--size_switch_pin--compact);left:calc((12px - 18px) / 2);left:calc((var(--vkui--size_switch_height--compact) - var(--vkui--size_switch_pin--compact)) / 2);top:calc((12px - 18px) / 2);top:calc((var(--vkui--size_switch_height--compact) - var(--vkui--size_switch_pin--compact)) / 2);width:18px;width:var(--vkui--size_switch_pin--compact)}@media (max-height:414.9px),(pointer:fine) and (min-width:768px){.vkuiSwitch--sizeY-none .vkuiSwitch__pseudo:before{height:18px;height:var(--vkui--size_switch_pin--compact);left:calc((12px - 18px) / 2);left:calc((var(--vkui--size_switch_height--compact) - var(--vkui--size_switch_pin--compact)) / 2);top:calc((12px - 18px) / 2);top:calc((var(--vkui--size_switch_height--compact) - var(--vkui--size_switch_pin--compact)) / 2);width:18px;width:var(--vkui--size_switch_pin--compact)}}.vkuiSwitch__self:checked+.vkuiSwitch__pseudo:before{background:#2688eb;background:var(--vkui--color_icon_accent);transform:translateX(calc(34px - 14px));transform:translateX(calc(var(--vkui--size_switch_width--regular) - var(--vkui--size_switch_height--regular)))}.vkuiSwitch__pseudo:after{background:rgba(0,0,0,.24);background:var(--vkui--color_icon_tertiary_alpha);border-radius:calc(34px / 2);border-radius:calc(var(--vkui--size_switch_width--regular) / 2);content:"";display:block;height:14px;height:var(--vkui--size_switch_height--regular);width:34px;width:var(--vkui--size_switch_width--regular)}.vkuiSwitch--sizeY-compact .vkuiSwitch__pseudo:after{border-radius:calc(32px / 2);border-radius:calc(var(--vkui--size_switch_width--compact) / 2);height:12px;height:var(--vkui--size_switch_height--compact);width:32px;width:var(--vkui--size_switch_width--compact)}@media (max-height:414.9px),(pointer:fine) and (min-width:768px){.vkuiSwitch--sizeY-none .vkuiSwitch__pseudo:after{border-radius:calc(32px / 2);border-radius:calc(var(--vkui--size_switch_width--compact) / 2);height:12px;height:var(--vkui--size_switch_height--compact);width:32px;width:var(--vkui--size_switch_width--compact)}}.vkuiSwitch__self:checked+.vkuiSwitch__pseudo:after{background:#2688eb;background:var(--vkui--color_icon_accent);opacity:.48}.vkuiSwitch--sizeY-compact .vkuiSwitch__self:checked+.vkuiSwitch__pseudo:before{transform:translateX(calc(32px - 12px));transform:translateX(calc(var(--vkui--size_switch_width--compact) - var(--vkui--size_switch_height--compact)))}@media (max-height:414.9px),(pointer:fine) and (min-width:768px){.vkuiSwitch--sizeY-none .vkuiSwitch__self:checked+.vkuiSwitch__pseudo:before{transform:translateX(calc(32px - 12px));transform:translateX(calc(var(--vkui--size_switch_width--compact) - var(--vkui--size_switch_height--compact)))}}.vkuiSwitch__self[disabled]+.vkuiSwitch__pseudo{opacity:.4;opacity:var(--vkui--opacity_disable)}.vkuiSwitch--ios .vkuiSwitch__pseudo:before{box-shadow:0 3px 8px rgba(0,0,0,.15),0 3px 1px rgba(0,0,0,.06),inset 0 0 0 .5px rgba(0,0,0,.04)}.vkuiSwitch--ios .vkuiSwitch__pseudo:before,.vkuiSwitch--ios .vkuiSwitch__self:checked+.vkuiSwitch__pseudo:before{background:#fff;background:var(--vkui_internal--white)}.vkuiSwitch--ios .vkuiSwitch__pseudo:after{background:#e1e3e6;background:var(--vkui--color_track_background)}.vkuiSwitch--ios .vkuiSwitch__self:checked+.vkuiSwitch__pseudo:after{opacity:1}@media (prefers-reduced-motion:no-preference){.vkuiSwitch__pseudo:after{transition:background-color .1s ease}.vkuiSwitch__pseudo:before{transition:transform .1s ease}.vkuiSwitch--ios .vkuiSwitch__pseudo:after{transition:background-color .2s ease}.vkuiSwitch--ios .vkuiSwitch__pseudo:before{transition:transform .2s cubic-bezier(.36,-.24,.26,1.32)}}.vkuiSimpleCell__after>.vkuiSwitch{margin-left:12px}.vkuiSimpleCell>.vkuiSwitch:first-child{margin-right:12px}
|
|
108
108
|
|
|
109
|
-
.vkuiInput{font-size:16px;line-height:20px;position:relative}.vkuiInput--align-center .vkuiInput__el{text-align:center}.vkuiInput--align-right .vkuiInput__el{text-align:right}.vkuiInput__el{align-self:stretch;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;border-radius:inherit;box-shadow:none;box-sizing:border-box;color:#000;color:var(--vkui--color_text_primary);display:block;font-family:inherit;font-size:16px;font-size:var(--vkui--font_text--font_size--regular);font-weight:400;font-weight:var(--vkui--font_text--font_weight--regular);line-height:20px;line-height:var(--vkui--font_text--line_height--regular);margin:0;padding:0 12px;position:relative;
|
|
109
|
+
.vkuiInput{font-size:16px;line-height:20px;position:relative}.vkuiInput--align-center .vkuiInput__el{text-align:center}.vkuiInput--align-right .vkuiInput__el{text-align:right}.vkuiInput__el{align-self:stretch;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;border-radius:inherit;box-shadow:none;box-sizing:border-box;color:#000;color:var(--vkui--color_text_primary);display:block;font-family:inherit;font-size:16px;font-size:var(--vkui--font_text--font_size--regular);font-weight:400;font-weight:var(--vkui--font_text--font_weight--regular);line-height:20px;line-height:var(--vkui--font_text--line_height--regular);margin:0;padding:0 12px;position:relative;width:100%;z-index:1;z-index:var(--vkui_internal--z_index_form_field_element)}.vkuiInput--sizeY-compact .vkuiInput__el{font-size:15px;font-size:var(--vkui--font_text--font_size--compact);line-height:20px;line-height:var(--vkui--font_text--line_height--compact)}.vkuiInput--hasBefore .vkuiInput__el{padding-left:0}.vkuiInput--hasAfter .vkuiInput__el{padding-right:0}@media (max-height:414.9px),(pointer:fine) and (min-width:768px){.vkuiInput--sizeY-none .vkuiInput__el{font-size:15px;font-size:var(--vkui--font_text--font_size--compact);line-height:20px;line-height:var(--vkui--font_text--line_height--compact)}}.vkuiInput__el:disabled{opacity:.64;opacity:var(--vkui--opacity_disable_accessibility)}.vkuiInput__el::-webkit-input-placeholder{color:#818c99;color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-moz-placeholder{color:#818c99;color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::-ms-input-placeholder{color:#818c99;color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el::placeholder{color:#818c99;color:var(--vkui--color_text_secondary);opacity:1}.vkuiInput__el:disabled::-webkit-input-placeholder{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-moz-placeholder{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::-ms-input-placeholder{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiInput__el:disabled::placeholder{color:#818c99;color:var(--vkui--color_text_secondary)}
|
|
110
110
|
.vkuiChip{background:#fff;background:var(--vkui--color_background_content);border:1px solid rgba(0,0,0,.08);border:var(--vkui_internal--thin_border) solid var(--vkui--color_image_border_alpha);border-radius:6px;box-sizing:border-box;display:inline-block;height:32px}.vkuiChip__in{align-items:center;display:flex;height:100%;padding:0 8px;position:relative}.vkuiChip--removable .vkuiChip__in{padding-right:0}.vkuiChip__content{color:#000;color:var(--vkui--color_text_primary);display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vkuiChip__remove{align-content:center;align-items:center;background:transparent;border:none;border-radius:2px;box-sizing:border-box;color:#99a2ad;color:var(--vkui--color_icon_secondary);cursor:pointer;display:flex;flex-grow:0;flex-shrink:0;height:28px;justify-content:center;margin:-1px;padding:6px;position:relative;transform:translateX(-1px);width:28px}.vkuiChip__before{margin-right:6px}.vkuiChip__after{margin-left:6px}.vkuiChip--sizeY-compact{height:28px}@media (max-height:414.9px),(pointer:fine) and (min-width:768px){.vkuiChip--sizeY-none{height:28px}}
|
|
111
111
|
.vkuiChipsInput{max-width:100%}
|
|
112
112
|
.vkuiChipsInputBase{display:flex;flex-grow:1;flex-shrink:1;flex-wrap:wrap;max-width:100%;overflow:hidden;padding:3px;position:relative;z-index:1;z-index:var(--vkui_internal--z_index_form_field_element)}.vkuiChipsInputBase__chip{margin:2px;max-width:calc(100% - 4px)}.vkuiChipsInputBase__label{display:flex;flex:1;flex-direction:column;margin:2px 2px 2px 10px}.vkuiChipsInputBase__el{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;box-shadow:none;color:#000;color:var(--vkui--color_text_primary);font-family:inherit;font-size:15px;line-height:26px;margin-bottom:2px;padding:0;position:relative;width:100%}.vkuiChipsInputBase__el:focus{min-width:64px}.vkuiChipsInputBase__el::-ms-clear{display:none}.vkuiChipsInputBase__el:disabled{opacity:.64;opacity:var(--vkui--opacity_disable_accessibility)}.vkuiChipsInputBase__el::-webkit-input-placeholder{color:#818c99;color:var(--vkui--color_text_secondary);opacity:1}.vkuiChipsInputBase__el::-moz-placeholder{color:#818c99;color:var(--vkui--color_text_secondary);opacity:1}.vkuiChipsInputBase__el::-ms-input-placeholder{color:#818c99;color:var(--vkui--color_text_secondary);opacity:1}.vkuiChipsInputBase__el::placeholder{color:#818c99;color:var(--vkui--color_text_secondary);opacity:1}.vkuiChipsInputBase__el:disabled::-webkit-input-placeholder{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiChipsInputBase__el:disabled::-moz-placeholder{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiChipsInputBase__el:disabled::-ms-input-placeholder{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiChipsInputBase__el:disabled::placeholder{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiChipsInputBase__el[readonly]{cursor:default}.vkuiChipsInputBase--sizeY-compact{padding:1px}
|