@vkontakte/vkui 5.2.1 → 5.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +4 -3
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.js +3 -5
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Button/Button.d.ts +1 -1
- package/dist/cjs/components/Button/Button.js +3 -5
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/IconButton/IconButton.d.ts +1 -1
- package/dist/cjs/components/IconButton/IconButton.js +3 -5
- package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
- package/dist/cjs/components/Input/Input.d.ts +1 -1
- package/dist/cjs/components/Input/Input.js +3 -1
- package/dist/cjs/components/Input/Input.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPage.js +2 -5
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.js +1 -1
- package/dist/cjs/components/Pagination/Pagination.js.map +1 -1
- package/dist/cjs/components/PanelHeader/PanelHeader.js +5 -4
- package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +3 -2
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cjs/components/RichCell/RichCell.d.ts +5 -2
- package/dist/cjs/components/RichCell/RichCell.js +2 -0
- package/dist/cjs/components/RichCell/RichCell.js.map +1 -1
- package/dist/cjs/components/RichCell/RichCellIcon/RichCellIcon.d.ts +2 -0
- package/dist/cjs/components/RichCell/RichCellIcon/RichCellIcon.js +23 -0
- package/dist/cjs/components/RichCell/RichCellIcon/RichCellIcon.js.map +1 -0
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SelectTypography/SelectTypography.js +3 -3
- package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cjs/components/Snackbar/Snackbar.d.ts +5 -2
- package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +15 -5
- package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cjs/components/WriteBarIcon/WriteBarIconRenderer.d.ts +10 -0
- package/dist/cjs/components/WriteBarIcon/WriteBarIconRenderer.js +22 -0
- package/dist/cjs/components/WriteBarIcon/WriteBarIconRenderer.js.map +1 -0
- package/dist/components/ActionSheetItem/ActionSheetItem.js +4 -3
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/Alert/Alert.js +3 -5
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button/Button.js +3 -5
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/IconButton/IconButton.d.ts +1 -1
- package/dist/components/IconButton/IconButton.js +3 -5
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Input/Input.js +3 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.js +2 -5
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/Pagination/Pagination.js +1 -1
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js +5 -4
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js +3 -2
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/RichCell/RichCell.d.ts +5 -2
- package/dist/components/RichCell/RichCell.js +2 -0
- package/dist/components/RichCell/RichCell.js.map +1 -1
- package/dist/components/RichCell/RichCellIcon/RichCellIcon.d.ts +2 -0
- package/dist/components/RichCell/RichCellIcon/RichCellIcon.js +14 -0
- package/dist/components/RichCell/RichCellIcon/RichCellIcon.js.map +1 -0
- package/dist/components/SelectMimicry/SelectMimicry.js +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SelectTypography/SelectTypography.js +3 -3
- package/dist/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts +5 -2
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/WriteBarIcon/WriteBarIcon.js +16 -6
- package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/components/WriteBarIcon/WriteBarIconRenderer.d.ts +10 -0
- package/dist/components/WriteBarIcon/WriteBarIconRenderer.js +14 -0
- package/dist/components/WriteBarIcon/WriteBarIconRenderer.js.map +1 -0
- package/dist/components.css +9 -8
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +684 -572
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +4 -3
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js +3 -5
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/Button/Button.d.ts +1 -1
- package/dist/cssm/components/Button/Button.js +3 -5
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.module.css +1 -1
- package/dist/cssm/components/Header/Header.module.css +1 -1
- package/dist/cssm/components/IconButton/IconButton.d.ts +1 -1
- package/dist/cssm/components/IconButton/IconButton.js +3 -5
- package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
- package/dist/cssm/components/Input/Input.d.ts +1 -1
- package/dist/cssm/components/Input/Input.js +3 -1
- package/dist/cssm/components/Input/Input.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js +2 -5
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/Pagination/Pagination.js +1 -1
- package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js +5 -4
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.module.css +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +3 -2
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/RichCell/RichCell.d.ts +5 -2
- package/dist/cssm/components/RichCell/RichCell.js +2 -0
- package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
- package/dist/cssm/components/RichCell/RichCell.module.css +1 -1
- package/dist/cssm/components/RichCell/RichCellIcon/RichCellIcon.d.ts +2 -0
- package/dist/cssm/components/RichCell/RichCellIcon/RichCellIcon.js +15 -0
- package/dist/cssm/components/RichCell/RichCellIcon/RichCellIcon.js.map +1 -0
- package/dist/cssm/components/RichCell/RichCellIcon/RichCellIcon.module.css +1 -0
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SelectTypography/SelectTypography.js +3 -3
- package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.d.ts +5 -2
- package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/cssm/components/Snackbar/Snackbar.module.css +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.module.css +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +16 -6
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.module.css +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIconRenderer.d.ts +10 -0
- package/dist/cssm/components/WriteBarIcon/WriteBarIconRenderer.js +14 -0
- package/dist/cssm/components/WriteBarIcon/WriteBarIconRenderer.js.map +1 -0
- package/dist/vkui.css +9 -8
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +684 -572
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.js","names":["React","classNames","hasReactNode","useAdaptivityWithJSMediaQueries","usePlatform","useWaitTransitionFinish","Platform","stopPropagation","useScrollLock","Button","FocusTrap","ModalDismissButton","PopoutWrapper","Tappable","Caption","Footnote","Text","Title","AlertHeader","props","platform","IOS","AlertText","VKCOM","AlertAction","action","onItemClick","restProps","handleItemClick","useCallback","Component","title","actionProp","autoClose","mode","restActionProps","href","styles","target","Alert","actions","actionsLayout","children","className","style","text","header","onClose","dismissLabel","isDesktop","waitTransitionFinish","useState","closing","setClosing","elementRef","useRef","resolvedActionsLayout","timeout","close","current","e","propertyName","item","map","i"],"sources":["../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { Platform } from '../../lib/platform';\nimport { stopPropagation } from '../../lib/utils';\nimport { AnchorHTMLAttributesOnly } from '../../types';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { Button, ButtonProps } from '../Button/Button';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Caption } from '../Typography/Caption/Caption';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './Alert.module.css';\n\nexport interface AlertActionInterface\n extends Pick<ButtonProps, 'Component'>,\n AnchorHTMLAttributesOnly {\n title: string;\n action?: VoidFunction;\n autoClose?: boolean;\n mode: 'cancel' | 'destructive' | 'default';\n}\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLElement> {\n actionsLayout?: 'vertical' | 'horizontal';\n actions?: AlertActionInterface[];\n header?: React.ReactNode;\n text?: React.ReactNode;\n onClose: VoidFunction;\n\n /**\n * `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n}\n\ntype ItemClickHandler = (item: AlertActionInterface) => void;\n\ninterface AlertTypography {\n id: string;\n children?: React.ReactNode;\n}\n\nconst AlertHeader = (props: AlertTypography) => {\n const platform = usePlatform();\n\n switch (platform) {\n case Platform.IOS:\n return <Title className={styles['Alert__header']} weight=\"1\" level=\"3\" {...props} />;\n default:\n return <Title className={styles['Alert__header']} weight=\"2\" level=\"2\" {...props} />;\n }\n};\n\nconst AlertText = (props: AlertTypography) => {\n const platform = usePlatform();\n\n switch (platform) {\n case Platform.VKCOM:\n return <Footnote className={styles['Alert__text']} {...props} />;\n case Platform.IOS:\n return <Caption className={styles['Alert__text']} {...props} />;\n default:\n return <Text Component=\"span\" className={styles['Alert__text']} weight=\"3\" {...props} />;\n }\n};\n\ninterface AlertActionProps {\n action: AlertActionInterface;\n onItemClick: ItemClickHandler;\n}\n\nconst AlertAction = ({ action, onItemClick, ...restProps }: AlertActionProps) => {\n const platform = usePlatform();\n const handleItemClick = React.useCallback(() => onItemClick(action), [onItemClick, action]);\n\n if (platform === Platform.IOS) {\n const {\n Component = 'button',\n title,\n action: actionProp,\n autoClose,\n mode,\n ...restActionProps\n } = action;\n\n return (\n <Tappable\n Component={restActionProps.href ? 'a' : Component}\n className={classNames(styles['Alert__action'], styles[`Alert__action--mode-${mode}`])}\n onClick={handleItemClick}\n {...restActionProps}\n {...restProps}\n >\n {title}\n </Tappable>\n );\n }\n\n let mode: ButtonProps['mode'] = 'tertiary';\n\n if (platform === Platform.VKCOM) {\n mode = action.mode === 'cancel' ? 'secondary' : 'primary';\n }\n\n return (\n <Button\n className={classNames(styles['Alert__button'], styles[`Alert__button--mode-${action.mode}`])}\n mode={mode}\n size=\"m\"\n onClick={handleItemClick}\n Component={action.Component}\n href={action.href}\n target={action.target}\n >\n {action.title}\n </Button>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Alert\n */\nexport const Alert = ({\n actions = [],\n actionsLayout = 'horizontal',\n children,\n className,\n style,\n text,\n header,\n onClose,\n dismissLabel = 'Закрыть предупреждение',\n ...restProps\n}: AlertProps) => {\n const platform = usePlatform();\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const { waitTransitionFinish } = useWaitTransitionFinish();\n\n const [closing, setClosing] = React.useState(false);\n\n const elementRef = React.useRef<HTMLDivElement>(null);\n\n const resolvedActionsLayout: AlertProps['actionsLayout'] =\n platform === Platform.VKCOM ? 'horizontal' : actionsLayout;\n\n const timeout = platform === Platform.IOS ? 300 : 200;\n\n const close = React.useCallback(() => {\n setClosing(true);\n waitTransitionFinish(\n elementRef.current,\n (e?: TransitionEvent) => {\n if (!e || e.propertyName === 'opacity') {\n onClose();\n }\n },\n timeout,\n );\n }, [elementRef, waitTransitionFinish, onClose, timeout]);\n\n const onItemClick: ItemClickHandler = React.useCallback(\n (item: AlertActionInterface) => {\n const { action, autoClose } = item;\n\n if (autoClose) {\n setClosing(true);\n waitTransitionFinish(\n elementRef.current,\n (e?: TransitionEvent) => {\n if (!e || e.propertyName === 'opacity') {\n onClose();\n action && action();\n }\n },\n timeout,\n );\n } else {\n action && action();\n }\n },\n [elementRef, waitTransitionFinish, onClose, timeout],\n );\n\n useScrollLock();\n\n return (\n <PopoutWrapper className={className} closing={closing} style={style} onClick={close}>\n <FocusTrap\n {...restProps}\n getRootRef={elementRef}\n onClick={stopPropagation}\n onClose={close}\n timeout={timeout}\n className={classNames(\n styles['Alert'],\n platform === Platform.IOS && styles['Alert--ios'],\n platform === Platform.VKCOM && styles['Alert--vkcom'],\n resolvedActionsLayout === 'vertical' ? styles['Alert--v'] : styles['Alert--h'],\n closing && styles['Alert--closing'],\n isDesktop && styles['Alert--desktop'],\n )}\n role=\"alertdialog\"\n aria-modal\n aria-labelledby=\"vkui--alert--title\"\n aria-describedby=\"vkui--alert--desc\"\n >\n <div className={styles['Alert__content']}>\n {hasReactNode(header) && <AlertHeader id=\"vkui--alert--title\">{header}</AlertHeader>}\n {hasReactNode(text) && <AlertText id=\"vkui--alert--desc\">{text}</AlertText>}\n {children}\n </div>\n <div className={styles['Alert__actions']}>\n {actions.map((action, i) => (\n <AlertAction key={i} action={action} onItemClick={onItemClick} />\n ))}\n </div>\n {isDesktop && <ModalDismissButton onClick={close} aria-label={dismissLabel} />}\n </FocusTrap>\n </PopoutWrapper>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Alert.js","names":["React","classNames","hasReactNode","useAdaptivityWithJSMediaQueries","usePlatform","useWaitTransitionFinish","Platform","stopPropagation","useScrollLock","Button","FocusTrap","ModalDismissButton","PopoutWrapper","Tappable","Caption","Footnote","Text","Title","AlertHeader","props","platform","IOS","AlertText","VKCOM","AlertAction","action","onItemClick","restProps","handleItemClick","useCallback","title","actionProp","autoClose","mode","restActionProps","href","styles","Component","target","Alert","actions","actionsLayout","children","className","style","text","header","onClose","dismissLabel","isDesktop","waitTransitionFinish","useState","closing","setClosing","elementRef","useRef","resolvedActionsLayout","timeout","close","current","e","propertyName","item","map","i"],"sources":["../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { Platform } from '../../lib/platform';\nimport { stopPropagation } from '../../lib/utils';\nimport { AnchorHTMLAttributesOnly } from '../../types';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { Button, ButtonProps } from '../Button/Button';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { Tappable } from '../Tappable/Tappable';\nimport { Caption } from '../Typography/Caption/Caption';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './Alert.module.css';\n\nexport interface AlertActionInterface\n extends Pick<ButtonProps, 'Component'>,\n AnchorHTMLAttributesOnly {\n title: string;\n action?: VoidFunction;\n autoClose?: boolean;\n mode: 'cancel' | 'destructive' | 'default';\n}\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLElement> {\n actionsLayout?: 'vertical' | 'horizontal';\n actions?: AlertActionInterface[];\n header?: React.ReactNode;\n text?: React.ReactNode;\n onClose: VoidFunction;\n\n /**\n * `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n}\n\ntype ItemClickHandler = (item: AlertActionInterface) => void;\n\ninterface AlertTypography {\n id: string;\n children?: React.ReactNode;\n}\n\nconst AlertHeader = (props: AlertTypography) => {\n const platform = usePlatform();\n\n switch (platform) {\n case Platform.IOS:\n return <Title className={styles['Alert__header']} weight=\"1\" level=\"3\" {...props} />;\n default:\n return <Title className={styles['Alert__header']} weight=\"2\" level=\"2\" {...props} />;\n }\n};\n\nconst AlertText = (props: AlertTypography) => {\n const platform = usePlatform();\n\n switch (platform) {\n case Platform.VKCOM:\n return <Footnote className={styles['Alert__text']} {...props} />;\n case Platform.IOS:\n return <Caption className={styles['Alert__text']} {...props} />;\n default:\n return <Text Component=\"span\" className={styles['Alert__text']} weight=\"3\" {...props} />;\n }\n};\n\ninterface AlertActionProps {\n action: AlertActionInterface;\n onItemClick: ItemClickHandler;\n}\n\nconst AlertAction = ({ action, onItemClick, ...restProps }: AlertActionProps) => {\n const platform = usePlatform();\n const handleItemClick = React.useCallback(() => onItemClick(action), [onItemClick, action]);\n\n if (platform === Platform.IOS) {\n const { title, action: actionProp, autoClose, mode, ...restActionProps } = action;\n\n return (\n <Tappable\n Component={restActionProps.href ? 'a' : 'button'}\n className={classNames(styles['Alert__action'], styles[`Alert__action--mode-${mode}`])}\n onClick={handleItemClick}\n {...restActionProps}\n {...restProps}\n >\n {title}\n </Tappable>\n );\n }\n\n let mode: ButtonProps['mode'] = 'tertiary';\n\n if (platform === Platform.VKCOM) {\n mode = action.mode === 'cancel' ? 'secondary' : 'primary';\n }\n\n return (\n <Button\n className={classNames(styles['Alert__button'], styles[`Alert__button--mode-${action.mode}`])}\n mode={mode}\n size=\"m\"\n onClick={handleItemClick}\n Component={action.Component}\n href={action.href}\n target={action.target}\n >\n {action.title}\n </Button>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Alert\n */\nexport const Alert = ({\n actions = [],\n actionsLayout = 'horizontal',\n children,\n className,\n style,\n text,\n header,\n onClose,\n dismissLabel = 'Закрыть предупреждение',\n ...restProps\n}: AlertProps) => {\n const platform = usePlatform();\n const { isDesktop } = useAdaptivityWithJSMediaQueries();\n const { waitTransitionFinish } = useWaitTransitionFinish();\n\n const [closing, setClosing] = React.useState(false);\n\n const elementRef = React.useRef<HTMLDivElement>(null);\n\n const resolvedActionsLayout: AlertProps['actionsLayout'] =\n platform === Platform.VKCOM ? 'horizontal' : actionsLayout;\n\n const timeout = platform === Platform.IOS ? 300 : 200;\n\n const close = React.useCallback(() => {\n setClosing(true);\n waitTransitionFinish(\n elementRef.current,\n (e?: TransitionEvent) => {\n if (!e || e.propertyName === 'opacity') {\n onClose();\n }\n },\n timeout,\n );\n }, [elementRef, waitTransitionFinish, onClose, timeout]);\n\n const onItemClick: ItemClickHandler = React.useCallback(\n (item: AlertActionInterface) => {\n const { action, autoClose } = item;\n\n if (autoClose) {\n setClosing(true);\n waitTransitionFinish(\n elementRef.current,\n (e?: TransitionEvent) => {\n if (!e || e.propertyName === 'opacity') {\n onClose();\n action && action();\n }\n },\n timeout,\n );\n } else {\n action && action();\n }\n },\n [elementRef, waitTransitionFinish, onClose, timeout],\n );\n\n useScrollLock();\n\n return (\n <PopoutWrapper className={className} closing={closing} style={style} onClick={close}>\n <FocusTrap\n {...restProps}\n getRootRef={elementRef}\n onClick={stopPropagation}\n onClose={close}\n timeout={timeout}\n className={classNames(\n styles['Alert'],\n platform === Platform.IOS && styles['Alert--ios'],\n platform === Platform.VKCOM && styles['Alert--vkcom'],\n resolvedActionsLayout === 'vertical' ? styles['Alert--v'] : styles['Alert--h'],\n closing && styles['Alert--closing'],\n isDesktop && styles['Alert--desktop'],\n )}\n role=\"alertdialog\"\n aria-modal\n aria-labelledby=\"vkui--alert--title\"\n aria-describedby=\"vkui--alert--desc\"\n >\n <div className={styles['Alert__content']}>\n {hasReactNode(header) && <AlertHeader id=\"vkui--alert--title\">{header}</AlertHeader>}\n {hasReactNode(text) && <AlertText id=\"vkui--alert--desc\">{text}</AlertText>}\n {children}\n </div>\n <div className={styles['Alert__actions']}>\n {actions.map((action, i) => (\n <AlertAction key={i} action={action} onItemClick={onItemClick} />\n ))}\n </div>\n {isDesktop && <ModalDismissButton onClick={close} aria-label={dismissLabel} />}\n </FocusTrap>\n </PopoutWrapper>\n );\n};\n"],"mappings":"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"}
|
|
@@ -15,4 +15,4 @@ export interface ButtonProps extends Omit<TappableProps, 'size'>, VKUIButtonProp
|
|
|
15
15
|
/**
|
|
16
16
|
* @see https://vkcom.github.io/VKUI/#/Button
|
|
17
17
|
*/
|
|
18
|
-
export declare const Button: ({ size, mode, appearance, stretched, align, children, before, after, getRootRef,
|
|
18
|
+
export declare const Button: ({ size, mode, appearance, stretched, align, children, before, after, getRootRef, loading, onClick, stopPropagation, className, ...restProps }: ButtonProps) => JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
-
var _excluded = ["size", "mode", "appearance", "stretched", "align", "children", "before", "after", "getRootRef", "
|
|
4
|
+
var _excluded = ["size", "mode", "appearance", "stretched", "align", "children", "before", "after", "getRootRef", "loading", "onClick", "stopPropagation", "className"];
|
|
5
5
|
var _sizeYClassNames;
|
|
6
6
|
import * as React from 'react';
|
|
7
7
|
import { classNames, hasReactNode } from '@vkontakte/vkjs';
|
|
@@ -32,8 +32,6 @@ export var Button = function Button(_ref) {
|
|
|
32
32
|
before = _ref.before,
|
|
33
33
|
after = _ref.after,
|
|
34
34
|
getRootRef = _ref.getRootRef,
|
|
35
|
-
_ref$Component = _ref.Component,
|
|
36
|
-
Component = _ref$Component === void 0 ? 'button' : _ref$Component,
|
|
37
35
|
loading = _ref.loading,
|
|
38
36
|
onClick = _ref.onClick,
|
|
39
37
|
_ref$stopPropagation = _ref.stopPropagation,
|
|
@@ -48,9 +46,9 @@ export var Button = function Button(_ref) {
|
|
|
48
46
|
var platform = usePlatform();
|
|
49
47
|
return /*#__PURE__*/React.createElement(Tappable, _extends({
|
|
50
48
|
hoverMode: "vkuiButton--hover",
|
|
51
|
-
activeMode: "vkuiButton--active"
|
|
49
|
+
activeMode: "vkuiButton--active",
|
|
50
|
+
Component: restProps.href ? 'a' : 'button'
|
|
52
51
|
}, restProps, {
|
|
53
|
-
Component: restProps.href ? 'a' : Component,
|
|
54
52
|
onClick: loading ? undefined : onClick,
|
|
55
53
|
focusVisibleMode: "outside",
|
|
56
54
|
stopPropagation: stopPropagation,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","names":["React","classNames","hasReactNode","useAdaptivity","usePlatform","SizeType","Platform","Spinner","Tappable","sizeYClassNames","none","COMPACT","REGULAR","Button","size","mode","appearance","stretched","align","children","before","after","getRootRef","
|
|
1
|
+
{"version":3,"file":"Button.js","names":["React","classNames","hasReactNode","useAdaptivity","usePlatform","SizeType","Platform","Spinner","Tappable","sizeYClassNames","none","COMPACT","REGULAR","Button","size","mode","appearance","stretched","align","children","before","after","getRootRef","loading","onClick","stopPropagation","className","restProps","hasIcons","Boolean","hasIconOnly","sizeY","platform","href","undefined","styles","ANDROID","IOS","process","env","NODE_ENV"],"sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { HasAlign } from '../../types';\nimport { Spinner } from '../Spinner/Spinner';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport styles from './Button.module.css';\n\nconst sizeYClassNames = {\n none: styles['Button--sizeY-none'],\n [SizeType.COMPACT]: styles['Button--sizeY-compact'],\n [SizeType.REGULAR]: styles['Button--sizeY-regular'],\n};\n\nexport interface VKUIButtonProps extends HasAlign {\n mode?: 'primary' | 'secondary' | 'tertiary' | 'outline' | 'link';\n appearance?: 'accent' | 'positive' | 'negative' | 'neutral' | 'overlay' | 'accent-invariable';\n size?: 's' | 'm' | 'l';\n stretched?: boolean;\n before?: React.ReactNode;\n after?: React.ReactNode;\n loading?: boolean;\n}\n\nexport interface ButtonProps extends Omit<TappableProps, 'size'>, VKUIButtonProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Button\n */\nexport const Button = ({\n size = 's',\n mode = 'primary',\n appearance = 'accent',\n stretched = false,\n align = 'center',\n children,\n before,\n after,\n getRootRef,\n loading,\n onClick,\n stopPropagation = true,\n className,\n ...restProps\n}: ButtonProps) => {\n const hasIcons = Boolean(before || after);\n const hasIconOnly = !children && Boolean(after) !== Boolean(before);\n const { sizeY = 'none' } = useAdaptivity();\n const platform = usePlatform();\n\n return (\n <Tappable\n hoverMode={styles['Button--hover']}\n activeMode={styles['Button--active']}\n Component={restProps.href ? 'a' : 'button'}\n {...restProps}\n onClick={loading ? undefined : onClick}\n focusVisibleMode=\"outside\"\n stopPropagation={stopPropagation}\n className={classNames(\n className,\n styles.Button,\n styles[`Button--size-${size}`],\n styles[`Button--mode-${mode}`],\n styles[`Button--appearance-${appearance}`],\n styles[`Button--align-${align}`],\n sizeYClassNames[sizeY],\n platform === Platform.ANDROID && styles[`Button--android`],\n platform === Platform.IOS && styles[`Button--ios`],\n stretched && styles['Button--stretched'],\n hasIcons && styles['Button--with-icon'],\n hasIconOnly && !stretched && styles['Button--singleIcon'],\n loading && styles['Button--loading'],\n )}\n getRootRef={getRootRef}\n >\n {loading && <Spinner size=\"small\" className={styles.Button__spinner} />}\n <span className={styles.Button__in}>\n {hasReactNode(before) && (\n <span\n className={styles.Button__before}\n role=\"presentation\"\n data-testid={process.env.NODE_ENV === 'test' ? 'before' : undefined}\n >\n {before}\n </span>\n )}\n {hasReactNode(children) && (\n <span\n className={styles.Button__content}\n data-testid={process.env.NODE_ENV === 'test' ? 'children' : undefined}\n >\n {children}\n </span>\n )}\n {hasReactNode(after) && (\n <span\n className={styles.Button__after}\n role=\"presentation\"\n data-testid={process.env.NODE_ENV === 'test' ? 'after' : undefined}\n >\n {after}\n </span>\n )}\n </span>\n </Tappable>\n );\n};\n"],"mappings":"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"}
|
|
@@ -6,4 +6,4 @@ export interface IconButtonProps extends TappableProps {
|
|
|
6
6
|
/**
|
|
7
7
|
* @see https://vkcom.github.io/VKUI/#/IconButton
|
|
8
8
|
*/
|
|
9
|
-
export declare const IconButton: ({ children,
|
|
9
|
+
export declare const IconButton: ({ children, className, ...restProps }: IconButtonProps) => JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
-
var _excluded = ["children", "
|
|
4
|
+
var _excluded = ["children", "className"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { classNames } from '@vkontakte/vkjs';
|
|
7
7
|
import { useAdaptivity } from '../../hooks/useAdaptivity';
|
|
@@ -20,8 +20,6 @@ var warn = warnOnce('IconButton');
|
|
|
20
20
|
*/
|
|
21
21
|
export var IconButton = function IconButton(_ref) {
|
|
22
22
|
var children = _ref.children,
|
|
23
|
-
_ref$Component = _ref.Component,
|
|
24
|
-
Component = _ref$Component === void 0 ? 'button' : _ref$Component,
|
|
25
23
|
className = _ref.className,
|
|
26
24
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
27
25
|
var platform = usePlatform();
|
|
@@ -36,9 +34,9 @@ export var IconButton = function IconButton(_ref) {
|
|
|
36
34
|
}
|
|
37
35
|
return /*#__PURE__*/React.createElement(Tappable, _extends({
|
|
38
36
|
activeEffectDelay: 200,
|
|
39
|
-
activeMode: "background"
|
|
37
|
+
activeMode: "background",
|
|
38
|
+
Component: restProps.href ? 'a' : 'button'
|
|
40
39
|
}, restProps, {
|
|
41
|
-
Component: restProps.href ? 'a' : Component,
|
|
42
40
|
className: classNames("vkuiIconButton", sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY], platform === Platform.IOS && "vkuiIconButton--ios", className)
|
|
43
41
|
}), children);
|
|
44
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton.js","names":["React","classNames","useAdaptivity","usePlatform","SizeType","Platform","COMMON_WARNINGS","warnOnce","Tappable","sizeYClassNames","none","COMPACT","warn","IconButton","children","
|
|
1
|
+
{"version":3,"file":"IconButton.js","names":["React","classNames","useAdaptivity","usePlatform","SizeType","Platform","COMMON_WARNINGS","warnOnce","Tappable","sizeYClassNames","none","COMPACT","warn","IconButton","children","className","restProps","platform","sizeY","process","env","NODE_ENV","isAccessible","a11y","href","REGULAR","IOS"],"sources":["../../../src/components/IconButton/IconButton.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 { Platform } from '../../lib/platform';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport styles from './IconButton.module.css';\n\nconst sizeYClassNames = {\n none: styles['IconButton--sizeY-none'],\n [SizeType.COMPACT]: styles['IconButton--sizeY-compact'],\n};\n\nexport interface IconButtonProps extends TappableProps {\n children?: React.ReactNode;\n}\n\nconst warn = warnOnce('IconButton');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/IconButton\n */\nexport const IconButton = ({ children, className, ...restProps }: IconButtonProps) => {\n const platform = usePlatform();\n const { sizeY = 'none' } = useAdaptivity();\n\n if (process.env.NODE_ENV === 'development') {\n const isAccessible = restProps['aria-label'] || restProps['aria-labelledby'];\n\n if (!isAccessible) {\n warn(COMMON_WARNINGS.a11y[restProps.href ? 'link-name' : 'button-name'], 'error');\n }\n }\n\n return (\n <Tappable\n activeEffectDelay={200}\n activeMode=\"background\"\n Component={restProps.href ? 'a' : 'button'}\n {...restProps}\n className={classNames(\n styles['IconButton'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n platform === Platform.IOS && styles['IconButton--ios'],\n className,\n )}\n >\n {children}\n </Tappable>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,eAAe,EAAEC,QAAQ,QAAQ,oBAAoB;AAC9D,SAASC,QAAQ,QAAuB,sBAAsB;AAG9D,IAAMC,eAAe;EACnBC,IAAI;AAAkC,GACrCN,QAAQ,CAACO,OAAO,kCAClB;AAMD,IAAMC,IAAI,GAAGL,QAAQ,CAAC,YAAY,CAAC;;AAEnC;AACA;AACA;AACA,OAAO,IAAMM,UAAU,GAAG,SAAbA,UAAU,OAA+D;EAAA,IAAzDC,QAAQ,QAARA,QAAQ;IAAEC,SAAS,QAATA,SAAS;IAAKC,SAAS;EAC5D,IAAMC,QAAQ,GAAGd,WAAW,EAAE;EAC9B,qBAA2BD,aAAa,EAAE;IAAA,sCAAlCgB,KAAK;IAALA,KAAK,qCAAG,MAAM;EAEtB,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1C,IAAMC,YAAY,GAAGN,SAAS,CAAC,YAAY,CAAC,IAAIA,SAAS,CAAC,iBAAiB,CAAC;IAE5E,IAAI,CAACM,YAAY,EAAE;MACjBV,IAAI,CAACN,eAAe,CAACiB,IAAI,CAACP,SAAS,CAACQ,IAAI,GAAG,WAAW,GAAG,aAAa,CAAC,EAAE,OAAO,CAAC;IACnF;EACF;EAEA,oBACE,oBAAC,QAAQ;IACP,iBAAiB,EAAE,GAAI;IACvB,UAAU,EAAC,YAAY;IACvB,SAAS,EAAER,SAAS,CAACQ,IAAI,GAAG,GAAG,GAAG;EAAS,GACvCR,SAAS;IACb,SAAS,EAAEf,UAAU,mBAEnBiB,KAAK,KAAKd,QAAQ,CAACqB,OAAO,IAAIhB,eAAe,CAACS,KAAK,CAAC,EACpDD,QAAQ,KAAKZ,QAAQ,CAACqB,GAAG,yBAA6B,EACtDX,SAAS;EACT,IAEDD,QAAQ,CACA;AAEf,CAAC"}
|
|
@@ -6,4 +6,4 @@ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement>,
|
|
|
6
6
|
/**
|
|
7
7
|
* @see https://vkcom.github.io/VKUI/#/Input
|
|
8
8
|
*/
|
|
9
|
-
export declare const Input: ({ type, align, getRef, className, getRootRef, style, before, after, status, ...restProps }: InputProps) => JSX.Element;
|
|
9
|
+
export declare const Input: ({ type, align, getRef, className, getRootRef, style, before, after, status, mode, ...restProps }: InputProps) => JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
-
var _excluded = ["type", "align", "getRef", "className", "getRootRef", "style", "before", "after", "status"];
|
|
4
|
+
var _excluded = ["type", "align", "getRef", "className", "getRootRef", "style", "before", "after", "status", "mode"];
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { classNames } from '@vkontakte/vkjs';
|
|
7
7
|
import { useAdaptivity } from '../../hooks/useAdaptivity';
|
|
@@ -24,6 +24,7 @@ export var Input = function Input(_ref) {
|
|
|
24
24
|
before = _ref.before,
|
|
25
25
|
after = _ref.after,
|
|
26
26
|
status = _ref.status,
|
|
27
|
+
mode = _ref.mode,
|
|
27
28
|
restProps = _objectWithoutProperties(_ref, _excluded);
|
|
28
29
|
var _useAdaptivity = useAdaptivity(),
|
|
29
30
|
_useAdaptivity$sizeY = _useAdaptivity.sizeY,
|
|
@@ -35,6 +36,7 @@ export var Input = function Input(_ref) {
|
|
|
35
36
|
before: before,
|
|
36
37
|
after: after,
|
|
37
38
|
disabled: restProps.disabled,
|
|
39
|
+
mode: mode,
|
|
38
40
|
status: status
|
|
39
41
|
}, /*#__PURE__*/React.createElement("input", _extends({}, restProps, {
|
|
40
42
|
type: type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","names":["React","classNames","useAdaptivity","SizeType","FormField","sizeYClassNames","none","COMPACT","Input","type","align","getRef","className","getRootRef","style","before","after","status","restProps","sizeY","styles","REGULAR","disabled"],"sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { SizeType } from '../../lib/adaptivity';\nimport { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport styles from './Input.module.css';\n\nconst sizeYClassNames = {\n none: styles['Input--sizeY-none'],\n [SizeType.COMPACT]: styles['Input--sizeY-compact'],\n};\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRef<HTMLInputElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n FormFieldProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Input\n */\nexport const Input = ({\n type = 'text',\n align,\n getRef,\n className,\n getRootRef,\n style,\n before,\n after,\n status,\n ...restProps\n}: InputProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n\n return (\n <FormField\n style={style}\n className={classNames(\n styles['Input'],\n align && styles[`Input--align-${align}`],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n before && styles['Input--hasBefore'],\n after && styles['Input--hasAfter'],\n className,\n )}\n getRootRef={getRootRef}\n before={before}\n after={after}\n disabled={restProps.disabled}\n status={status}\n >\n <input {...restProps} type={type} className={styles['Input__el']} ref={getRef} />\n </FormField>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,QAAQ,QAAQ,sBAAsB;AAE/C,SAASC,SAAS,QAAwB,wBAAwB;AAGlE,IAAMC,eAAe;EACnBC,IAAI;AAA6B,GAChCH,QAAQ,CAACI,OAAO,6BAClB;AASD;AACA;AACA;AACA,OAAO,IAAMC,KAAK,GAAG,SAARA,KAAK,
|
|
1
|
+
{"version":3,"file":"Input.js","names":["React","classNames","useAdaptivity","SizeType","FormField","sizeYClassNames","none","COMPACT","Input","type","align","getRef","className","getRootRef","style","before","after","status","mode","restProps","sizeY","styles","REGULAR","disabled"],"sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { SizeType } from '../../lib/adaptivity';\nimport { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport styles from './Input.module.css';\n\nconst sizeYClassNames = {\n none: styles['Input--sizeY-none'],\n [SizeType.COMPACT]: styles['Input--sizeY-compact'],\n};\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRef<HTMLInputElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n FormFieldProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Input\n */\nexport const Input = ({\n type = 'text',\n align,\n getRef,\n className,\n getRootRef,\n style,\n before,\n after,\n status,\n mode,\n ...restProps\n}: InputProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n\n return (\n <FormField\n style={style}\n className={classNames(\n styles['Input'],\n align && styles[`Input--align-${align}`],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n before && styles['Input--hasBefore'],\n after && styles['Input--hasAfter'],\n className,\n )}\n getRootRef={getRootRef}\n before={before}\n after={after}\n disabled={restProps.disabled}\n mode={mode}\n status={status}\n >\n <input {...restProps} type={type} className={styles['Input__el']} ref={getRef} />\n </FormField>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,QAAQ,QAAQ,sBAAsB;AAE/C,SAASC,SAAS,QAAwB,wBAAwB;AAGlE,IAAMC,eAAe;EACnBC,IAAI;AAA6B,GAChCH,QAAQ,CAACI,OAAO,6BAClB;AASD;AACA;AACA;AACA,OAAO,IAAMC,KAAK,GAAG,SAARA,KAAK,OAYA;EAAA,qBAXhBC,IAAI;IAAJA,IAAI,0BAAG,MAAM;IACbC,KAAK,QAALA,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,SAAS,QAATA,SAAS;IACTC,UAAU,QAAVA,UAAU;IACVC,KAAK,QAALA,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,KAAK,QAALA,KAAK;IACLC,MAAM,QAANA,MAAM;IACNC,IAAI,QAAJA,IAAI;IACDC,SAAS;EAEZ,qBAA2BjB,aAAa,EAAE;IAAA,sCAAlCkB,KAAK;IAALA,KAAK,qCAAG,MAAM;EAEtB,oBACE,oBAAC,SAAS;IACR,KAAK,EAAEN,KAAM;IACb,SAAS,EAAEb,UAAU,cAEnBS,KAAK,IAAIW,MAAM,wBAAiBX,KAAK,EAAG,EACxCU,KAAK,KAAKjB,QAAQ,CAACmB,OAAO,IAAIjB,eAAe,CAACe,KAAK,CAAC,EACpDL,MAAM,0BAA8B,EACpCC,KAAK,yBAA6B,EAClCJ,SAAS,CACT;IACF,UAAU,EAAEC,UAAW;IACvB,MAAM,EAAEE,MAAO;IACf,KAAK,EAAEC,KAAM;IACb,QAAQ,EAAEG,SAAS,CAACI,QAAS;IAC7B,IAAI,EAAEL,IAAK;IACX,MAAM,EAAED;EAAO,gBAEf,0CAAWE,SAAS;IAAE,IAAI,EAAEV,IAAK;IAAC,SAAS,iBAAsB;IAAC,GAAG,EAAEE;EAAO,GAAG,CACvE;AAEhB,CAAC;AAAC;EAAA;EAAA;EAAA;AAAA"}
|
|
@@ -6,6 +6,7 @@ import { classNames } from '@vkontakte/vkjs';
|
|
|
6
6
|
import { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';
|
|
7
7
|
import { useOrientationChange } from '../../hooks/useOrientationChange';
|
|
8
8
|
import { usePlatform } from '../../hooks/usePlatform';
|
|
9
|
+
import { SizeType } from '../../lib/adaptivity';
|
|
9
10
|
import { getNavId } from '../../lib/getNavId';
|
|
10
11
|
import { Platform } from '../../lib/platform';
|
|
11
12
|
import { multiRef } from '../../lib/utils';
|
|
@@ -13,10 +14,6 @@ import { warnOnce } from '../../lib/warnOnce';
|
|
|
13
14
|
import { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';
|
|
14
15
|
import { ModalRootContext, useModalRegistry } from '../ModalRoot/ModalRootContext';
|
|
15
16
|
import { ModalType } from '../ModalRoot/types';
|
|
16
|
-
var sizeXClassNames = {
|
|
17
|
-
regular: "vkuiModalPage--sizeX-regular",
|
|
18
|
-
compact: ''
|
|
19
|
-
};
|
|
20
17
|
var sizeClassName = {
|
|
21
18
|
s: "vkuiModalPage--size-s",
|
|
22
19
|
m: "vkuiModalPage--size-m",
|
|
@@ -63,7 +60,7 @@ export var ModalPage = function ModalPage(_ref) {
|
|
|
63
60
|
refs = _useModalRegistry.refs;
|
|
64
61
|
return /*#__PURE__*/React.createElement("div", _extends({}, restProps, {
|
|
65
62
|
id: id,
|
|
66
|
-
className: classNames("vkuiModalPage", platform === Platform.IOS && "vkuiModalPage--ios", isDesktop && "vkuiModalPage--desktop",
|
|
63
|
+
className: classNames("vkuiModalPage", platform === Platform.IOS && "vkuiModalPage--ios", isDesktop && "vkuiModalPage--desktop", sizeX === SizeType.REGULAR && "vkuiModalPage--sizeX-regular", typeof size === 'string' && sizeClassName[size], className)
|
|
67
64
|
}), /*#__PURE__*/React.createElement("div", {
|
|
68
65
|
className: "vkuiModalPage__in-wrap",
|
|
69
66
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalPage.js","names":["React","classNames","useAdaptivityWithJSMediaQueries","useOrientationChange","usePlatform","getNavId","Platform","multiRef","warnOnce","ModalDismissButton","ModalRootContext","useModalRegistry","ModalType","
|
|
1
|
+
{"version":3,"file":"ModalPage.js","names":["React","classNames","useAdaptivityWithJSMediaQueries","useOrientationChange","usePlatform","SizeType","getNavId","Platform","multiRef","warnOnce","ModalDismissButton","ModalRootContext","useModalRegistry","ModalType","sizeClassName","s","m","l","warn","ModalPage","children","header","size","sizeProp","onOpen","onOpened","onClose","onClosed","settlingHeight","dynamicContentHeight","getModalContentRef","nav","id","hideCloseButton","className","restProps","useContext","updateModalHeight","platform","orientation","sizeX","isDesktop","useEffect","isCloseButtonShown","modalContext","PAGE","refs","IOS","REGULAR","maxWidth","undefined","innerElement","headerElement","contentElement"],"sources":["../../../src/components/ModalPage/ModalPage.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivityWithJSMediaQueries } from '../../hooks/useAdaptivityWithJSMediaQueries';\nimport { useOrientationChange } from '../../hooks/useOrientationChange';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { multiRef } from '../../lib/utils';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { ModalDismissButton } from '../ModalDismissButton/ModalDismissButton';\nimport { ModalRootContext, useModalRegistry } from '../ModalRoot/ModalRootContext';\nimport { ModalType } from '../ModalRoot/types';\nimport styles from './ModalPage.module.css';\n\nconst sizeClassName = {\n s: styles[`ModalPage--size-s`],\n m: styles[`ModalPage--size-m`],\n l: styles[`ModalPage--size-l`],\n};\n\nexport interface ModalPageProps extends React.HTMLAttributes<HTMLDivElement>, NavIdProps {\n /**\n * Шапка модальной страницы, `<ModalPageHeader />`\n */\n header?: React.ReactNode;\n /**\n * Задаёт контенту максимальную ширину для десктопной версии.\n */\n size?: 's' | 'm' | 'l' | number;\n /**\n * Будет вызвано при начале открытия модалки.\n */\n onOpen?: VoidFunction;\n /**\n * Будет вызвано при окончательном открытии модалки.\n */\n onOpened?: VoidFunction;\n /**\n * Будет вызвано при начале закрытия модалки.\n */\n onClose?: VoidFunction;\n /**\n * Будет вызвано при окончательном закрытии модалки.\n */\n onClosed?: VoidFunction;\n /**\n * Процент, на который изначально будет открыта модальная страница. При `settlingHeight={100}` модальная страница раскрывается на всю высоту.\n */\n settlingHeight?: number;\n /**\n * Если высота контента в модальной странице может поменяться, нужно установить это свойство\n */\n dynamicContentHeight?: boolean;\n getModalContentRef?: React.Ref<HTMLDivElement>;\n /**\n * Скрывает кнопку закрытия (актуально для iOS, т.к. можно отрисовать кнопку закрытия внутри модалки)\n */\n hideCloseButton?: boolean;\n}\n\nconst warn = warnOnce('ModalPage');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ModalPage\n */\nexport const ModalPage = ({\n children,\n header,\n size: sizeProp = 's',\n onOpen,\n onOpened,\n onClose,\n onClosed,\n settlingHeight, // 75\n dynamicContentHeight,\n getModalContentRef,\n nav,\n id,\n hideCloseButton = false,\n className,\n ...restProps\n}: ModalPageProps) => {\n const { updateModalHeight } = React.useContext(ModalRootContext);\n\n const platform = usePlatform();\n const orientation = useOrientationChange();\n const { sizeX, isDesktop } = useAdaptivityWithJSMediaQueries();\n\n React.useEffect(updateModalHeight, [children, orientation, updateModalHeight]);\n\n const isCloseButtonShown = !hideCloseButton && isDesktop;\n const size = isDesktop ? sizeProp : 's';\n\n const modalContext = React.useContext(ModalRootContext);\n const { refs } = useModalRegistry(getNavId({ nav, id }, warn), ModalType.PAGE);\n\n return (\n <div\n {...restProps}\n id={id}\n className={classNames(\n styles['ModalPage'],\n platform === Platform.IOS && styles['ModalPage--ios'],\n isDesktop && styles['ModalPage--desktop'],\n sizeX === SizeType.REGULAR && styles['ModalPage--sizeX-regular'],\n typeof size === 'string' && sizeClassName[size],\n className,\n )}\n >\n <div\n className={styles['ModalPage__in-wrap']}\n style={{\n maxWidth: typeof size === 'number' ? size : undefined,\n }}\n ref={refs.innerElement}\n >\n <div className={styles['ModalPage__in']}>\n <div className={styles['ModalPage__header']} ref={refs.headerElement}>\n {header}\n </div>\n\n <div className={styles['ModalPage__content-wrap']}>\n <div\n className={styles['ModalPage__content']}\n ref={multiRef<HTMLDivElement>(refs.contentElement, getModalContentRef)}\n >\n <div className={styles['ModalPage__content-in']}>{children}</div>\n </div>\n </div>\n {isCloseButtonShown && <ModalDismissButton onClick={onClose || modalContext.onClose} />}\n </div>\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -73,7 +73,7 @@ export var Pagination = function Pagination(_ref) {
|
|
|
73
73
|
key: page
|
|
74
74
|
}, /*#__PURE__*/React.createElement("div", {
|
|
75
75
|
className: classNames("vkuiPagination__page", "vkuiPagination__page--type-ellipsis", pageSizeYClassNames[sizeY], disabled && "vkuiPagination__page--disabled")
|
|
76
|
-
}, "
|
|
76
|
+
}, "\u2026"));
|
|
77
77
|
default:
|
|
78
78
|
{
|
|
79
79
|
var _isCurrent = page === currentPage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","names":["React","Icon24ChevronCompactLeft","Icon24ChevronCompactRight","classNames","useAdaptivity","usePagination","SizeType","Button","Tappable","pageSizeYClassNames","none","COMPACT","REGULAR","getPageAriaLabelDefault","page","isCurrent","Pagination","currentPage","siblingCount","boundaryCount","totalPages","disabled","getPageAriaLabel","prevButtonAriaLabel","nextButtonAriaLabel","getRootRef","onChange","className","resetProps","sizeY","pages","isFirstPage","isLastPage","handlePrevClick","useCallback","handleClick","event","currentTarget","dataset","Number","handleNextClick","renderPages","undefined","map"],"sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon24ChevronCompactLeft, Icon24ChevronCompactRight } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { PaginationPageType, usePagination } from '../../hooks/usePagination';\nimport { SizeType } from '../../lib/adaptivity';\nimport type { HasRootRef } from '../../types';\nimport { Button } from '../Button/Button';\nimport { Tappable } from '../Tappable/Tappable';\nimport styles from './Pagination.module.css';\n\nconst pageSizeYClassNames = {\n none: styles['Pagination__page--sizeY-none'],\n [SizeType.COMPACT]: styles['Pagination__page--sizeY-compact'],\n [SizeType.REGULAR]: styles['Pagination__page--sizeY-regular'],\n};\n\nfunction getPageAriaLabelDefault(page: number, isCurrent: boolean): string {\n return isCurrent ? `${page} страница` : `Перейти на ${page} страницу`;\n}\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'>,\n HasRootRef<HTMLElement> {\n /**\n * Текущая страница.\n */\n currentPage?: number;\n /**\n * Кол-во всегда видимых страниц по краям текущей страницы.\n */\n siblingCount?: number;\n /**\n * Кол-во всегда видимых страниц в начале и в конце.\n */\n boundaryCount?: number;\n /**\n * Общее кол-во страниц.\n */\n totalPages?: number;\n /**\n * Блокировка всех кнопок.\n */\n disabled?: boolean;\n /**\n * Переопределение `aria-label` для кнопки навигации назад.\n * По умолчанию используется текст на \"ru_RU\".\n */\n prevButtonAriaLabel?: string;\n /**\n * Переопределение `aria-label` для кнопки навигации вперёд.\n * По умолчанию используется текст на \"ru_RU\".\n */\n nextButtonAriaLabel?: string;\n /**\n * Функция для переопределения и/или локализации `aria-label` атрибута.\n * По умолчанию используется текст на \"ru_RU\".\n */\n getPageAriaLabel?(page: number, isCurrent: boolean): string;\n onChange?(page: number): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Pagination\n */\nexport const Pagination = ({\n currentPage = 1,\n siblingCount = 1,\n boundaryCount = 1,\n totalPages = 1,\n disabled,\n getPageAriaLabel = getPageAriaLabelDefault,\n prevButtonAriaLabel = 'Перейти на предыдущую страницу',\n nextButtonAriaLabel = 'Перейти на следующую страницу',\n getRootRef,\n onChange,\n className,\n ...resetProps\n}: PaginationProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n\n const pages = usePagination({\n currentPage,\n totalPages,\n siblingCount,\n boundaryCount,\n });\n const isFirstPage = currentPage === 1;\n const isLastPage = currentPage === totalPages;\n\n const handlePrevClick = React.useCallback(() => {\n if (onChange && !isFirstPage) {\n onChange(currentPage - 1);\n }\n }, [currentPage, isFirstPage, onChange]);\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const page: string = event.currentTarget.dataset.page || '1';\n onChange?.(Number(page));\n },\n [onChange],\n );\n\n const handleNextClick = React.useCallback(() => {\n if (onChange && !isLastPage) {\n onChange(currentPage + 1);\n }\n }, [currentPage, isLastPage, onChange]);\n\n const renderPages = React.useCallback(\n (page: PaginationPageType) => {\n switch (page) {\n case 'start-ellipsis':\n case 'end-ellipsis':\n return (\n <li key={page}>\n <div\n className={classNames(\n styles['Pagination__page'],\n styles['Pagination__page--type-ellipsis'],\n pageSizeYClassNames[sizeY],\n disabled && styles['Pagination__page--disabled'],\n )}\n >\n ...\n </div>\n </li>\n );\n default: {\n const isCurrent = page === currentPage;\n return (\n <li key={page}>\n <Tappable\n className={classNames(\n styles['Pagination__page'],\n pageSizeYClassNames[sizeY],\n isCurrent && styles['Pagination__page--current'],\n disabled && styles['Pagination__page--disabled'],\n )}\n activeMode={styles['Pagination__page--state-active']}\n hoverMode={styles['Pagination__page--state-hover']}\n hasActive={!isCurrent}\n hasHover={!isCurrent}\n focusVisibleMode=\"outside\"\n disabled={disabled}\n data-page={page}\n aria-current={isCurrent ? true : undefined}\n aria-label={getPageAriaLabel(page, isCurrent)}\n onClick={handleClick}\n >\n {page}\n </Tappable>\n </li>\n );\n }\n }\n },\n [sizeY, currentPage, disabled, getPageAriaLabel, handleClick],\n );\n\n return (\n <nav\n className={classNames(styles['Pagination'], className)}\n role=\"navigation\"\n aria-label=\"Навигация по страницам\"\n ref={getRootRef}\n {...resetProps}\n >\n <ul className={styles['Pagination__list']}>\n <li className={styles['Pagination__prevButtonContainer']}>\n <Button\n size=\"l\"\n before={<Icon24ChevronCompactLeft width={24} />}\n appearance=\"accent\"\n mode=\"tertiary\"\n disabled={isFirstPage || disabled}\n aria-label={prevButtonAriaLabel}\n onClick={handlePrevClick}\n />\n </li>\n {pages.map(renderPages)}\n <li className={styles['Pagination__nextButtonContainer']}>\n <Button\n size=\"l\"\n after={<Icon24ChevronCompactRight width={24} />}\n appearance=\"accent\"\n mode=\"tertiary\"\n disabled={isLastPage || disabled}\n aria-label={nextButtonAriaLabel}\n onClick={handleNextClick}\n />\n </li>\n </ul>\n </nav>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.js","names":["React","Icon24ChevronCompactLeft","Icon24ChevronCompactRight","classNames","useAdaptivity","usePagination","SizeType","Button","Tappable","pageSizeYClassNames","none","COMPACT","REGULAR","getPageAriaLabelDefault","page","isCurrent","Pagination","currentPage","siblingCount","boundaryCount","totalPages","disabled","getPageAriaLabel","prevButtonAriaLabel","nextButtonAriaLabel","getRootRef","onChange","className","resetProps","sizeY","pages","isFirstPage","isLastPage","handlePrevClick","useCallback","handleClick","event","currentTarget","dataset","Number","handleNextClick","renderPages","undefined","map"],"sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon24ChevronCompactLeft, Icon24ChevronCompactRight } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { PaginationPageType, usePagination } from '../../hooks/usePagination';\nimport { SizeType } from '../../lib/adaptivity';\nimport type { HasRootRef } from '../../types';\nimport { Button } from '../Button/Button';\nimport { Tappable } from '../Tappable/Tappable';\nimport styles from './Pagination.module.css';\n\nconst pageSizeYClassNames = {\n none: styles['Pagination__page--sizeY-none'],\n [SizeType.COMPACT]: styles['Pagination__page--sizeY-compact'],\n [SizeType.REGULAR]: styles['Pagination__page--sizeY-regular'],\n};\n\nfunction getPageAriaLabelDefault(page: number, isCurrent: boolean): string {\n return isCurrent ? `${page} страница` : `Перейти на ${page} страницу`;\n}\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLElement>, 'onChange'>,\n HasRootRef<HTMLElement> {\n /**\n * Текущая страница.\n */\n currentPage?: number;\n /**\n * Кол-во всегда видимых страниц по краям текущей страницы.\n */\n siblingCount?: number;\n /**\n * Кол-во всегда видимых страниц в начале и в конце.\n */\n boundaryCount?: number;\n /**\n * Общее кол-во страниц.\n */\n totalPages?: number;\n /**\n * Блокировка всех кнопок.\n */\n disabled?: boolean;\n /**\n * Переопределение `aria-label` для кнопки навигации назад.\n * По умолчанию используется текст на \"ru_RU\".\n */\n prevButtonAriaLabel?: string;\n /**\n * Переопределение `aria-label` для кнопки навигации вперёд.\n * По умолчанию используется текст на \"ru_RU\".\n */\n nextButtonAriaLabel?: string;\n /**\n * Функция для переопределения и/или локализации `aria-label` атрибута.\n * По умолчанию используется текст на \"ru_RU\".\n */\n getPageAriaLabel?(page: number, isCurrent: boolean): string;\n onChange?(page: number): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Pagination\n */\nexport const Pagination = ({\n currentPage = 1,\n siblingCount = 1,\n boundaryCount = 1,\n totalPages = 1,\n disabled,\n getPageAriaLabel = getPageAriaLabelDefault,\n prevButtonAriaLabel = 'Перейти на предыдущую страницу',\n nextButtonAriaLabel = 'Перейти на следующую страницу',\n getRootRef,\n onChange,\n className,\n ...resetProps\n}: PaginationProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n\n const pages = usePagination({\n currentPage,\n totalPages,\n siblingCount,\n boundaryCount,\n });\n const isFirstPage = currentPage === 1;\n const isLastPage = currentPage === totalPages;\n\n const handlePrevClick = React.useCallback(() => {\n if (onChange && !isFirstPage) {\n onChange(currentPage - 1);\n }\n }, [currentPage, isFirstPage, onChange]);\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const page: string = event.currentTarget.dataset.page || '1';\n onChange?.(Number(page));\n },\n [onChange],\n );\n\n const handleNextClick = React.useCallback(() => {\n if (onChange && !isLastPage) {\n onChange(currentPage + 1);\n }\n }, [currentPage, isLastPage, onChange]);\n\n const renderPages = React.useCallback(\n (page: PaginationPageType) => {\n switch (page) {\n case 'start-ellipsis':\n case 'end-ellipsis':\n return (\n <li key={page}>\n <div\n className={classNames(\n styles['Pagination__page'],\n styles['Pagination__page--type-ellipsis'],\n pageSizeYClassNames[sizeY],\n disabled && styles['Pagination__page--disabled'],\n )}\n >\n …\n </div>\n </li>\n );\n default: {\n const isCurrent = page === currentPage;\n return (\n <li key={page}>\n <Tappable\n className={classNames(\n styles['Pagination__page'],\n pageSizeYClassNames[sizeY],\n isCurrent && styles['Pagination__page--current'],\n disabled && styles['Pagination__page--disabled'],\n )}\n activeMode={styles['Pagination__page--state-active']}\n hoverMode={styles['Pagination__page--state-hover']}\n hasActive={!isCurrent}\n hasHover={!isCurrent}\n focusVisibleMode=\"outside\"\n disabled={disabled}\n data-page={page}\n aria-current={isCurrent ? true : undefined}\n aria-label={getPageAriaLabel(page, isCurrent)}\n onClick={handleClick}\n >\n {page}\n </Tappable>\n </li>\n );\n }\n }\n },\n [sizeY, currentPage, disabled, getPageAriaLabel, handleClick],\n );\n\n return (\n <nav\n className={classNames(styles['Pagination'], className)}\n role=\"navigation\"\n aria-label=\"Навигация по страницам\"\n ref={getRootRef}\n {...resetProps}\n >\n <ul className={styles['Pagination__list']}>\n <li className={styles['Pagination__prevButtonContainer']}>\n <Button\n size=\"l\"\n before={<Icon24ChevronCompactLeft width={24} />}\n appearance=\"accent\"\n mode=\"tertiary\"\n disabled={isFirstPage || disabled}\n aria-label={prevButtonAriaLabel}\n onClick={handlePrevClick}\n />\n </li>\n {pages.map(renderPages)}\n <li className={styles['Pagination__nextButtonContainer']}>\n <Button\n size=\"l\"\n after={<Icon24ChevronCompactRight width={24} />}\n appearance=\"accent\"\n mode=\"tertiary\"\n disabled={isLastPage || disabled}\n aria-label={nextButtonAriaLabel}\n onClick={handleNextClick}\n />\n </li>\n </ul>\n </nav>\n );\n};\n"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { classNames } from '@vkontakte/vkjs';
|
|
|
6
6
|
import { useAdaptivity } from '../../hooks/useAdaptivity';
|
|
7
7
|
import { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';
|
|
8
8
|
import { usePlatform } from '../../hooks/usePlatform';
|
|
9
|
+
import { SizeType } from '../../lib/adaptivity';
|
|
9
10
|
import { Platform } from '../../lib/platform';
|
|
10
11
|
import { useConfigProvider, WebviewType } from '../ConfigProvider/ConfigProviderContext';
|
|
11
12
|
import { FixedLayout } from '../FixedLayout/FixedLayout';
|
|
@@ -25,9 +26,8 @@ function getPlatformClassName(platform) {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
var sizeXClassNames = {
|
|
28
|
-
|
|
29
|
-
regular: "vkuiPanelHeader--sizeX-regular"
|
|
30
|
-
none: "vkuiPanelHeader--sizeX-none"
|
|
29
|
+
none: "vkuiPanelHeader--sizeX-none",
|
|
30
|
+
regular: "vkuiPanelHeader--sizeX-regular"
|
|
31
31
|
};
|
|
32
32
|
var PanelHeaderIn = function PanelHeaderIn(_ref) {
|
|
33
33
|
var before = _ref.before,
|
|
@@ -53,6 +53,7 @@ var PanelHeaderIn = function PanelHeaderIn(_ref) {
|
|
|
53
53
|
}, children)), /*#__PURE__*/React.createElement("div", {
|
|
54
54
|
className: "vkuiPanelHeader__after"
|
|
55
55
|
}, (webviewType === WebviewType.INTERNAL || isInsideModal) && after)), separator && platform === Platform.VKCOM && /*#__PURE__*/React.createElement(Separator, {
|
|
56
|
+
className: "vkuiPanelHeader__separator",
|
|
56
57
|
wide: true
|
|
57
58
|
}));
|
|
58
59
|
};
|
|
@@ -88,7 +89,7 @@ export var PanelHeader = function PanelHeader(_ref2) {
|
|
|
88
89
|
adaptiveSizeX = _useAdaptivityConditi.sizeX;
|
|
89
90
|
var isFixed = fixed !== undefined ? fixed : platform !== Platform.VKCOM;
|
|
90
91
|
return /*#__PURE__*/React.createElement("div", _extends({}, restProps, {
|
|
91
|
-
className: classNames("vkuiPanelHeader", getPlatformClassName(platform), transparent && "vkuiPanelHeader--trnsp", shadow && "vkuiPanelHeader--shadow", visor && "vkuiPanelHeader--vis", separator && visor && "vkuiPanelHeader--sep", webviewType === WebviewType.VKAPPS && !isInsideModal && "vkuiPanelHeader--vkapps", !before && "vkuiPanelHeader--no-before", !after && "vkuiPanelHeader--no-after", isFixed && "vkuiPanelHeader--fixed", sizeXClassNames[sizeX], className),
|
|
92
|
+
className: classNames("vkuiPanelHeader", getPlatformClassName(platform), transparent && "vkuiPanelHeader--trnsp", shadow && "vkuiPanelHeader--shadow", visor && "vkuiPanelHeader--vis", separator && visor && "vkuiPanelHeader--sep", webviewType === WebviewType.VKAPPS && !isInsideModal && "vkuiPanelHeader--vkapps", !before && "vkuiPanelHeader--no-before", !after && "vkuiPanelHeader--no-after", isFixed && "vkuiPanelHeader--fixed", sizeX !== SizeType.COMPACT && sizeXClassNames[sizeX], className),
|
|
92
93
|
ref: isFixed ? getRootRef : getRef
|
|
93
94
|
}), isFixed ? /*#__PURE__*/React.createElement(FixedLayout, {
|
|
94
95
|
className: "vkuiPanelHeader__fixed",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanelHeader.js","names":["React","classNames","useAdaptivity","useAdaptivityConditionalRender","usePlatform","Platform","useConfigProvider","WebviewType","FixedLayout","ModalRootContext","Separator","Spacing","TooltipContainer","Text","getPlatformClassName","platform","sizeXClassNames","
|
|
1
|
+
{"version":3,"file":"PanelHeader.js","names":["React","classNames","useAdaptivity","useAdaptivityConditionalRender","usePlatform","SizeType","Platform","useConfigProvider","WebviewType","FixedLayout","ModalRootContext","Separator","Spacing","TooltipContainer","Text","getPlatformClassName","platform","sizeXClassNames","none","regular","PanelHeaderIn","before","after","separator","children","webviewType","useContext","isInsideModal","VKCOM","INTERNAL","PanelHeader","visor","transparent","shadow","getRef","getRootRef","fixed","className","restProps","sizeX","adaptiveSizeX","isFixed","undefined","VKAPPS","COMPACT","compact"],"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 { 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\nfunction getPlatformClassName(platform: string): string {\n switch (platform) {\n case 'ios':\n return styles['PanelHeader--ios'];\n case 'vkcom':\n return styles['PanelHeader--vkcom'];\n default:\n return styles['PanelHeader--android'];\n }\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\nconst PanelHeaderIn = ({ before, after, separator, children }: PanelHeaderProps) => {\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const platform = usePlatform();\n\n return (\n <React.Fragment>\n <TooltipContainer fixed className={styles['PanelHeader__in']}>\n <div className={styles['PanelHeader__before']}>{before}</div>\n <div className={styles['PanelHeader__content']}>\n {platform === Platform.VKCOM ? (\n <Text weight=\"2\">{children}</Text>\n ) : (\n <span className={styles['PanelHeader__content-in']}>{children}</span>\n )}\n </div>\n <div className={styles['PanelHeader__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 ...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 getPlatformClassName(platform),\n transparent && styles['PanelHeader--trnsp'],\n shadow && styles['PanelHeader--shadow'],\n visor && styles['PanelHeader--vis'],\n separator && visor && styles['PanelHeader--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 className={styles['PanelHeader__fixed']} vertical=\"top\" getRootRef={getRef}>\n <PanelHeaderIn before={before} after={after} separator={separator}>\n {children}\n </PanelHeaderIn>\n </FixedLayout>\n ) : (\n <PanelHeaderIn before={before} after={after} separator={separator}>\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"],"mappings":"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"}
|
|
@@ -71,9 +71,10 @@ export var PanelHeaderButton = function PanelHeaderButton(_ref2) {
|
|
|
71
71
|
warn('a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.', 'error');
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
return /*#__PURE__*/React.createElement(Tappable, _extends({
|
|
74
|
+
return /*#__PURE__*/React.createElement(Tappable, _extends({
|
|
75
|
+
Component: restProps.href ? 'a' : 'button'
|
|
76
|
+
}, restProps, {
|
|
75
77
|
hoverMode: hoverMode,
|
|
76
|
-
Component: restProps.href ? 'a' : 'button',
|
|
77
78
|
activeEffectDelay: 200,
|
|
78
79
|
activeMode: activeMode,
|
|
79
80
|
className: classNames("vkuiPanelHeaderButton", getPlatformClassName(platform), isPrimitive && "vkuiPanelHeaderButton--primitive", !isPrimitive && !isPrimitiveLabel && "vkuiPanelHeaderButton--notPrimitive", className)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PanelHeaderButton.js","names":["React","classNames","isPrimitiveReactNode","usePlatform","Platform","getTitleFromChildren","warnOnce","Tappable","Text","Title","getPlatformClassName","platform","ButtonTypography","primary","children","IOS","VKCOM","undefined","warn","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","href"],"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { getTitleFromChildren } from '../../lib/utils';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nfunction getPlatformClassName(platform: string): string {\n switch (platform) {\n case 'ios':\n return styles['PanelHeaderButton--ios'];\n case 'vkcom':\n return styles['PanelHeaderButton--vkcom'];\n default:\n return styles['PanelHeaderButton--android'];\n }\n}\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, 'label'> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps['primary'];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? '1' : '3'}>\n {children}\n </Title>\n );\n }\n\n return <Text weight={platform === Platform.VKCOM ? undefined : '2'}>{children}</Text>;\n};\n\nconst warn = warnOnce('PanelHeaderButton');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n className,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case Platform.IOS:\n hoverMode = 'background';\n activeMode = 'opacity';\n break;\n case Platform.VKCOM:\n hoverMode = styles['PanelHeaderButton--hover'];\n activeMode = styles['PanelHeaderButton--active'];\n break;\n default:\n hoverMode = 'background';\n activeMode = 'background';\n }\n\n if (process.env.NODE_ENV === 'development') {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps['aria-label'] ||\n restProps['aria-labelledby'],\n );\n\n if (!hasAccessibleName) {\n warn(\n 'a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.',\n 'error',\n );\n }\n }\n\n return (\n <Tappable\n
|
|
1
|
+
{"version":3,"file":"PanelHeaderButton.js","names":["React","classNames","isPrimitiveReactNode","usePlatform","Platform","getTitleFromChildren","warnOnce","Tappable","Text","Title","getPlatformClassName","platform","ButtonTypography","primary","children","IOS","VKCOM","undefined","warn","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","href"],"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { Platform } from '../../lib/platform';\nimport { getTitleFromChildren } from '../../lib/utils';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nfunction getPlatformClassName(platform: string): string {\n switch (platform) {\n case 'ios':\n return styles['PanelHeaderButton--ios'];\n case 'vkcom':\n return styles['PanelHeaderButton--vkcom'];\n default:\n return styles['PanelHeaderButton--android'];\n }\n}\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, 'label'> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps['primary'];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? '1' : '3'}>\n {children}\n </Title>\n );\n }\n\n return <Text weight={platform === Platform.VKCOM ? undefined : '2'}>{children}</Text>;\n};\n\nconst warn = warnOnce('PanelHeaderButton');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n className,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case Platform.IOS:\n hoverMode = 'background';\n activeMode = 'opacity';\n break;\n case Platform.VKCOM:\n hoverMode = styles['PanelHeaderButton--hover'];\n activeMode = styles['PanelHeaderButton--active'];\n break;\n default:\n hoverMode = 'background';\n activeMode = 'background';\n }\n\n if (process.env.NODE_ENV === 'development') {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps['aria-label'] ||\n restProps['aria-labelledby'],\n );\n\n if (!hasAccessibleName) {\n warn(\n 'a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.',\n 'error',\n );\n }\n }\n\n return (\n <Tappable\n Component={restProps.href ? 'a' : 'button'}\n {...restProps}\n hoverMode={hoverMode}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNames(\n styles['PanelHeaderButton'],\n getPlatformClassName(platform),\n isPrimitive && styles['PanelHeaderButton--primitive'],\n !isPrimitive && !isPrimitiveLabel && styles['PanelHeaderButton--notPrimitive'],\n className,\n )}\n >\n {isPrimitive ? <ButtonTypography primary={primary}>{children}</ButtonTypography> : children}\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary} className={styles['PanelHeaderButton__label']}>\n {label}\n </ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export interface RichCellProps extends TappableProps {
|
|
|
33
33
|
*/
|
|
34
34
|
before?: React.ReactNode;
|
|
35
35
|
/**
|
|
36
|
-
* Иконка
|
|
36
|
+
* Иконка 28 или текст.
|
|
37
37
|
*/
|
|
38
38
|
after?: React.ReactNode;
|
|
39
39
|
/**
|
|
@@ -52,4 +52,7 @@ export interface RichCellProps extends TappableProps {
|
|
|
52
52
|
/**
|
|
53
53
|
* @see https://vkcom.github.io/VKUI/#/RichCell
|
|
54
54
|
*/
|
|
55
|
-
export declare const RichCell:
|
|
55
|
+
export declare const RichCell: {
|
|
56
|
+
({ subhead, children, text, caption, before, after, afterCaption, bottom, actions, multiline, className, ...restProps }: RichCellProps): JSX.Element;
|
|
57
|
+
Icon: ({ children, className, ...restProps }: React.HTMLAttributes<HTMLDivElement>) => JSX.Element;
|
|
58
|
+
};
|
|
@@ -8,6 +8,7 @@ import { useAdaptivity } from '../../hooks/useAdaptivity';
|
|
|
8
8
|
import { SizeType } from '../../lib/adaptivity';
|
|
9
9
|
import { Tappable } from '../Tappable/Tappable';
|
|
10
10
|
import { Subhead } from '../Typography/Subhead/Subhead';
|
|
11
|
+
import { RichCellIcon } from './RichCellIcon/RichCellIcon';
|
|
11
12
|
var sizeYClassNames = _defineProperty({
|
|
12
13
|
none: "vkuiRichCell--sizeY-none"
|
|
13
14
|
}, SizeType.COMPACT, "vkuiRichCell--sizeY-compact");
|
|
@@ -62,4 +63,5 @@ export var RichCell = function RichCell(_ref) {
|
|
|
62
63
|
className: "vkuiRichCell__actions"
|
|
63
64
|
}, actions)));
|
|
64
65
|
};
|
|
66
|
+
RichCell.Icon = RichCellIcon;
|
|
65
67
|
//# sourceMappingURL=RichCell.js.map
|