@vkontakte/vkui 5.4.2 → 5.4.3
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/README.md +2 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +3 -20
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +16 -2
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.d.ts +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +4 -2
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +25 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -1
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/Panel/Panel.js +4 -4
- package/dist/cjs/components/Panel/Panel.js.map +1 -1
- package/dist/cjs/components/PanelHeader/PanelHeader.js +1 -1
- package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cjs/components/WriteBar/WriteBar.js +14 -2
- package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cjs/hooks/useTodayDate.js +30 -7
- package/dist/cjs/hooks/useTodayDate.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +3 -20
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +16 -2
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.d.ts +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js +4 -2
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +25 -1
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/NativeSelect/NativeSelect.js +2 -1
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/Panel/Panel.js +4 -4
- package/dist/components/Panel/Panel.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js +1 -1
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/WriteBar/WriteBar.js +14 -2
- package/dist/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/components.css +3 -3
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +133 -48
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +3 -17
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +15 -2
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.d.ts +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +2 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +22 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -1
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/Panel/Panel.js +4 -4
- package/dist/cssm/components/Panel/Panel.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.module.css +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.js +15 -2
- package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
- package/dist/cssm/components/WriteBar/WriteBar.module.css +13 -7
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.module.css +9 -1
- package/dist/cssm/hooks/useTodayDate.js +31 -8
- package/dist/cssm/hooks/useTodayDate.js.map +1 -1
- package/dist/hooks/useTodayDate.js +31 -8
- package/dist/hooks/useTodayDate.js.map +1 -1
- package/dist/vkui.css +3 -3
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +133 -48
- package/package.json +3 -5
- package/docs/assets/assets/vkui-logo-dark.svg +0 -5
- package/docs/assets/assets/vkui-logo-light.svg +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { setTransformStyle } from '../../lib/styles';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { ModalRootWithDOMProps, ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling = false;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === Platform.IOS ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.props.getModalState(enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.props.onEntered(enteringModal);\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n this.window.removeEventListener('touchmove', this.preventTouch, {\n // @ts-expect-error: TS2769 В интерфейсе EventListenerOptions нет поля passive\n passive: false,\n });\n } else {\n this.window.addEventListener('touchmove', this.preventTouch, {\n passive: false,\n });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === ModalType.PAGE) {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === ModalType.PAGE && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState?.innerElement?.removeEventListener(transitionEvent.name as string, onceHandler);\n eventHandler();\n };\n\n modalState?.innerElement?.addEventListener(transitionEvent.name as string, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.webviewType === WebviewType.VKAPPS &&\n styles['ModalRoot--vkapps'],\n touchDown &&\n classNames(styles['ModalRoot--touched'], 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles['ModalRoot--switching'], 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => {\n const modalState = this.props.getModalState(modalId);\n if (modalState) {\n modalState.modalElement = e;\n }\n }}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case ModalType.CARD:\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement?.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (\n (modalState.expandable && translateY > (prevTranslateY ?? 100)) ||\n modalState.settlingHeight === 100\n ) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n"],"names":["React","classNames","clamp","withContext","withPlatform","withDOM","getNavId","Platform","setTransformStyle","transitionEvent","rubber","warnOnce","ConfigProviderContext","WebviewType","FocusTrap","Touch","TouchRootContext","ModalRootContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","ModalType","withModalManager","warn","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","props","documentScrolling","maskElementRef","viewportRef","createRef","maskAnimationFrame","undefined","modalRootContext","frameIds","restoreFocusTo","preventTouch","event","originalEvent","preventDefault","updateModalHeight","modalState","getModalState","activeModal","type","PAGE","enteringModal","waitTransitionFinish","requestAnimationFrame","checkPageContentHeight","onTouchMove","e","exitingModal","onPageTouchMove","CARD","onCardTouchMove","onTouchEnd","onPageTouchEnd","onCardTouchEnd","onScroll","target","contentElement","contains","contentScrolled","contentScrollStopTimeout","clearTimeout","setTimeout","state","touchDown","dragging","registerModal","Object","id","data","assign","onClose","onExit","isInsideModal","timeout","platform","IOS","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","closeModal","enteringState","onEnter","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","activeElement","focus","enabled","passive","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","setState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","setMaskOpacity","shiftY","isY","current","stopPropagation","collapsed","expanded","touchStartContentScrollTop","scrollTop","touchMovePositive","headerElement","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","offsetHeight","Math","max","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","hidden","eventHandler","supported","onceHandler","name","percent","frameId","cancelAnimationFrame","forceOpacity","history","opacity","toString","render","Provider","value","className","configProvider","webviewType","VKAPPS","onMove","onEnd","div","onClick","ref","map","Modal","modalId","_modalState","isPage","key","getRootRef","restoreFocus","Component","ModalRootTouch","initModal","initCardModal","process","env","NODE_ENV","contentHeight","firstElementChild","prevTranslateY","clientHeight","shiftHalf","visiblePart","headerHeight","height","parentElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ModalRoot/ModalRoot.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { withContext } from '../../hoc/withContext';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { setTransformStyle } from '../../lib/styles';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { rubber } from '../../lib/touch';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ConfigProviderContext, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { ModalRootContext, ModalRootContextInterface } from './ModalRootContext';\nimport { MODAL_PAGE_DEFAULT_PERCENT_HEIGHT } from './constants';\nimport { ModalRootWithDOMProps, ModalsStateEntry, ModalType, TranslateRange } from './types';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nfunction numberInRange(number: number, range: TranslateRange | undefined) {\n if (!range) {\n return false;\n }\n return number >= range[0] && number <= range[1];\n}\n\nfunction rangeTranslate(number: number) {\n return clamp(number, 0, 98);\n}\n\ninterface ModalRootState {\n touchDown?: boolean;\n dragging?: boolean;\n modalOpenedLog: string[];\n}\n\nclass ModalRootTouchComponent extends React.Component<\n ModalRootWithDOMProps & DOMProps & ModalTransitionProps,\n ModalRootState\n> {\n constructor(props: ModalRootWithDOMProps & ModalTransitionProps) {\n super(props);\n this.state = {\n touchDown: false,\n dragging: false,\n modalOpenedLog: [],\n };\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: this.updateModalHeight,\n registerModal: ({ id, ...data }) => Object.assign(this.props.getModalState(id) ?? {}, data),\n onClose: () => this.props.onExit(),\n isInsideModal: true,\n };\n\n this.frameIds = {};\n }\n\n private documentScrolling = false;\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private readonly viewportRef = React.createRef<HTMLDivElement>();\n private maskAnimationFrame: number | undefined = undefined;\n private readonly modalRootContext: ModalRootContextInterface;\n private readonly frameIds: {\n [index: string]: number;\n };\n private restoreFocusTo: HTMLElement | undefined | null = undefined;\n\n get timeout(): number {\n return this.props.platform === Platform.IOS ? 400 : 320;\n }\n\n get document(): Document {\n return this.props.document as Document;\n }\n\n get window(): Window {\n return this.props.window as Window;\n }\n\n getModals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n componentDidMount() {\n // Отслеживаем изменение размеров viewport\n this.window?.addEventListener('resize', this.updateModalHeight, false);\n }\n\n componentWillUnmount() {\n this.toggleDocumentScrolling(true);\n this.window.removeEventListener('resize', this.updateModalHeight, false);\n }\n\n componentDidUpdate(prevProps: ModalRootWithDOMProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.props.getModalState(enteringModal);\n this.props.onEnter();\n this.waitTransitionFinish(enteringState, () => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = '';\n }\n this.props.onEntered(enteringModal);\n });\n\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transitionDelay = this.props.delayEnter\n ? `${this.timeout}ms`\n : '';\n this.animateTranslate(enteringState, enteringState.translateY);\n }\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n\n this.toggleDocumentScrolling(!this.props.activeModal && !this.props.exitingModal);\n }\n\n /* Отключает скролл документа */\n toggleDocumentScrolling(enabled: boolean) {\n if (this.documentScrolling === enabled) {\n return;\n }\n this.documentScrolling = enabled;\n\n if (enabled) {\n // Здесь нужен последний аргумент с такими же параметрами, потому что\n // некоторые браузеры на странных вендорах типа Meizu не удаляют обработчик.\n // https://github.com/VKCOM/VKUI/issues/444\n this.window.removeEventListener('touchmove', this.preventTouch, {\n // @ts-expect-error: TS2769 В интерфейсе EventListenerOptions нет поля passive\n passive: false,\n });\n } else {\n this.window.addEventListener('touchmove', this.preventTouch, {\n passive: false,\n });\n }\n }\n\n preventTouch = (event: any) => {\n if (!event) {\n return false;\n }\n while (event.originalEvent) {\n event = event.originalEvent;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n return false;\n };\n\n checkPageContentHeight() {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE && modalState?.modalElement) {\n const prevModalState = { ...modalState };\n initPageModal(modalState);\n const currentModalState = { ...modalState };\n\n let needAnimate = false;\n\n if (prevModalState.expandable === currentModalState.expandable) {\n if (prevModalState.translateYFrom !== currentModalState.translateYFrom) {\n needAnimate = true;\n }\n } else {\n needAnimate = true;\n }\n\n if (needAnimate) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n }\n }\n\n updateModalHeight = () => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState && modalState.type === ModalType.PAGE) {\n if (this.props.enteringModal) {\n this.waitTransitionFinish(modalState, () => {\n requestAnimationFrame(() => this.checkPageContentHeight());\n });\n } else {\n requestAnimationFrame(() => this.checkPageContentHeight());\n }\n }\n };\n\n closeModal(id: string) {\n // Сбрасываем состояния, которые могут помешать закрытию модального окна\n this.setState({ touchDown: false });\n\n const prevModalState = this.props.getModalState(id);\n\n if (!prevModalState) {\n id && warn(`closeActiveModal: модальное окно (страница) ${id} не существует`, 'error');\n return;\n }\n if (!this.state.modalOpenedLog.length) {\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, id],\n }));\n }\n const nextModalState = this.props.getModalState(this.props.activeModal);\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n\n const prevIsPage = !!prevModalState && prevModalState.type === ModalType.PAGE;\n this.waitTransitionFinish(prevModalState, () => this.props.onExited(id));\n const exitTranslate =\n prevIsPage &&\n nextIsPage &&\n (prevModalState.translateY ?? 0) <= (nextModalState?.translateYFrom ?? 0) &&\n !this.props.isBack\n ? (nextModalState?.translateYFrom ?? 0) + 10\n : 100;\n this.animateTranslate(prevModalState, exitTranslate);\n\n if (!nextModalState) {\n // NOTE: was only for clean exit\n this.setMaskOpacity(prevModalState, 0);\n this.setState({ modalOpenedLog: [] });\n prevModalState.translateY = undefined;\n } else if (nextModalState.id && !this.state.modalOpenedLog.includes(nextModalState.id)) {\n nextModalState.translateY = undefined;\n this.setState((prevState) => ({\n modalOpenedLog: [...prevState.modalOpenedLog, nextModalState.id!],\n }));\n }\n }\n\n onTouchMove = (e: TouchEvent) => {\n if (this.props.exitingModal) {\n return;\n }\n const modalState = this.props.getModalState(this.props.activeModal);\n if (!modalState) {\n return;\n }\n\n if (modalState.type === ModalType.PAGE) {\n return this.onPageTouchMove(e, modalState);\n }\n\n if (modalState.type === ModalType.CARD) {\n return this.onCardTouchMove(e, modalState);\n }\n };\n\n onPageTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { shiftY, originalEvent } = event;\n const target = originalEvent.target as HTMLElement;\n\n if (!event.isY) {\n if (this.viewportRef.current?.contains(target)) {\n originalEvent.preventDefault();\n }\n return;\n }\n\n if (!modalState.innerElement?.contains(target)) {\n return originalEvent.preventDefault();\n }\n\n originalEvent.stopPropagation();\n\n const { expandable, contentScrolled, collapsed, expanded } = modalState;\n\n if (!this.state.touchDown) {\n modalState.touchStartContentScrollTop = modalState.contentElement?.scrollTop ?? 0;\n this.setState({ touchDown: true });\n }\n\n if (contentScrolled) {\n return;\n }\n\n if (modalState.touchMovePositive === null) {\n modalState.touchMovePositive = shiftY > 0;\n }\n\n if (\n !modalState.expandable ||\n collapsed ||\n (expanded && modalState.touchMovePositive && modalState.touchStartContentScrollTop === 0) ||\n modalState.headerElement?.contains(target)\n ) {\n originalEvent.preventDefault();\n\n if ((!expandable && shiftY < 0) || !this.window) {\n return;\n }\n\n !this.state.dragging && this.setState({ dragging: true });\n\n const shiftYPercent = (shiftY / this.window.innerHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 0.8, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = rangeTranslate((modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onCardTouchMove(event: TouchEvent, modalState: ModalsStateEntry) {\n const { originalEvent, shiftY } = event;\n const target = originalEvent.target as HTMLElement;\n if (modalState.innerElement?.contains(target)) {\n if (!this.state.touchDown) {\n this.setState({ touchDown: true, dragging: true });\n }\n\n const shiftYPercent = (shiftY / modalState.innerElement.offsetHeight) * 100;\n const shiftYCurrent = rubber(shiftYPercent, 72, 1.2, this.props.platform !== Platform.IOS);\n\n modalState.touchShiftYPercent = shiftYPercent;\n modalState.translateYCurrent = Math.max(0, (modalState.translateY ?? 0) + shiftYCurrent);\n\n this.animateTranslate(modalState, modalState.translateYCurrent);\n this.setMaskOpacity(modalState);\n }\n }\n\n onTouchEnd = (e: TouchEvent) => {\n const modalState = this.props.getModalState(this.props.activeModal);\n\n if (modalState?.type === ModalType.PAGE) {\n return this.onPageTouchEnd(e, modalState);\n }\n\n if (modalState?.type === ModalType.CARD) {\n return this.onCardTouchEnd(e, modalState);\n }\n };\n\n onPageTouchEnd(event: TouchEvent, modalState: ModalsStateEntry) {\n const { startY, shiftY } = event;\n\n modalState.contentScrolled = false;\n modalState.touchMovePositive = null;\n\n let setStateCallback;\n\n if (this.state.dragging && this.window) {\n const shiftYEndPercent = ((startY + shiftY) / this.window.innerHeight) * 100;\n\n let translateY = modalState.translateYCurrent ?? 0;\n const expectTranslateY =\n (translateY / event.duration) *\n 240 *\n 0.6 *\n ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = rangeTranslate(translateY + expectTranslateY);\n\n if (modalState.settlingHeight !== 100) {\n if (numberInRange(translateY, modalState.expandedRange)) {\n translateY = modalState.expandedRange?.[0] ?? 0;\n } else if (numberInRange(translateY, modalState.collapsedRange)) {\n translateY = modalState.translateYFrom ?? 0;\n } else if (numberInRange(translateY, modalState.hiddenRange)) {\n translateY = 100;\n } else {\n translateY = modalState.translateYFrom ?? 0;\n }\n } else {\n if (numberInRange(translateY, [0, 25])) {\n translateY = 0;\n } else {\n translateY = 100;\n }\n }\n\n if (translateY !== 100 && shiftYEndPercent >= 75) {\n translateY = 100;\n }\n\n modalState.translateY = translateY;\n modalState.translateYCurrent = translateY;\n modalState.collapsed = translateY > 0 && translateY < shiftYEndPercent;\n modalState.expanded = translateY === 0;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onCardTouchEnd({ duration }: TouchEvent, modalState: ModalsStateEntry) {\n let setStateCallback;\n\n if (this.state.dragging) {\n let translateY = modalState.translateYCurrent ?? 0;\n\n const expectTranslateY =\n (translateY / duration) * 240 * 0.6 * ((modalState.touchShiftYPercent ?? 0) < 0 ? -1 : 1);\n translateY = Math.max(0, translateY + expectTranslateY);\n\n if (translateY >= 30) {\n translateY = 100;\n } else {\n translateY = 0;\n }\n\n modalState.translateY = translateY;\n modalState.hidden = translateY === 100;\n\n if (modalState.hidden) {\n this.props.onExit();\n }\n\n setStateCallback = () => {\n if (!modalState.hidden) {\n this.animateTranslate(modalState, modalState.translateY);\n }\n\n this.setMaskOpacity(modalState);\n };\n }\n\n this.setState(\n {\n touchDown: false,\n dragging: false,\n },\n setStateCallback,\n );\n }\n\n onScroll = (e: React.SyntheticEvent) => {\n const activeModal = this.props.activeModal;\n\n const target = e.target as HTMLElement;\n\n if (!activeModal) {\n return;\n }\n const modalState = this.props.getModalState(activeModal);\n if (modalState?.type === ModalType.PAGE && modalState?.contentElement?.contains(target)) {\n modalState.contentScrolled = true;\n\n if (modalState.contentScrollStopTimeout) {\n clearTimeout(modalState.contentScrollStopTimeout);\n }\n\n modalState.contentScrollStopTimeout = setTimeout(() => {\n if (modalState.contentScrolled) {\n modalState.contentScrolled = false;\n }\n }, 250);\n }\n };\n\n waitTransitionFinish(modalState: ModalsStateEntry | undefined, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState?.innerElement?.removeEventListener(transitionEvent.name as string, onceHandler);\n eventHandler();\n };\n\n modalState?.innerElement?.addEventListener(transitionEvent.name as string, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /**\n * Анимирует сдвиг модалки\n *\n * @param {ModalsStateEntry} modalState\n * @param {number} percent Процент сдвига: 0 – полностью открыта, 100 – полностью закрыта\n */\n animateTranslate(modalState: ModalsStateEntry, percent: number | undefined) {\n const frameId = `animateTranslateFrame${modalState.id}`;\n\n cancelAnimationFrame(this.frameIds[frameId]);\n\n this.frameIds[frameId] = requestAnimationFrame(() => {\n setTransformStyle(modalState.innerElement, `translate3d(0, ${percent}%, 0)`);\n });\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number | null = null) {\n if (forceOpacity === null && this.props.history?.[0] !== modalState.id) {\n return;\n }\n if (this.maskAnimationFrame) {\n cancelAnimationFrame(this.maskAnimationFrame);\n }\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n this.maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n }\n\n render() {\n const { activeModal, exitingModal, enteringModal } = this.props;\n const { touchDown, dragging } = this.state;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <TouchRootContext.Provider value={true}>\n <ModalRootContext.Provider value={this.modalRootContext}>\n <Touch\n className={classNames(\n styles['ModalRoot'],\n this.props.configProvider?.webviewType === WebviewType.VKAPPS &&\n styles['ModalRoot--vkapps'],\n touchDown &&\n classNames(styles['ModalRoot--touched'], 'vkuiInternalModalRoot--touched'),\n !!(enteringModal || exitingModal) &&\n classNames(styles['ModalRoot--switching'], 'vkuiInternalModalRoot--switching'),\n )}\n onMove={this.onTouchMove}\n onEnd={this.onTouchEnd}\n onScroll={this.onScroll}\n >\n <div\n className={styles['ModalRoot__mask']}\n onClick={this.props.onExit}\n ref={this.maskElementRef}\n />\n <div className={styles['ModalRoot__viewport']} ref={this.viewportRef}>\n {this.getModals().map((Modal) => {\n const modalId = getNavId(Modal.props, warn);\n const _modalState = this.props.getModalState(modalId);\n if ((modalId !== activeModal && modalId !== exitingModal) || !_modalState) {\n return null;\n }\n const modalState = { ..._modalState };\n\n const isPage = modalState.type === ModalType.PAGE;\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n key={key}\n getRootRef={(e) => {\n const modalState = this.props.getModalState(modalId);\n if (modalState) {\n modalState.modalElement = e;\n }\n }}\n onClose={this.props.onExit}\n timeout={this.timeout}\n className={classNames(\n styles['ModalRoot__modal'],\n\n dragging && 'vkuiInternalModalRoot__modal--dragging',\n\n isPage && modalState.expandable && 'vkuiInternalModalRoot__modal--expandable',\n isPage && modalState.collapsed && 'vkuiInternalModalRoot__modal--collapsed',\n )}\n restoreFocus={false}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </Touch>\n </ModalRootContext.Provider>\n </TouchRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootTouch = withContext(\n withPlatform(\n withDOM<ModalRootWithDOMProps>(withModalManager(initModal)(ModalRootTouchComponent)),\n ),\n ConfigProviderContext,\n 'configProvider',\n);\n\n/**\n * Инициализирует модалку перед анимацией открытия\n */\nfunction initModal(modalState: ModalsStateEntry) {\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || MODAL_PAGE_DEFAULT_PERCENT_HEIGHT;\n return initPageModal(modalState);\n case ModalType.CARD:\n return initCardModal(modalState);\n default:\n process.env.NODE_ENV === 'development' &&\n warn(`initActiveModal: modalState.type=\"${modalState.type}\" не поддерживается`, 'error');\n }\n}\n\nfunction initPageModal(modalState: ModalsStateEntry) {\n const { contentElement } = modalState;\n const contentHeight = (contentElement?.firstElementChild as HTMLElement).offsetHeight;\n\n let prevTranslateY = modalState.translateY;\n\n modalState.expandable =\n contentHeight > (contentElement?.clientHeight ?? 0) || modalState.settlingHeight === 100;\n\n let collapsed = false;\n let expanded = false;\n let translateYFrom;\n let translateY;\n let expandedRange: TranslateRange;\n let collapsedRange: TranslateRange;\n let hiddenRange: TranslateRange;\n\n if (modalState.expandable) {\n translateYFrom = 100 - (modalState.settlingHeight ?? 0);\n\n const shiftHalf = translateYFrom / 2;\n const visiblePart = 100 - translateYFrom;\n\n expandedRange = [0, shiftHalf];\n collapsedRange = [shiftHalf, translateYFrom + visiblePart / 4];\n hiddenRange = [translateYFrom + visiblePart / 4, 100];\n\n collapsed = translateYFrom > 0;\n expanded = translateYFrom <= 0;\n translateY = translateYFrom;\n } else {\n const headerHeight = modalState.headerElement?.offsetHeight ?? 0;\n const height = contentHeight + headerHeight;\n\n translateYFrom =\n 100 - (height / (modalState.innerElement?.parentElement?.offsetHeight ?? 0)) * 100;\n translateY = translateYFrom;\n\n expandedRange = [translateY, translateY + 25];\n collapsedRange = [translateY + 25, translateY + 25];\n hiddenRange = [translateY + 25, translateY + 100];\n }\n\n // Если модалка может открываться на весь экран, и новый сдвиг больше предыдущего, то откроем её на весь экран\n if (\n (modalState.expandable && translateY > (prevTranslateY ?? 100)) ||\n modalState.settlingHeight === 100\n ) {\n translateY = 0;\n }\n\n // Если модалка уже раскрыта обновляем состояния\n if (translateY === 0) {\n expanded = true;\n collapsed = false;\n }\n\n modalState.expandedRange = expandedRange;\n modalState.collapsedRange = collapsedRange;\n modalState.hiddenRange = hiddenRange;\n modalState.translateY = translateY;\n modalState.translateYFrom = translateYFrom;\n modalState.collapsed = collapsed;\n modalState.expanded = expanded;\n}\n\nfunction initCardModal(modalState: ModalsStateEntry) {\n modalState.translateY = 0;\n}\n"],"names":["React","classNames","clamp","withContext","withPlatform","withDOM","getNavId","Platform","setTransformStyle","transitionEvent","rubber","warnOnce","ConfigProviderContext","WebviewType","FocusTrap","Touch","TouchRootContext","ModalRootContext","MODAL_PAGE_DEFAULT_PERCENT_HEIGHT","ModalType","withModalManager","warn","numberInRange","number","range","rangeTranslate","ModalRootTouchComponent","props","documentScrolling","maskElementRef","viewportRef","createRef","maskAnimationFrame","undefined","modalRootContext","frameIds","restoreFocusTo","preventTouch","event","originalEvent","preventDefault","updateModalHeight","modalState","getModalState","activeModal","type","PAGE","enteringModal","waitTransitionFinish","requestAnimationFrame","checkPageContentHeight","onTouchMove","e","exitingModal","onPageTouchMove","CARD","onCardTouchMove","onTouchEnd","onPageTouchEnd","onCardTouchEnd","onScroll","target","contentElement","contains","contentScrolled","contentScrollStopTimeout","clearTimeout","setTimeout","state","touchDown","dragging","modalOpenedLog","registerModal","Object","id","data","assign","onClose","onExit","isInsideModal","timeout","platform","IOS","document","window","getModals","Children","toArray","children","componentDidMount","addEventListener","componentWillUnmount","toggleDocumentScrolling","removeEventListener","componentDidUpdate","prevProps","closeModal","enteringState","onEnter","innerElement","style","transitionDelay","onEntered","delayEnter","animateTranslate","translateY","activeElement","focus","enabled","passive","modalElement","prevModalState","initPageModal","currentModalState","needAnimate","expandable","translateYFrom","setState","length","prevState","nextModalState","nextIsPage","prevIsPage","onExited","exitTranslate","isBack","setMaskOpacity","includes","shiftY","isY","current","stopPropagation","collapsed","expanded","touchStartContentScrollTop","scrollTop","touchMovePositive","headerElement","shiftYPercent","innerHeight","shiftYCurrent","touchShiftYPercent","translateYCurrent","offsetHeight","Math","max","startY","setStateCallback","shiftYEndPercent","expectTranslateY","duration","settlingHeight","expandedRange","collapsedRange","hiddenRange","hidden","eventHandler","supported","onceHandler","name","percent","frameId","cancelAnimationFrame","forceOpacity","history","opacity","toString","render","Provider","value","className","configProvider","webviewType","VKAPPS","onMove","onEnd","div","onClick","ref","map","Modal","modalId","_modalState","isPage","key","getRootRef","restoreFocus","Component","ModalRootTouch","initModal","initCardModal","process","env","NODE_ENV","contentHeight","firstElementChild","prevTranslateY","clientHeight","shiftHalf","visiblePart","headerHeight","height","parentElement"],"mappings":"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"}
|
|
@@ -76,7 +76,8 @@ var sizeYClassNames = _define_property({
|
|
|
76
76
|
}), placeholder && /*#__PURE__*/ React.createElement("option", {
|
|
77
77
|
value: ""
|
|
78
78
|
}, placeholder), children), /*#__PURE__*/ React.createElement("div", {
|
|
79
|
-
className: "vkuiSelect__container"
|
|
79
|
+
className: "vkuiSelect__container",
|
|
80
|
+
"aria-hidden": true
|
|
80
81
|
}, /*#__PURE__*/ React.createElement(SelectTypography, {
|
|
81
82
|
className: "vkuiSelect__title",
|
|
82
83
|
selectType: selectType
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { SizeType } from '../../lib/adaptivity';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n [SizeType.COMPACT]: styles['Select--sizeY-compact'],\n};\n\nexport interface NativeSelectProps\n extends React.SelectHTMLAttributes<HTMLSelectElement>,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLLabelElement>,\n HasAlign,\n Pick<FormFieldProps, 'before' | 'status'> {\n placeholder?: string;\n multiline?: boolean;\n selectType?: SelectType;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n}\n\nexport interface SelectState {\n value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n title?: string;\n notSelected?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/NativeSelect\n */\nconst NativeSelect = ({\n style,\n defaultValue = '',\n align,\n placeholder,\n children,\n className,\n getRef,\n getRootRef,\n disabled,\n multiline,\n selectType = 'default',\n status,\n icon = <DropdownIcon />,\n before,\n onChange: onChangeProp,\n value: valueProp,\n ...restProps\n}: NativeSelectProps) => {\n const [title, setTitle] = React.useState('');\n const [empty, setEmpty] = React.useState(false);\n const [value, onChange] = useEnsuredControl({\n defaultValue,\n disabled,\n onChange: onChangeProp,\n value: valueProp,\n });\n const selectRef = useExternRef(getRef);\n const { sizeY = 'none' } = useAdaptivity();\n\n useIsomorphicLayoutEffect(() => {\n const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setEmpty(selectedOption.value === '' && placeholder != null);\n }\n }, [value, children]);\n\n return (\n <FormField\n Component=\"label\"\n className={classNames(\n styles['Select'],\n 'vkuiInternalNativeSelect',\n before && styles['Select--hasBefore'],\n empty && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n className,\n )}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n before={before}\n after={icon}\n status={status}\n >\n <select\n {...restProps}\n disabled={disabled}\n className={styles['Select__el']}\n onChange={onChange}\n value={value}\n ref={selectRef}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {children}\n </select>\n <div className={styles['Select__container']}>\n <SelectTypography className={styles['Select__title']} selectType={selectType}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n\nexport { NativeSelect };\n"],"names":["React","classNames","useAdaptivity","useEnsuredControl","useExternRef","SizeType","useIsomorphicLayoutEffect","DropdownIcon","FormField","SelectTypography","sizeYClassNames","none","COMPACT","NativeSelect","style","defaultValue","align","placeholder","children","className","getRef","getRootRef","disabled","multiline","selectType","status","icon","before","onChange","onChangeProp","value","valueProp","restProps","useState","title","setTitle","empty","setEmpty","selectRef","sizeY","selectedOption","current","options","selectedIndex","text","Component","REGULAR","after","select","ref","option","div"],"mappings":";;;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,yBAAyB,QAAQ,sCAAsC;AAEhF,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAwB,yBAAyB;AAEnE,SAASC,gBAAgB,QAAQ,uCAAuC;AAGxE,IAAMC;IACJC,IAAI;GACHN,SAASO,OAAO;AAwBnB;;CAEC,GACD,IAAMC,eAAe,iBAkBI;QAjBvBC,eAAAA,oCACAC,cAAAA,gDAAe,0BACfC,eAAAA,OACAC,qBAAAA,aACAC,kBAAAA,UACAC,mBAAAA,WACAC,gBAAAA,QACAC,oBAAAA,YACAC,kBAAAA,UACAC,mBAAAA,sCACAC,YAAAA,4CAAa,+BACbC,gBAAAA,6BACAC,MAAAA,8CAAO,oBAACnB,mCACRoB,gBAAAA,QACAC,AAAUC,sBAAVD,UACAE,AAAOC,mBAAPD,OACGE;QAhBHlB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;;IAGA,IAA0B9B,mCAAAA,MAAMiC,QAAQ,CAAC,SAAlCC,QAAmBlC,oBAAZmC,WAAYnC;IAC1B,IAA0BA,oCAAAA,MAAMiC,QAAQ,CAAC,KAAK,OAAvCG,QAAmBpC,qBAAZqC,WAAYrC;IAC1B,IAA0BG,sCAAAA,kBAAkB;QAC1CY,cAAAA;QACAO,UAAAA;QACAM,UAAUC;QACVC,OAAOC;IACT,QALOD,QAAmB3B,uBAAZyB,WAAYzB;IAM1B,IAAMmC,YAAYlC,aAAagB;IAC/B,IAA2BlB,iBAAAA,wCAAAA,eAAnBqC,OAAAA,0CAAQ;IAEhBjC,0BAA0B,WAAM;YACPgC;QAAvB,IAAME,iBAAiBF,CAAAA,qBAAAA,UAAUG,OAAO,cAAjBH,gCAAAA,KAAAA,IAAAA,mBAAmBI,OAAO,CAACJ,UAAUG,OAAO,CAACE,aAAa,CAAC;QAClF,IAAIH,gBAAgB;YAClBL,SAASK,eAAeI,IAAI;YAC5BP,SAASG,eAAeV,KAAK,KAAK,MAAMb,eAAe,IAAI;QAC7D,CAAC;IACH,GAAG;QAACa;QAAOZ;KAAS;IAEpB,qBACE,oBAACV;QACCqC,WAAU;QACV1B,WAAWlB,yBAET,4BACA0B,mCACAS,8BACAb,sCACAP,UAAU,wCACVA,UAAU,sCACVuB,UAAUlC,SAASyC,OAAO,IAAIpC,eAAe,CAAC6B,MAAM,EACpDpB;QAEFL,OAAOA;QACPO,YAAYA;QACZC,UAAUA;QACVK,QAAQA;QACRoB,OAAOrB;QACPD,QAAQA;qBAER,oBAACuB,kDACKhB;QACJV,UAAUA;QACVH,SAAS;QACTS,UAAUA;QACVE,OAAOA;QACPmB,KAAKX;QAEJrB,6BAAe,oBAACiC;QAAOpB,OAAM;OAAIb,cACjCC,yBAEH,oBAACiC;QAAIhC,SAAS;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { SizeType } from '../../lib/adaptivity';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n [SizeType.COMPACT]: styles['Select--sizeY-compact'],\n};\n\nexport interface NativeSelectProps\n extends React.SelectHTMLAttributes<HTMLSelectElement>,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLLabelElement>,\n HasAlign,\n Pick<FormFieldProps, 'before' | 'status'> {\n placeholder?: string;\n multiline?: boolean;\n selectType?: SelectType;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n}\n\nexport interface SelectState {\n value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n title?: string;\n notSelected?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/NativeSelect\n */\nconst NativeSelect = ({\n style,\n defaultValue = '',\n align,\n placeholder,\n children,\n className,\n getRef,\n getRootRef,\n disabled,\n multiline,\n selectType = 'default',\n status,\n icon = <DropdownIcon />,\n before,\n onChange: onChangeProp,\n value: valueProp,\n ...restProps\n}: NativeSelectProps) => {\n const [title, setTitle] = React.useState('');\n const [empty, setEmpty] = React.useState(false);\n const [value, onChange] = useEnsuredControl({\n defaultValue,\n disabled,\n onChange: onChangeProp,\n value: valueProp,\n });\n const selectRef = useExternRef(getRef);\n const { sizeY = 'none' } = useAdaptivity();\n\n useIsomorphicLayoutEffect(() => {\n const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setEmpty(selectedOption.value === '' && placeholder != null);\n }\n }, [value, children]);\n\n return (\n <FormField\n Component=\"label\"\n className={classNames(\n styles['Select'],\n 'vkuiInternalNativeSelect',\n before && styles['Select--hasBefore'],\n empty && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n className,\n )}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n before={before}\n after={icon}\n status={status}\n >\n <select\n {...restProps}\n disabled={disabled}\n className={styles['Select__el']}\n onChange={onChange}\n value={value}\n ref={selectRef}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {children}\n </select>\n <div className={styles['Select__container']} aria-hidden>\n <SelectTypography className={styles['Select__title']} selectType={selectType}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n\nexport { NativeSelect };\n"],"names":["React","classNames","useAdaptivity","useEnsuredControl","useExternRef","SizeType","useIsomorphicLayoutEffect","DropdownIcon","FormField","SelectTypography","sizeYClassNames","none","COMPACT","NativeSelect","style","defaultValue","align","placeholder","children","className","getRef","getRootRef","disabled","multiline","selectType","status","icon","before","onChange","onChangeProp","value","valueProp","restProps","useState","title","setTitle","empty","setEmpty","selectRef","sizeY","selectedOption","current","options","selectedIndex","text","Component","REGULAR","after","select","ref","option","div","aria-hidden"],"mappings":";;;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,yBAAyB,QAAQ,sCAAsC;AAEhF,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAwB,yBAAyB;AAEnE,SAASC,gBAAgB,QAAQ,uCAAuC;AAGxE,IAAMC;IACJC,IAAI;GACHN,SAASO,OAAO;AAwBnB;;CAEC,GACD,IAAMC,eAAe,iBAkBI;QAjBvBC,eAAAA,oCACAC,cAAAA,gDAAe,0BACfC,eAAAA,OACAC,qBAAAA,aACAC,kBAAAA,UACAC,mBAAAA,WACAC,gBAAAA,QACAC,oBAAAA,YACAC,kBAAAA,UACAC,mBAAAA,sCACAC,YAAAA,4CAAa,+BACbC,gBAAAA,6BACAC,MAAAA,8CAAO,oBAACnB,mCACRoB,gBAAAA,QACAC,AAAUC,sBAAVD,UACAE,AAAOC,mBAAPD,OACGE;QAhBHlB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;;IAGA,IAA0B9B,mCAAAA,MAAMiC,QAAQ,CAAC,SAAlCC,QAAmBlC,oBAAZmC,WAAYnC;IAC1B,IAA0BA,oCAAAA,MAAMiC,QAAQ,CAAC,KAAK,OAAvCG,QAAmBpC,qBAAZqC,WAAYrC;IAC1B,IAA0BG,sCAAAA,kBAAkB;QAC1CY,cAAAA;QACAO,UAAAA;QACAM,UAAUC;QACVC,OAAOC;IACT,QALOD,QAAmB3B,uBAAZyB,WAAYzB;IAM1B,IAAMmC,YAAYlC,aAAagB;IAC/B,IAA2BlB,iBAAAA,wCAAAA,eAAnBqC,OAAAA,0CAAQ;IAEhBjC,0BAA0B,WAAM;YACPgC;QAAvB,IAAME,iBAAiBF,CAAAA,qBAAAA,UAAUG,OAAO,cAAjBH,gCAAAA,KAAAA,IAAAA,mBAAmBI,OAAO,CAACJ,UAAUG,OAAO,CAACE,aAAa,CAAC;QAClF,IAAIH,gBAAgB;YAClBL,SAASK,eAAeI,IAAI;YAC5BP,SAASG,eAAeV,KAAK,KAAK,MAAMb,eAAe,IAAI;QAC7D,CAAC;IACH,GAAG;QAACa;QAAOZ;KAAS;IAEpB,qBACE,oBAACV;QACCqC,WAAU;QACV1B,WAAWlB,yBAET,4BACA0B,mCACAS,8BACAb,sCACAP,UAAU,wCACVA,UAAU,sCACVuB,UAAUlC,SAASyC,OAAO,IAAIpC,eAAe,CAAC6B,MAAM,EACpDpB;QAEFL,OAAOA;QACPO,YAAYA;QACZC,UAAUA;QACVK,QAAQA;QACRoB,OAAOrB;QACPD,QAAQA;qBAER,oBAACuB,kDACKhB;QACJV,UAAUA;QACVH,SAAS;QACTS,UAAUA;QACVE,OAAOA;QACPmB,KAAKX;QAEJrB,6BAAe,oBAACiC;QAAOpB,OAAM;OAAIb,cACjCC,yBAEH,oBAACiC;QAAIhC,SAAS;QAA+BiC,eAAAA,IAAW;qBACtD,oBAAC3C;QAAiBU,SAAS;QAA2BK,YAAYA;OAC/DU;AAKX;AAEA,SAASrB,YAAY,GAAG"}
|
|
@@ -32,13 +32,13 @@ var sizeXClassNames = (_obj = {
|
|
|
32
32
|
}), /*#__PURE__*/ React.createElement(Touch, {
|
|
33
33
|
Component: TooltipContainer,
|
|
34
34
|
className: classNames("vkuiPanel__in", "vkuiInternalPanel__in")
|
|
35
|
-
},
|
|
36
|
-
className: "vkuiInternalPanel__fade"
|
|
37
|
-
}), /*#__PURE__*/ React.createElement("div", {
|
|
35
|
+
}, /*#__PURE__*/ React.createElement("div", {
|
|
38
36
|
className: "vkuiPanel__in-before"
|
|
39
37
|
}), centered ? /*#__PURE__*/ React.createElement("div", {
|
|
40
38
|
className: "vkuiPanel__centered"
|
|
41
|
-
}, children) : children, /*#__PURE__*/ React.createElement("div", {
|
|
39
|
+
}, children) : children, platform === Platform.IOS && /*#__PURE__*/ React.createElement("div", {
|
|
40
|
+
className: "vkuiInternalPanel__fade"
|
|
41
|
+
}), /*#__PURE__*/ React.createElement("div", {
|
|
42
42
|
className: "vkuiPanel__in-after"
|
|
43
43
|
})));
|
|
44
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Panel/Panel.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { HasRootRef } from '../../types';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { Touch } from '../Touch/Touch';\nimport styles from './Panel.module.css';\n\nconst sizeXClassNames = {\n none: styles['Panel--sizeX-none'],\n [SizeType.COMPACT]: styles['Panel--sizeX-compact'],\n [SizeType.REGULAR]: styles['Panel--sizeX-regular'],\n};\n\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n NavIdProps {\n centered?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Panel\n */\nexport const Panel = ({\n centered = false,\n children,\n getRootRef,\n nav,\n className,\n ...restProps\n}: PanelProps) => {\n const platform = usePlatform();\n const { sizeX = 'none' } = useAdaptivity();\n\n return (\n <div\n {...restProps}\n ref={getRootRef}\n className={classNames(\n styles['Panel'],\n sizeXClassNames[sizeX],\n centered && 'vkuiInternalPanel--centered',\n className,\n )}\n >\n <Touch\n Component={TooltipContainer}\n className={classNames(styles['Panel__in'], 'vkuiInternalPanel__in')}\n >\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Panel/Panel.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { HasRootRef } from '../../types';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { Touch } from '../Touch/Touch';\nimport styles from './Panel.module.css';\n\nconst sizeXClassNames = {\n none: styles['Panel--sizeX-none'],\n [SizeType.COMPACT]: styles['Panel--sizeX-compact'],\n [SizeType.REGULAR]: styles['Panel--sizeX-regular'],\n};\n\nexport interface PanelProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n NavIdProps {\n centered?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Panel\n */\nexport const Panel = ({\n centered = false,\n children,\n getRootRef,\n nav,\n className,\n ...restProps\n}: PanelProps) => {\n const platform = usePlatform();\n const { sizeX = 'none' } = useAdaptivity();\n\n return (\n <div\n {...restProps}\n ref={getRootRef}\n className={classNames(\n styles['Panel'],\n sizeXClassNames[sizeX],\n centered && 'vkuiInternalPanel--centered',\n className,\n )}\n >\n <Touch\n Component={TooltipContainer}\n className={classNames(styles['Panel__in'], 'vkuiInternalPanel__in')}\n >\n <div className={styles['Panel__in-before']} />\n {centered ? <div className={styles['Panel__centered']}>{children}</div> : children}\n {platform === Platform.IOS && <div className=\"vkuiInternalPanel__fade\" />}\n <div className={styles['Panel__in-after']} />\n </Touch>\n </div>\n );\n};\n"],"names":["React","classNames","useAdaptivity","usePlatform","SizeType","Platform","TooltipContainer","Touch","sizeXClassNames","none","COMPACT","REGULAR","Panel","centered","children","getRootRef","nav","className","restProps","platform","sizeX","div","ref","Component","IOS"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,uBAAuB;AAEhD,SAASC,QAAQ,QAAQ,qBAAqB;AAE9C,SAASC,gBAAgB,QAAQ,8BAA8B;AAC/D,SAASC,KAAK,QAAQ,iBAAiB;IAGf;AAAxB,IAAMC,mBAAkB;IACtBC,IAAI;oBADkB,MAErBL,SAASM,OAAO,gDAFK,MAGrBN,SAASO,OAAO,+BAHK;AAaxB;;CAEC,GACD,OAAO,IAAMC,QAAQ,iBAOH;iCANhBC,UAAAA,wCAAW,KAAK,oBAChBC,kBAAAA,UACAC,oBAAAA,YACAC,aAAAA,KACAC,mBAAAA,WACGC;QALHL;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAME,WAAWhB;IACjB,IAA2BD,iBAAAA,wCAAAA,eAAnBkB,OAAAA,0CAAQ;IAEhB,qBACE,oBAACC,+CACKH;QACJI,KAAKP;QACLE,WAAWhB,wBAETO,eAAe,CAACY,MAAM,EACtBP,YAAY,+BACZI;sBAGF,oBAACV;QACCgB,WAAWjB;QACXW,WAAWhB,4BAAgC;qBAE3C,oBAACoB;QAAIJ,SAAS;QACbJ,yBAAW,oBAACQ;QAAIJ,SAAS;OAA8BH,YAAkBA,QAAQ,EACjFK,aAAad,SAASmB,GAAG,kBAAI,oBAACH;QAAIJ,WAAU;sBAC7C,oBAACI;QAAIJ,SAAS;;AAItB,EAAE"}
|
|
@@ -84,7 +84,7 @@ var PanelHeaderIn = function(param) {
|
|
|
84
84
|
var _useAdaptivityConditionalRender = useAdaptivityConditionalRender(), adaptiveSizeX = _useAdaptivityConditionalRender.sizeX;
|
|
85
85
|
var isFixed = fixed !== undefined ? fixed : platform !== Platform.VKCOM;
|
|
86
86
|
return /*#__PURE__*/ React.createElement("div", _object_spread_props(_object_spread({}, restProps), {
|
|
87
|
-
className: classNames("vkuiPanelHeader", "vkuiInternalPanelHeader", platformClassNames.hasOwnProperty(platform) ? platformClassNames[platform] : platformClassNames.android, transparent && "vkuiPanelHeader--trnsp", shadow && "vkuiPanelHeader--shadow", visor && classNames("vkuiPanelHeader--vis", "vkuiInternalPanelHeader--vis"), separator && visor && classNames("vkuiPanelHeader--sep", "vkuiInternalPanelHeader--sep"), webviewType === WebviewType.VKAPPS && !isInsideModal && "vkuiPanelHeader--vkapps", !before && "vkuiPanelHeader--no-before", !after && "vkuiPanelHeader--no-after", isFixed && "vkuiPanelHeader--fixed", sizeX !== SizeType.COMPACT && sizeXClassNames[sizeX], className),
|
|
87
|
+
className: classNames("vkuiPanelHeader", "vkuiInternalPanelHeader", platformClassNames.hasOwnProperty(platform) ? platformClassNames[platform] : platformClassNames.android, transparent && "vkuiPanelHeader--trnsp", shadow && "vkuiPanelHeader--shadow", visor && classNames("vkuiPanelHeader--vis", "vkuiInternalPanelHeader--vis"), separator && visor && classNames("vkuiPanelHeader--sep", "vkuiInternalPanelHeader--sep"), webviewType === WebviewType.VKAPPS && !isInsideModal && "vkuiPanelHeader--vkapps", !before && classNames("vkuiPanelHeader--no-before", "vkuiInternalPanelHeader--no-before"), !after && "vkuiPanelHeader--no-after", isFixed && "vkuiPanelHeader--fixed", sizeX !== SizeType.COMPACT && sizeXClassNames[sizeX], className),
|
|
88
88
|
ref: isFixed ? getRootRef : getRef
|
|
89
89
|
}), isFixed ? /*#__PURE__*/ React.createElement(FixedLayout, {
|
|
90
90
|
className: classNames("vkuiPanelHeader__fixed", "vkuiInternalPanelHeader__fixed"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/PanelHeader/PanelHeader.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasComponent, HasRef, HasRootRef } from '../../types';\nimport { useConfigProvider, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { FixedLayout } from '../FixedLayout/FixedLayout';\nimport { ModalRootContext } from '../ModalRoot/ModalRootContext';\nimport { Separator } from '../Separator/Separator';\nimport { Spacing } from '../Spacing/Spacing';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { Text } from '../Typography/Text/Text';\nimport styles from './PanelHeader.module.css';\n\nconst platformClassNames = {\n ios: classNames(styles['PanelHeader--ios'], 'vkuiInternalPanelHeader--ios'),\n android: classNames(styles['PanelHeader--android'], 'vkuiInternalPanelHeader--android'),\n vkcom: classNames(styles['PanelHeader--vkcom'], 'vkuiInternalPanelHeader--vkcom'),\n};\n\nconst sizeXClassNames = {\n none: styles['PanelHeader--sizeX-none'],\n regular: styles['PanelHeader--sizeX-regular'],\n};\n\nexport interface PanelHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRef<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n before?: React.ReactNode;\n after?: React.ReactNode;\n separator?: boolean;\n transparent?: boolean;\n shadow?: boolean;\n /**\n * Если `false`, то шапка будет нулевой высоты и контент панели \"залезет\" под неё\n */\n visor?: boolean;\n /**\n * Если `false`, то шапка будет в потоке. По умолчанию `true`, но если платформа vkcom, то по умолчанию `false`.\n */\n fixed?: boolean;\n /**\n * По умолчанию как `Component` используется `span`.\n */\n typographyProps?: HasComponent & React.HTMLAttributes<HTMLElement>;\n}\n\nconst PanelHeaderIn = ({\n before,\n after,\n separator,\n children,\n typographyProps = {},\n}: PanelHeaderProps) => {\n const { Component = 'span', ...restProps } = typographyProps;\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const platform = usePlatform();\n\n let typographyNode: React.ReactNode;\n\n // TODO [>=6]: Удалить условие\n if (\n React.isValidElement(children) &&\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n (children as JSX.Element).type.displayName === LegacyPanelHeaderContent.displayName\n ) {\n typographyNode = children;\n } else {\n typographyNode =\n platform === Platform.VKCOM ? (\n <Text weight=\"2\" Component={Component} {...restProps}>\n {children}\n </Text>\n ) : (\n <Component className={styles['PanelHeader__content-in']} {...restProps}>\n {children}\n </Component>\n );\n }\n\n return (\n <React.Fragment>\n <TooltipContainer fixed className={styles['PanelHeader__in']}>\n <div\n className={classNames(styles['PanelHeader__before'], 'vkuiInternalPanelHeader__before')}\n >\n {before}\n </div>\n <div className={styles['PanelHeader__content']}>{typographyNode}</div>\n <div className={classNames(styles['PanelHeader__after'], 'vkuiInternalPanelHeader__after')}>\n {(webviewType === WebviewType.INTERNAL || isInsideModal) && after}\n </div>\n </TooltipContainer>\n {separator && platform === Platform.VKCOM && (\n <Separator className={styles['PanelHeader__separator']} wide />\n )}\n </React.Fragment>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeader\n */\nexport const PanelHeader = ({\n before,\n children,\n after,\n separator = true,\n visor = true,\n transparent = false,\n shadow,\n getRef,\n getRootRef,\n fixed,\n className,\n typographyProps,\n ...restProps\n}: PanelHeaderProps) => {\n const platform = usePlatform();\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const { sizeX = 'none' } = useAdaptivity();\n const { sizeX: adaptiveSizeX } = useAdaptivityConditionalRender();\n let isFixed = fixed !== undefined ? fixed : platform !== Platform.VKCOM;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['PanelHeader'],\n 'vkuiInternalPanelHeader',\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\n transparent && styles['PanelHeader--trnsp'],\n shadow && styles['PanelHeader--shadow'],\n visor && classNames(styles['PanelHeader--vis'], 'vkuiInternalPanelHeader--vis'),\n separator &&\n visor &&\n classNames(styles['PanelHeader--sep'], 'vkuiInternalPanelHeader--sep'),\n webviewType === WebviewType.VKAPPS && !isInsideModal && styles['PanelHeader--vkapps'],\n !before && styles['PanelHeader--no-before'],\n !after && styles['PanelHeader--no-after'],\n isFixed && styles['PanelHeader--fixed'],\n sizeX !== SizeType.COMPACT && sizeXClassNames[sizeX],\n className,\n )}\n ref={isFixed ? getRootRef : getRef}\n >\n {isFixed ? (\n <FixedLayout\n className={classNames(styles['PanelHeader__fixed'], 'vkuiInternalPanelHeader__fixed')}\n vertical=\"top\"\n getRootRef={getRef}\n >\n <PanelHeaderIn\n before={before}\n after={after}\n separator={separator}\n typographyProps={typographyProps}\n >\n {children}\n </PanelHeaderIn>\n </FixedLayout>\n ) : (\n <PanelHeaderIn\n before={before}\n after={after}\n separator={separator}\n typographyProps={typographyProps}\n >\n {children}\n </PanelHeaderIn>\n )}\n {separator && visor && platform !== Platform.VKCOM && (\n <React.Fragment>\n {adaptiveSizeX.compact && <Separator className={adaptiveSizeX.compact.className} />}\n {adaptiveSizeX.regular && (\n <Spacing className={adaptiveSizeX.regular.className} size={16} />\n )}\n </React.Fragment>\n )}\n </div>\n );\n};\n\ninterface LegacyPanelHeaderContentProps extends React.HTMLAttributes<HTMLElement>, HasComponent {}\n\nconst warn = warnOnce('PanelHeader');\n\n/**\n * TODO [>=6]: Удалить подкомпонент\n * @deprecated\n */\nconst LegacyPanelHeaderContent = ({\n children,\n Component = 'span',\n id,\n}: LegacyPanelHeaderContentProps) => {\n if (process.env.NODE_ENV === 'development') {\n warn(\n 'Подкомпонент PanelHeader.Content устарел и будет удалён в v6. Используйте параметр typographyProps.',\n );\n }\n\n const platform = usePlatform();\n\n return platform === Platform.VKCOM ? (\n <Text weight=\"2\" Component={Component} id={id}>\n {children}\n </Text>\n ) : (\n <Component className={styles['PanelHeader__content-in']} id={id}>\n {children}\n </Component>\n );\n};\n\nLegacyPanelHeaderContent.displayName = 'LegacyPanelHeaderContent';\n\nPanelHeader.Content = LegacyPanelHeaderContent;\n"],"names":["React","classNames","useAdaptivity","useAdaptivityConditionalRender","usePlatform","SizeType","Platform","warnOnce","useConfigProvider","WebviewType","FixedLayout","ModalRootContext","Separator","Spacing","TooltipContainer","Text","platformClassNames","ios","android","vkcom","sizeXClassNames","none","regular","PanelHeaderIn","before","after","separator","children","typographyProps","Component","restProps","webviewType","isInsideModal","useContext","platform","typographyNode","isValidElement","type","displayName","LegacyPanelHeaderContent","VKCOM","weight","className","Fragment","fixed","div","INTERNAL","wide","PanelHeader","visor","transparent","shadow","getRef","getRootRef","sizeX","adaptiveSizeX","isFixed","undefined","hasOwnProperty","VKAPPS","COMPACT","ref","vertical","compact","size","warn","id","process","env","NODE_ENV","Content"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/PanelHeader/PanelHeader.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasComponent, HasRef, HasRootRef } from '../../types';\nimport { useConfigProvider, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { FixedLayout } from '../FixedLayout/FixedLayout';\nimport { ModalRootContext } from '../ModalRoot/ModalRootContext';\nimport { Separator } from '../Separator/Separator';\nimport { Spacing } from '../Spacing/Spacing';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { Text } from '../Typography/Text/Text';\nimport styles from './PanelHeader.module.css';\n\nconst platformClassNames = {\n ios: classNames(styles['PanelHeader--ios'], 'vkuiInternalPanelHeader--ios'),\n android: classNames(styles['PanelHeader--android'], 'vkuiInternalPanelHeader--android'),\n vkcom: classNames(styles['PanelHeader--vkcom'], 'vkuiInternalPanelHeader--vkcom'),\n};\n\nconst sizeXClassNames = {\n none: styles['PanelHeader--sizeX-none'],\n regular: styles['PanelHeader--sizeX-regular'],\n};\n\nexport interface PanelHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRef<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n before?: React.ReactNode;\n after?: React.ReactNode;\n separator?: boolean;\n transparent?: boolean;\n shadow?: boolean;\n /**\n * Если `false`, то шапка будет нулевой высоты и контент панели \"залезет\" под неё\n */\n visor?: boolean;\n /**\n * Если `false`, то шапка будет в потоке. По умолчанию `true`, но если платформа vkcom, то по умолчанию `false`.\n */\n fixed?: boolean;\n /**\n * По умолчанию как `Component` используется `span`.\n */\n typographyProps?: HasComponent & React.HTMLAttributes<HTMLElement>;\n}\n\nconst PanelHeaderIn = ({\n before,\n after,\n separator,\n children,\n typographyProps = {},\n}: PanelHeaderProps) => {\n const { Component = 'span', ...restProps } = typographyProps;\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const platform = usePlatform();\n\n let typographyNode: React.ReactNode;\n\n // TODO [>=6]: Удалить условие\n if (\n React.isValidElement(children) &&\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n (children as JSX.Element).type.displayName === LegacyPanelHeaderContent.displayName\n ) {\n typographyNode = children;\n } else {\n typographyNode =\n platform === Platform.VKCOM ? (\n <Text weight=\"2\" Component={Component} {...restProps}>\n {children}\n </Text>\n ) : (\n <Component className={styles['PanelHeader__content-in']} {...restProps}>\n {children}\n </Component>\n );\n }\n\n return (\n <React.Fragment>\n <TooltipContainer fixed className={styles['PanelHeader__in']}>\n <div\n className={classNames(styles['PanelHeader__before'], 'vkuiInternalPanelHeader__before')}\n >\n {before}\n </div>\n <div className={styles['PanelHeader__content']}>{typographyNode}</div>\n <div className={classNames(styles['PanelHeader__after'], 'vkuiInternalPanelHeader__after')}>\n {(webviewType === WebviewType.INTERNAL || isInsideModal) && after}\n </div>\n </TooltipContainer>\n {separator && platform === Platform.VKCOM && (\n <Separator className={styles['PanelHeader__separator']} wide />\n )}\n </React.Fragment>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeader\n */\nexport const PanelHeader = ({\n before,\n children,\n after,\n separator = true,\n visor = true,\n transparent = false,\n shadow,\n getRef,\n getRootRef,\n fixed,\n className,\n typographyProps,\n ...restProps\n}: PanelHeaderProps) => {\n const platform = usePlatform();\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const { sizeX = 'none' } = useAdaptivity();\n const { sizeX: adaptiveSizeX } = useAdaptivityConditionalRender();\n let isFixed = fixed !== undefined ? fixed : platform !== Platform.VKCOM;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['PanelHeader'],\n 'vkuiInternalPanelHeader',\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\n transparent && styles['PanelHeader--trnsp'],\n shadow && styles['PanelHeader--shadow'],\n visor && classNames(styles['PanelHeader--vis'], 'vkuiInternalPanelHeader--vis'),\n separator &&\n visor &&\n classNames(styles['PanelHeader--sep'], 'vkuiInternalPanelHeader--sep'),\n webviewType === WebviewType.VKAPPS && !isInsideModal && styles['PanelHeader--vkapps'],\n !before &&\n classNames(styles['PanelHeader--no-before'], 'vkuiInternalPanelHeader--no-before'),\n !after && styles['PanelHeader--no-after'],\n isFixed && styles['PanelHeader--fixed'],\n sizeX !== SizeType.COMPACT && sizeXClassNames[sizeX],\n className,\n )}\n ref={isFixed ? getRootRef : getRef}\n >\n {isFixed ? (\n <FixedLayout\n className={classNames(styles['PanelHeader__fixed'], 'vkuiInternalPanelHeader__fixed')}\n vertical=\"top\"\n getRootRef={getRef}\n >\n <PanelHeaderIn\n before={before}\n after={after}\n separator={separator}\n typographyProps={typographyProps}\n >\n {children}\n </PanelHeaderIn>\n </FixedLayout>\n ) : (\n <PanelHeaderIn\n before={before}\n after={after}\n separator={separator}\n typographyProps={typographyProps}\n >\n {children}\n </PanelHeaderIn>\n )}\n {separator && visor && platform !== Platform.VKCOM && (\n <React.Fragment>\n {adaptiveSizeX.compact && <Separator className={adaptiveSizeX.compact.className} />}\n {adaptiveSizeX.regular && (\n <Spacing className={adaptiveSizeX.regular.className} size={16} />\n )}\n </React.Fragment>\n )}\n </div>\n );\n};\n\ninterface LegacyPanelHeaderContentProps extends React.HTMLAttributes<HTMLElement>, HasComponent {}\n\nconst warn = warnOnce('PanelHeader');\n\n/**\n * TODO [>=6]: Удалить подкомпонент\n * @deprecated\n */\nconst LegacyPanelHeaderContent = ({\n children,\n Component = 'span',\n id,\n}: LegacyPanelHeaderContentProps) => {\n if (process.env.NODE_ENV === 'development') {\n warn(\n 'Подкомпонент PanelHeader.Content устарел и будет удалён в v6. Используйте параметр typographyProps.',\n );\n }\n\n const platform = usePlatform();\n\n return platform === Platform.VKCOM ? (\n <Text weight=\"2\" Component={Component} id={id}>\n {children}\n </Text>\n ) : (\n <Component className={styles['PanelHeader__content-in']} id={id}>\n {children}\n </Component>\n );\n};\n\nLegacyPanelHeaderContent.displayName = 'LegacyPanelHeaderContent';\n\nPanelHeader.Content = LegacyPanelHeaderContent;\n"],"names":["React","classNames","useAdaptivity","useAdaptivityConditionalRender","usePlatform","SizeType","Platform","warnOnce","useConfigProvider","WebviewType","FixedLayout","ModalRootContext","Separator","Spacing","TooltipContainer","Text","platformClassNames","ios","android","vkcom","sizeXClassNames","none","regular","PanelHeaderIn","before","after","separator","children","typographyProps","Component","restProps","webviewType","isInsideModal","useContext","platform","typographyNode","isValidElement","type","displayName","LegacyPanelHeaderContent","VKCOM","weight","className","Fragment","fixed","div","INTERNAL","wide","PanelHeader","visor","transparent","shadow","getRef","getRootRef","sizeX","adaptiveSizeX","isFixed","undefined","hasOwnProperty","VKAPPS","COMPACT","ref","vertical","compact","size","warn","id","process","env","NODE_ENV","Content"],"mappings":"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"}
|
|
@@ -9,6 +9,17 @@ import { useExternRef } from "../../hooks/useExternRef";
|
|
|
9
9
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
10
10
|
import { Platform } from "../../lib/platform";
|
|
11
11
|
import { Headline } from "../Typography/Headline/Headline";
|
|
12
|
+
import { Title } from "../Typography/Title/Title";
|
|
13
|
+
var WriteBarTypography = function(props) {
|
|
14
|
+
var platform = usePlatform();
|
|
15
|
+
if (platform === Platform.IOS) {
|
|
16
|
+
return /*#__PURE__*/ React.createElement(Title, _object_spread_props(_object_spread({}, props), {
|
|
17
|
+
level: "3",
|
|
18
|
+
weight: "3"
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
return /*#__PURE__*/ React.createElement(Headline, props);
|
|
22
|
+
};
|
|
12
23
|
/**
|
|
13
24
|
* @see https://vkcom.github.io/VKUI/#/WriteBar
|
|
14
25
|
*/ export var WriteBar = function(_param) {
|
|
@@ -49,7 +60,8 @@ import { Headline } from "../Typography/Headline/Headline";
|
|
|
49
60
|
]);
|
|
50
61
|
React.useEffect(resize, [
|
|
51
62
|
resize,
|
|
52
|
-
value
|
|
63
|
+
value,
|
|
64
|
+
platform
|
|
53
65
|
]);
|
|
54
66
|
return /*#__PURE__*/ React.createElement("div", {
|
|
55
67
|
ref: getRootRef,
|
|
@@ -61,7 +73,7 @@ import { Headline } from "../Typography/Headline/Headline";
|
|
|
61
73
|
className: "vkuiWriteBar__before"
|
|
62
74
|
}, before), /*#__PURE__*/ React.createElement("div", {
|
|
63
75
|
className: "vkuiWriteBar__formIn"
|
|
64
|
-
}, /*#__PURE__*/ React.createElement(
|
|
76
|
+
}, /*#__PURE__*/ React.createElement(WriteBarTypography, _object_spread_props(_object_spread({}, restProps), {
|
|
65
77
|
Component: "textarea",
|
|
66
78
|
className: "vkuiWriteBar__textarea",
|
|
67
79
|
onChange: onChange,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/WriteBar/WriteBar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { HasRef, HasRootRef } from '../../types';\nimport { Headline } from '../Typography/Headline/Headline';\nimport styles from './WriteBar.module.css';\n\nexport interface WriteBarProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLTextAreaElement> {\n /**\n * Содержимое, отображаемое слева от поля ввода.\n */\n before?: React.ReactNode;\n /**\n * Содержимое, отображаемое поверх поля ввода (актуально для iOS)\n */\n inlineAfter?: React.ReactNode;\n /**\n * Содержимое, отображаемое справа от поля ввода\n */\n after?: React.ReactNode;\n /**\n * Вызывается при смене высоты поля ввода\n */\n onHeightChange?: VoidFunction;\n /**\n * Добавляет тень вокруг поля ввода\n */\n shadow?: boolean;\n\n children?: never;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/WriteBar\n */\nexport const WriteBar = ({\n className,\n style,\n before,\n inlineAfter,\n after,\n getRootRef,\n getRef,\n onHeightChange,\n shadow = false,\n defaultValue,\n ...restProps\n}: WriteBarProps) => {\n const platform = usePlatform();\n\n const [value, onChange] = useEnsuredControl({\n defaultValue,\n ...restProps,\n });\n\n const textareaRef = useExternRef(getRef);\n const currentScrollHeight = React.useRef<number>();\n\n const resize = React.useCallback(() => {\n const textareaEl = textareaRef.current;\n if (!textareaEl) {\n return;\n }\n\n if (textareaEl.offsetParent) {\n textareaEl.style.height = '';\n textareaEl.style.height = `${textareaEl.scrollHeight}px`;\n\n if (textareaEl.scrollHeight !== currentScrollHeight.current && onHeightChange) {\n onHeightChange();\n currentScrollHeight.current = textareaEl.scrollHeight;\n }\n }\n }, [onHeightChange, textareaRef]);\n\n React.useEffect(resize, [resize, value]);\n\n return (\n <div\n ref={getRootRef}\n className={classNames(\n styles['WriteBar'],\n platform === Platform.IOS && styles['WriteBar--ios'],\n shadow && styles['WriteBar--shadow'],\n className,\n )}\n style={style}\n >\n <div className={styles['WriteBar__form']}>\n {hasReactNode(before) && <div className={styles['WriteBar__before']}>{before}</div>}\n\n <div className={styles['WriteBar__formIn']}>\n <
|
|
1
|
+
{"version":3,"sources":["../../../src/components/WriteBar/WriteBar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { HasRef, HasRootRef } from '../../types';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Title } from '../Typography/Title/Title';\nimport { TypographyProps } from '../Typography/Typography';\nimport styles from './WriteBar.module.css';\n\nexport interface WriteBarProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLTextAreaElement> {\n /**\n * Содержимое, отображаемое слева от поля ввода.\n */\n before?: React.ReactNode;\n /**\n * Содержимое, отображаемое поверх поля ввода (актуально для iOS)\n */\n inlineAfter?: React.ReactNode;\n /**\n * Содержимое, отображаемое справа от поля ввода\n */\n after?: React.ReactNode;\n /**\n * Вызывается при смене высоты поля ввода\n */\n onHeightChange?: VoidFunction;\n /**\n * Добавляет тень вокруг поля ввода\n */\n shadow?: boolean;\n\n children?: never;\n}\n\nconst WriteBarTypography = (props: TypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return <Title {...props} level=\"3\" weight=\"3\" />;\n }\n\n return <Headline {...props} />;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/WriteBar\n */\nexport const WriteBar = ({\n className,\n style,\n before,\n inlineAfter,\n after,\n getRootRef,\n getRef,\n onHeightChange,\n shadow = false,\n defaultValue,\n ...restProps\n}: WriteBarProps) => {\n const platform = usePlatform();\n\n const [value, onChange] = useEnsuredControl({\n defaultValue,\n ...restProps,\n });\n\n const textareaRef = useExternRef(getRef);\n const currentScrollHeight = React.useRef<number>();\n\n const resize = React.useCallback(() => {\n const textareaEl = textareaRef.current;\n if (!textareaEl) {\n return;\n }\n\n if (textareaEl.offsetParent) {\n textareaEl.style.height = '';\n textareaEl.style.height = `${textareaEl.scrollHeight}px`;\n\n if (textareaEl.scrollHeight !== currentScrollHeight.current && onHeightChange) {\n onHeightChange();\n currentScrollHeight.current = textareaEl.scrollHeight;\n }\n }\n }, [onHeightChange, textareaRef]);\n\n React.useEffect(resize, [resize, value, platform]);\n\n return (\n <div\n ref={getRootRef}\n className={classNames(\n styles['WriteBar'],\n platform === Platform.IOS && styles['WriteBar--ios'],\n shadow && styles['WriteBar--shadow'],\n className,\n )}\n style={style}\n >\n <div className={styles['WriteBar__form']}>\n {hasReactNode(before) && <div className={styles['WriteBar__before']}>{before}</div>}\n\n <div className={styles['WriteBar__formIn']}>\n <WriteBarTypography\n {...restProps}\n Component=\"textarea\"\n className={styles['WriteBar__textarea']}\n onChange={onChange}\n getRootRef={textareaRef}\n value={value}\n />\n {hasReactNode(inlineAfter) && (\n <div className={styles['WriteBar__inlineAfter']}>{inlineAfter}</div>\n )}\n </div>\n\n {hasReactNode(after) && <div className={styles['WriteBar__after']}>{after}</div>}\n </div>\n </div>\n );\n};\n"],"names":["React","classNames","hasReactNode","useEnsuredControl","useExternRef","usePlatform","Platform","Headline","Title","WriteBarTypography","props","platform","IOS","level","weight","WriteBar","className","style","before","inlineAfter","after","getRootRef","getRef","onHeightChange","shadow","defaultValue","restProps","value","onChange","textareaRef","currentScrollHeight","useRef","resize","useCallback","textareaEl","current","offsetParent","height","scrollHeight","useEffect","div","ref","Component"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,QAAQ,QAAQ,qBAAqB;AAE9C,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,KAAK,QAAQ,4BAA4B;AAgClD,IAAMC,qBAAqB,SAACC,OAA2B;IACrD,IAAMC,WAAWN;IAEjB,IAAIM,aAAaL,SAASM,GAAG,EAAE;QAC7B,qBAAO,oBAACJ,+CAAUE;YAAOG,OAAM;YAAIC,QAAO;;IAC5C,CAAC;IAED,qBAAO,oBAACP,UAAaG;AACvB;AAEA;;CAEC,GACD,OAAO,IAAMK,WAAW,iBAYH;QAXnBC,mBAAAA,WACAC,eAAAA,OACAC,gBAAAA,QACAC,qBAAAA,aACAC,eAAAA,OACAC,oBAAAA,YACAC,gBAAAA,QACAC,wBAAAA,uCACAC,QAAAA,oCAAS,KAAK,kBACdC,sBAAAA,cACGC;QAVHV;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,IAAMd,WAAWN;IAEjB,IAA0BF,sCAAAA,kBAAkB;QAC1CsB,cAAAA;OACGC,iBAFEC,QAAmBxB,uBAAZyB,WAAYzB;IAK1B,IAAM0B,cAAczB,aAAakB;IACjC,IAAMQ,sBAAsB9B,MAAM+B,MAAM;IAExC,IAAMC,SAAShC,MAAMiC,WAAW,CAAC,WAAM;QACrC,IAAMC,aAAaL,YAAYM,OAAO;QACtC,IAAI,CAACD,YAAY;YACf;QACF,CAAC;QAED,IAAIA,WAAWE,YAAY,EAAE;YAC3BF,WAAWjB,KAAK,CAACoB,MAAM,GAAG;YAC1BH,WAAWjB,KAAK,CAACoB,MAAM,GAAG,AAAC,GAA0B,OAAxBH,WAAWI,YAAY,EAAC;YAErD,IAAIJ,WAAWI,YAAY,KAAKR,oBAAoBK,OAAO,IAAIZ,gBAAgB;gBAC7EA;gBACAO,oBAAoBK,OAAO,GAAGD,WAAWI,YAAY;YACvD,CAAC;QACH,CAAC;IACH,GAAG;QAACf;QAAgBM;KAAY;IAEhC7B,MAAMuC,SAAS,CAACP,QAAQ;QAACA;QAAQL;QAAOhB;KAAS;IAEjD,qBACE,oBAAC6B;QACCC,KAAKpB;QACLL,WAAWf,2BAETU,aAAaL,SAASM,GAAG,yBACzBY,kCACAR;QAEFC,OAAOA;qBAEP,oBAACuB;QAAIxB,SAAS;OACXd,aAAagB,yBAAW,oBAACsB;QAAIxB,SAAS;OAA+BE,uBAEtE,oBAACsB;QAAIxB,SAAS;qBACZ,oBAACP,4DACKiB;QACJgB,WAAU;QACV1B,SAAS;QACTY,UAAUA;QACVP,YAAYQ;QACZF,OAAOA;SAERzB,aAAaiB,8BACZ,oBAACqB;QAAIxB,SAAS;OAAoCG,eAIrDjB,aAAakB,wBAAU,oBAACoB;QAAIxB,SAAS;OAA8BI;AAI5E,EAAE"}
|
package/dist/components.css
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
.vkuiPanelHeader{position:relative}.vkuiPanelHeader--vis.vkuiPanelHeader--fixed:before{content:"";display:block}.vkuiPanelHeader:not(.vkuiPanelHeader--vis):not(.vkuiPanelHeader--fixed){height:0}.vkuiPanelHeader__fixed{z-index:10;z-index:var(--vkui_internal--z_index_panel_header_fixed)}.vkuiPanelHeader__in{align-items:center;background:#fff;background:var(--vkui--color_background_content);display:flex;justify-content:space-between;position:relative;white-space:nowrap}.vkuiPanelHeader--trnsp .vkuiPanelHeader__in{background:transparent}.vkuiPanelHeader--sizeX-regular .vkuiPanelHeader--shadow .vkuiPanelHeader__in{box-shadow:0 0 4px rgba(0,0,0,.08)}@media (min-width:768px){.vkuiPanelHeader--sizeX-none .vkuiPanelHeader--shadow .vkuiPanelHeader__in{box-shadow:0 0 4px rgba(0,0,0,.08)}}.vkuiPanelHeader__before{box-sizing:border-box;color:#2688eb;color:var(--vkui--color_icon_accent_themed);display:flex;flex-shrink:0}.vkuiPanelHeader__content{overflow:hidden}.vkuiPanelHeader__content>*{display:block;overflow:hidden;text-overflow:ellipsis}.vkuiPanelHeader__content-in{color:#000;color:var(--vkui--color_text_primary);font-family:-apple-system,system-ui,Helvetica Neue,Roboto,sans-serif;font-family:var(--vkui--font_family_accent);font-weight:500}.vkuiPanelHeader:before,.vkuiPanelHeader__in{height:56px;height:var(--vkui--size_panel_header_height--regular);padding-top:0;padding-top:var(--vkui_internal--safe_area_inset_top)}.vkuiPanelHeader__after{box-sizing:border-box;color:#2688eb;color:var(--vkui--color_icon_accent_themed);display:flex;justify-content:flex-end}.vkuiPanelHeader--vkapps .vkuiPanelHeader__after{min-width:90px}.vkuiPanelHeader--ios .vkuiPanelHeader__before{flex-basis:0;flex-grow:1;flex-shrink:0;opacity:1;padding:4px 0 4px 4px;transition:opacity .3s cubic-bezier(.4,0,.2,1);transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiPanelHeader--ios .vkuiPanelHeader__before .vkuiPanelHeaderButton+.vkuiPanelHeaderButton--primitive{margin-left:-6px;padding-left:0}.vkuiPanelHeader--ios .vkuiPanelHeader__content{opacity:1;text-align:center;transition:opacity .3s cubic-bezier(.4,0,.2,1);transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiPanelHeader--ios .vkuiPanelHeader__content-in{font-size:21px}.vkuiPanelHeader--ios .vkuiPanelHeader__content>*{padding:0 4px}.vkuiPanelHeader--ios.vkuiPanelHeader--no-before .vkuiPanelHeader__content{padding-left:8px}.vkuiPanelHeader--ios.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*{padding-right:0}.vkuiPanelHeader--ios.vkuiPanelHeader--no-after .vkuiPanelHeader__content{padding-right:8px}.vkuiPanelHeader--ios .vkuiPanelHeader__after{flex-basis:0;flex-grow:1;flex-shrink:0;opacity:1;padding:4px 4px 4px 0;transition:opacity .3s cubic-bezier(.4,0,.2,1);transition:opacity .3s var(--vkui--animation_easing_platform)}.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__after,.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__before,.vkuiView--ios .vkuiView__panel--prev .vkuiPanelHeader__content{opacity:0}.vkuiPanelHeader--android .vkuiPanelHeader__before:not(:empty){padding:4px 0 4px 4px}.vkuiPanelHeader--android .vkuiPanelHeader__content{align-items:center;flex-grow:1;max-width:100%}.vkuiPanelHeader--android .vkuiPanelHeader__content-in{font-size:23px}.vkuiPanelHeader--android .vkuiPanelHeader__content>*{padding:0 12px}.vkuiInternalSplitCol--spaced .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiInternalModalPageHeader__in) .vkuiPanelHeader__content,.vkuiInternalSplitCol--viewWidth-tabletPlus.vkuiInternalSplitCol--spaced-none.vkuiInternalSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiInternalModalPageHeader__in) .vkuiPanelHeader__content{padding-left:0}@media (min-width:768px){.vkuiInternalSplitCol--viewWidth-none.vkuiInternalSplitCol--spaced-none.vkuiInternalSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-before:not(.vkuiInternalModalPageHeader__in) .vkuiPanelHeader__content{padding-left:0}}.vkuiPanelHeader--android.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*,.vkuiPanelHeader--vkcom.vkuiPanelHeader--no-after .vkuiPanelHeader__content>*{padding-right:0}.vkuiPanelHeader--android.vkuiPanelHeader--no-after .vkuiPanelHeader__content{padding-right:16px}.vkuiPanelHeader--android.vkuiPanelHeader--no-before .vkuiPanelHeader__content{padding-left:16px}.vkuiInternalSplitCol--spaced .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiInternalModalPageHeader__in) .vkuiPanelHeader__content,.vkuiInternalSplitCol--viewWidth-tabletPlus.vkuiInternalSplitCol--spaced-none.vkuiInternalSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiInternalModalPageHeader__in) .vkuiPanelHeader__content{padding-right:0}@media (min-width:768px){.vkuiInternalSplitCol--viewWidth-none.vkuiInternalSplitCol--spaced-none.vkuiInternalSplitCol--spaced-auto .vkuiPanelHeader--android.vkuiPanelHeader--no-after:not(.vkuiInternalModalPageHeader__in) .vkuiPanelHeader__content{padding-right:0}}.vkuiPanelHeader--android .vkuiPanelHeader__after:not(:empty),.vkuiPanelHeader--vkcom .vkuiPanelHeader__after:not(:empty){padding:4px 4px 4px 0}.vkuiPanelHeader--vkcom{position:relative;z-index:10;z-index:var(--vkui_internal--z_index_panel_header_fixed)}.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-regular:not(.vkuiInternalModalPageHeader__in):not(.vkuiPanelHeader--sep) .vkuiPanelHeader__in:after{background-color:#fff;background-color:var(--vkui--color_background_content);bottom:0;content:"";height:1px;height:var(--vkui_internal--thin_border);left:1px;left:var(--vkui_internal--thin_border);position:absolute;right:1px;right:var(--vkui_internal--thin_border)}@media (min-width:768px){.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-none:not(.vkuiInternalModalPageHeader__in):not(.vkuiPanelHeader--sep) .vkuiPanelHeader__in:after{background-color:#fff;background-color:var(--vkui--color_background_content);bottom:0;content:"";height:1px;height:var(--vkui_internal--thin_border);left:1px;left:var(--vkui_internal--thin_border);position:absolute;right:1px;right:var(--vkui_internal--thin_border)}}.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-regular:not(.vkuiInternalModalPageHeader__in) .vkuiPanelHeader__in{border-bottom:none;border-top-left-radius:12px;border-top-left-radius:var(--vkui--size_border_radius_paper--regular);border-top-right-radius:12px;border-top-right-radius:var(--vkui--size_border_radius_paper--regular);box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);box-shadow:0 0 0 var(--vkui_internal--thin_border) var(--vkui--color_field_border_alpha) inset}@media (min-width:768px){.vkuiPanelHeader--vkcom.vkuiPanelHeader--sizeX-none:not(.vkuiInternalModalPageHeader__in) .vkuiPanelHeader__in{border-bottom:none;border-top-left-radius:12px;border-top-left-radius:var(--vkui--size_border_radius_paper--regular);border-top-right-radius:12px;border-top-right-radius:var(--vkui--size_border_radius_paper--regular);box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);box-shadow:0 0 0 var(--vkui_internal--thin_border) var(--vkui--color_field_border_alpha) inset}}.vkuiPanelHeader--vkcom .vkuiPanelHeader__content{text-align:center}.vkuiPanelHeader--vkcom .vkuiPanelHeader__before:not(:empty){padding:0 0 0 4px}.vkuiPanelHeader--vkcom .vkuiPanelHeader__after,.vkuiPanelHeader--vkcom .vkuiPanelHeader__before{flex-basis:0;flex-grow:1;flex-shrink:0}.vkuiPanelHeader__separator{margin-top:calc(-1 * 1px);margin-top:calc(-1 * var(--vkui_internal--thin_border))}.vkuiPanelHeader--no-before .vkuiPanelHeader__content>*{padding-left:0}.vkuiInternalPanel--centered .vkuiPanelHeader{left:0;position:absolute;top:0;width:100%}
|
|
25
25
|
.vkuiSeparator{color:#d7d8d9;color:var(--vkui--color_separator_primary)}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiSeparator{color:#cbcccd;color:var(--vkui--color_separator_primary2x)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiSeparator{color:#bebfc1;color:var(--vkui--color_separator_primary3x)}}.vkuiSeparator__in{background:currentColor;border:none;color:inherit;height:1px;height:var(--vkui_internal--thin_border);margin:0;transform-origin:center top}.vkuiSeparator--padded .vkuiSeparator__in{margin-left:16px;margin-left:var(--vkui--size_base_padding_horizontal--regular);margin-right:16px;margin-right:var(--vkui--size_base_padding_horizontal--regular)}.vkuiInternalModalPage--sizeX-regular .vkuiSeparator--padded{padding-left:8px;padding-right:8px}@media (min-width:768px){.vkuiInternalModalPage--sizeX-none .vkuiSeparator--padded{padding-left:8px;padding-right:8px}}
|
|
26
26
|
.vkuiSpacing{box-sizing:border-box;position:relative}
|
|
27
|
-
.vkuiPanelHeaderContent{align-items:center;box-sizing:border-box;display:flex;font-family:-apple-system,system-ui,Helvetica Neue,Roboto,sans-serif;font-family:var(--vkui--font_family_base);height:100%;justify-content:flex-start;line-height:normal;max-width:100%}.vkuiPanelHeaderContent__before{flex-shrink:0;margin-right:12px}.vkuiPanelHeaderContent__in{align-items:flex-start;display:flex;flex-direction:column;flex-grow:1;height:100%;justify-content:center;min-width:0}.vkuiPanelHeaderContent__children-in,.vkuiPanelHeaderContent__status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vkuiPanelHeaderContent__status{color:#818c99;color:var(--vkui--color_text_secondary);margin-top:1px;max-width:100%;order:1}.vkuiPanelHeaderContent__children{align-items:center;display:flex;max-width:100%}.vkuiPanelHeaderContent__children-in{flex-grow:0;min-width:0}.vkuiPanelHeaderContent__aside{align-items:center;color:#2688eb;color:var(--vkui--color_icon_accent);display:flex;justify-content:flex-start;margin-left:2px}.vkuiPanelHeaderContent__width{width:1000px}.vkuiPanelHeaderContent__in--centered{align-items:center}.vkuiPanelHeaderContent--ios .vkuiPanelHeaderContent__children-in{font-size:21px}.vkuiPanelHeaderContent--android .vkuiPanelHeaderContent__children-in,.vkuiPanelHeaderContent--ios .vkuiPanelHeaderContent__children-in{font-family:-apple-system,system-ui,Helvetica Neue,Roboto,sans-serif;font-family:var(--vkui--font_family_accent);font-weight:500;line-height:56px;line-height:var(--vkui--size_panel_header_height--regular)}.vkuiPanelHeaderContent--android .vkuiPanelHeaderContent__children-in{font-size:23px}.
|
|
27
|
+
.vkuiPanelHeaderContent{align-items:center;box-sizing:border-box;display:flex;font-family:-apple-system,system-ui,Helvetica Neue,Roboto,sans-serif;font-family:var(--vkui--font_family_base);height:100%;justify-content:flex-start;line-height:normal;max-width:100%}.vkuiPanelHeaderContent__before{flex-shrink:0;margin-right:12px}.vkuiPanelHeaderContent__in{align-items:flex-start;display:flex;flex-direction:column;flex-grow:1;height:100%;justify-content:center;min-width:0}.vkuiPanelHeaderContent__children-in,.vkuiPanelHeaderContent__status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vkuiPanelHeaderContent__status{color:#818c99;color:var(--vkui--color_text_secondary);margin-top:1px;max-width:100%;order:1}.vkuiPanelHeaderContent__children{align-items:center;display:flex;max-width:100%}.vkuiPanelHeaderContent__children-in{flex-grow:0;min-width:0}.vkuiPanelHeaderContent__aside{align-items:center;color:#2688eb;color:var(--vkui--color_icon_accent);display:flex;justify-content:flex-start;margin-left:2px}.vkuiPanelHeaderContent__width{width:1000px}.vkuiPanelHeaderContent__in--centered{align-items:center}.vkuiPanelHeaderContent--ios .vkuiPanelHeaderContent__children-in{font-size:21px}.vkuiPanelHeaderContent--android .vkuiPanelHeaderContent__children-in,.vkuiPanelHeaderContent--ios .vkuiPanelHeaderContent__children-in{font-family:-apple-system,system-ui,Helvetica Neue,Roboto,sans-serif;font-family:var(--vkui--font_family_accent);font-weight:500;line-height:56px;line-height:var(--vkui--size_panel_header_height--regular)}.vkuiPanelHeaderContent--android .vkuiPanelHeaderContent__children-in{font-size:23px}.vkuiInternalPanelHeader--no-before .vkuiPanelHeaderContent--vkcom{padding-left:16px}
|
|
28
28
|
.vkuiPanelHeaderContext{z-index:4;z-index:var(--vkui_internal--z_index_panel_header_context)}.vkuiPanelHeaderContext--closing,.vkuiPanelHeaderContext--opened{height:100%;width:100%}.vkuiPanelHeaderContext--sizeX-regular.vkuiPanelHeaderContext--closing,.vkuiPanelHeaderContext--sizeX-regular.vkuiPanelHeaderContext--opened{height:auto}@media (min-width:768px){.vkuiPanelHeaderContext--sizeX-none.vkuiPanelHeaderContext--closing,.vkuiPanelHeaderContext--sizeX-none.vkuiPanelHeaderContext--opened{height:auto}}.vkuiPanelHeaderContext__in{box-sizing:border-box;left:0;padding:8px;pointer-events:none;position:absolute;width:100%}.vkuiPanelHeaderContext__fade{background:rgba(0,0,0,.4);display:none;height:100%;left:0;position:absolute;top:0;width:100%}.vkuiPanelHeaderContext--sizeX-compact .vkuiPanelHeaderContext__fade{display:block}@media (max-width:767.9px){.vkuiPanelHeaderContext--sizeX-none .vkuiPanelHeaderContext__fade{display:block}}.vkuiPanelHeaderContext--opened .vkuiPanelHeaderContext__fade{animation:vkui-animation-panelheadercontext-fade-in .2s ease}.vkuiPanelHeaderContext--closing .vkuiPanelHeaderContext__fade{animation:vkui-animation-panelheadercontext-fade-out .2s ease}.vkuiPanelHeaderContext--opened .vkuiPanelHeaderContext__in{animation:vkui-animation-panelheadercontext-translate-in .2s ease;pointer-events:auto}.vkuiPanelHeaderContext--closing .vkuiPanelHeaderContext__in{animation:vkui-animation-panelheadercontext-translate-out .2s ease}.vkuiPanelHeaderContext__content{background:#fff;background:var(--vkui--color_background_content);overflow:hidden}.vkuiPanelHeaderContext--ios .vkuiPanelHeaderContext__in{padding:0}.vkuiPanelHeaderContext--sizeX-regular.vkuiPanelHeaderContext--ios .vkuiPanelHeaderContext__content,.vkuiPanelHeaderContext:not(.vkuiPanelHeaderContext--ios) .vkuiPanelHeaderContext__content{border-radius:12px;padding:8px 0}@media (min-width:768px){.vkuiPanelHeaderContext--sizeX-none.vkuiPanelHeaderContext--ios .vkuiPanelHeaderContext__content{border-radius:12px;padding:8px 0}}.vkuiPanelHeaderContext--sizeX-regular .vkuiPanelHeaderContext__in{padding:12px 8px}.vkuiPanelHeaderContext--sizeX-regular .vkuiPanelHeaderContext__content{border-radius:12px;box-shadow:0 0 4px rgba(0,0,0,.08),0 8px 8px rgba(0,0,0,.16)}@media (min-width:768px){.vkuiPanelHeaderContext--sizeX-none .vkuiPanelHeaderContext__in{padding:12px 8px}.vkuiPanelHeaderContext--sizeX-none .vkuiPanelHeaderContext__content{border-radius:12px;box-shadow:0 0 4px rgba(0,0,0,.08),0 8px 8px rgba(0,0,0,.16)}}@keyframes vkui-animation-panelheadercontext-translate-in{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes vkui-animation-panelheadercontext-translate-out{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes vkui-animation-panelheadercontext-fade-in{0%{opacity:0}to{opacity:1}}@keyframes vkui-animation-panelheadercontext-fade-out{0%{opacity:1}to{opacity:0}}
|
|
29
29
|
.vkuiSplitLayout{height:100%;position:relative;width:100%}.vkuiSplitLayout__inner{display:flex;height:100%;width:100%}.vkuiSplitLayout__inner--header{position:relative;z-index:11;z-index:var(--vkui_internal--z_index_split_layout_panel_header)}.vkuiSplitLayout--ios .vkuiSplitLayout__inner--header,.vkuiSplitLayout__inner--header{margin-top:calc(-1 * (56px + 0px));margin-top:calc(-1 * (var(--vkui--size_panel_header_height--regular) + var(--vkui_internal--safe_area_inset_top)))}
|
|
30
30
|
.vkuiPopoutRoot{height:100%;position:relative;width:100%}.vkuiPopoutRoot__popout{height:100%;left:0;position:fixed;top:0;width:100%;z-index:100;z-index:var(--vkui--z_index_popout)}.vkuiPopoutRoot__popout--absolute{position:absolute}.vkuiPopoutRoot__modal{height:100%;left:0;position:fixed;top:0;width:100%;z-index:99;z-index:var(--vkui--z_index_modal)}.vkuiPopoutRoot__modal:empty,.vkuiPopoutRoot__popout:empty{display:none}
|
|
@@ -93,8 +93,8 @@
|
|
|
93
93
|
.vkuiPlaceholder{align-items:center;display:flex;justify-content:center}.vkuiPlaceholder--stretched{flex:1 0;padding-bottom:inherit;padding-top:inherit}.vkuiPlaceholder__in{box-sizing:border-box;max-width:100%;padding:48px 32px;text-align:center}.vkuiPlaceholder__icon{color:#99a2ad;color:var(--vkui--color_icon_secondary);display:inline-block;margin-bottom:12px;vertical-align:top}.vkuiPlaceholder__header{color:#000;color:var(--vkui--color_text_primary)}.vkuiPlaceholder__text{color:#818c99;color:var(--vkui--color_text_secondary)}.vkuiPlaceholder__header+.vkuiPlaceholder__text{margin-top:8px}.vkuiPlaceholder__action:not(:first-child){margin-top:16px}
|
|
94
94
|
.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__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)}.vkuiInternalFormStatus .vkuiBanner__in:before{border:none}.vkuiInternalFormStatus--mode-error .vkuiBanner__in{background-color:#faebeb;background-color:var(--vkui--color_background_negative_tint)}.vkuiInternalFormStatus--mode-error .vkuiBanner__subheader{color:#e64646;color:var(--vkui--color_background_negative)}
|
|
95
95
|
.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;word-break:break-word}.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)}
|
|
96
|
-
.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 #e1e3e6;border:var(--vkui_internal--thin_border) solid var(--vkui--color_write_bar_input_border);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
|
|
97
|
-
.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
|
|
96
|
+
.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{background:#fff;background:var(--vkui--color_background_content)}.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 #e1e3e6;border:var(--vkui_internal--thin_border) solid var(--vkui--color_write_bar_input_border);border-radius:18px;box-sizing:border-box;margin:8px 0}.vkuiWriteBar--ios .vkuiWriteBar__formIn:first-child{margin-left:12px}.vkuiWriteBar--ios .vkuiWriteBar__inlineAfter{--vkui_internal--writebar-right-gap:calc(-1 * var(--vkui_internal--thin_border));--vkui_internal--writebar-vertical-gap:calc(var(--vkui_internal--writebar-right-gap) - 8px);margin-bottom:calc(calc(-1 * 1px) - 8px);margin-bottom:var(--vkui_internal--writebar-vertical-gap);margin-right:calc(-1 * 1px);margin-right:var(--vkui_internal--writebar-right-gap);margin-top:calc(calc(-1 * 1px) - 8px);margin-top:var(--vkui_internal--writebar-vertical-gap)}.vkuiWriteBar--ios .vkuiWriteBar__textarea{height:36px;padding:6px 0 6px 12px}
|
|
97
|
+
.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.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon.vkuiWriteBarIcon--mode-send{color:#2688eb;color:var(--vkui--color_icon_accent)}.vkuiWriteBarIcon--ios{color:#2688eb;color:var(--vkui--color_icon_accent_themed)}.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-done,.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-send{color:#2688eb;color:var(--vkui--color_icon_accent_themed);padding-left:0;padding-right:0;width:48px}.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-done:only-child,.vkuiWriteBarIcon--ios.vkuiWriteBarIcon--mode-send:only-child{margin-left:-4px;margin-right:-4px}.vkuiWriteBarIcon{--vkui_internal--counter_inherit_color:var(--vkui--color_text_contrast_themed);--vkui_internal--counter_inherit_background:var(--vkui--color_background_positive)}
|
|
98
98
|
.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)}
|
|
99
99
|
.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)}.vkuiSubnavigationButton{--vkui_internal--counter_inherit_background:var(--vkui--color_background_accent_themed);--vkui_internal--counter_inherit_color:var(--vkui--color_text_contrast_themed)}.vkuiSubnavigationButton--selected:not(.vkuiSubnavigationButton--mode-tertiary){--vkui_internal--counter_inherit_background:var(--vkui--color_background_content);--vkui_internal--counter_inherit_color:var(--vkui--color_text_accent_themed)}.vkuiInternalSubnavigationBar .vkuiSubnavigationButton+.vkuiSubnavigationButton{margin-left:8px;margin-left:var(--vkui--size_subnavigation_bar_gap--regular)}.vkuiInternalSubnavigationBar--mode-fixed .vkuiSubnavigationButton{flex:1;min-width:0}
|
|
100
100
|
.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}
|