diff --git a/src/components/Reactions/DELETE_ME_PLEASE.tsx b/src/components/Reactions/DELETE_ME_PLEASE.tsx new file mode 100644 index 00000000..55d1083e --- /dev/null +++ b/src/components/Reactions/DELETE_ME_PLEASE.tsx @@ -0,0 +1,83 @@ +import * as React from 'react'; + +import {FaceSmile} from '@gravity-ui/icons'; +import {Button, Flex, Icon, Link, Palette, Popup} from '@gravity-ui/uikit'; + +import {block} from '../utils/cn'; + +import {i18n} from './i18n'; + +import './Reactions.scss'; + +const b = block('reactions'); + +export function PopupWithPalette() { + return usePopup('Просто Palette', ); +} + +export function PopupWithButton() { + return usePopup('Просто кнопка', ); +} + +export function PopupWithLink() { + return usePopup('Просто кнопка', ссылка); +} + +function usePopup(label: string, paletteContent: React.ReactNode) { + const [addReactionsElement, setAddReactionsElement] = React.useState( + null, + ); + + const [palettePopupOpened, setPalettePopupOpened] = React.useState(false); + + const onOpenPalettePopup = React.useCallback(() => setPalettePopupOpened(true), []); + const onClosePalettePopup = React.useCallback(() => setPalettePopupOpened(false), []); + const onTogglePalettePopup = React.useCallback( + () => (palettePopupOpened ? onClosePalettePopup() : onOpenPalettePopup()), + [onClosePalettePopup, onOpenPalettePopup, palettePopupOpened], + ); + + const onOpenedChanged = React.useCallback( + (opened: boolean) => { + if (!opened) { + onClosePalettePopup(); + } + }, + [onClosePalettePopup], + ); + + const addReactionButton = ( + + ); + + const addReactionPopup = ( + + {paletteContent} + + ); + + return ( + + {addReactionButton} + {addReactionPopup} + + ); +} diff --git a/src/components/Reactions/Reaction.tsx b/src/components/Reactions/Reaction.tsx index 9fb5f503..ce5970dd 100644 --- a/src/components/Reactions/Reaction.tsx +++ b/src/components/Reactions/Reaction.tsx @@ -49,18 +49,18 @@ export function Reaction(props: ReactionInnerProps) { const onClickCallback = React.useCallback(() => onClick?.(value), [onClick, value]); - const buttonRef = React.useRef(null); - const {onMouseEnter, onMouseLeave} = useReactionsPopup(props.reaction, buttonRef); + const [buttonElement, setButtonElement] = React.useState(null); + const {onMouseEnter, onMouseLeave} = useReactionsPopup(props.reaction, buttonElement); const {openedTooltip: currentHoveredReaction} = useReactionsContext(); const button = (