fix: IconPicker unclosable on mobile

This commit is contained in:
Tom Moor 2021-09-26 15:26:10 -07:00
parent 95dbc8168c
commit c00001086a
4 changed files with 42 additions and 26 deletions

View File

@ -20,6 +20,7 @@ type Props = {|
children: React.Node, children: React.Node,
onOpen?: () => void, onOpen?: () => void,
onClose?: () => void, onClose?: () => void,
hide?: () => void,
|}; |};
export default function ContextMenu({ export default function ContextMenu({
@ -68,7 +69,7 @@ export default function ContextMenu({
</Menu> </Menu>
{(rest.visible || rest.animating) && ( {(rest.visible || rest.animating) && (
<Portal> <Portal>
<Backdrop /> <Backdrop onClick={rest.hide} />
</Portal> </Portal>
)} )}
</> </>

View File

@ -35,6 +35,7 @@ import * as React from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { useMenuState, MenuButton, MenuItem } from "reakit/Menu"; import { useMenuState, MenuButton, MenuItem } from "reakit/Menu";
import styled from "styled-components"; import styled from "styled-components";
import breakpoint from "styled-components-breakpoint";
import ContextMenu from "components/ContextMenu"; import ContextMenu from "components/ContextMenu";
import Flex from "components/Flex"; import Flex from "components/Flex";
import HelpText from "components/HelpText"; import HelpText from "components/HelpText";
@ -188,12 +189,13 @@ const colors = [
type Props = {| type Props = {|
onOpen?: () => void, onOpen?: () => void,
onClose?: () => void,
onChange: (color: string, icon: string) => void, onChange: (color: string, icon: string) => void,
icon: string, icon: string,
color: string, color: string,
|}; |};
function IconPicker({ onOpen, icon, color, onChange }: Props) { function IconPicker({ onOpen, onClose, icon, color, onChange }: Props) {
const { t } = useTranslation(); const { t } = useTranslation();
const menu = useMenuState({ const menu = useMenuState({
modal: true, modal: true,
@ -216,7 +218,12 @@ function IconPicker({ onOpen, icon, color, onChange }: Props) {
</Button> </Button>
)} )}
</MenuButton> </MenuButton>
<ContextMenu {...menu} onOpen={onOpen} aria-label={t("Choose icon")}> <ContextMenu
{...menu}
onOpen={onOpen}
onClose={onClose}
aria-label={t("Choose icon")}
>
<Icons> <Icons>
{Object.keys(icons).map((name) => { {Object.keys(icons).map((name) => {
return ( return (
@ -259,7 +266,10 @@ const Label = styled.label`
const Icons = styled.div` const Icons = styled.div`
padding: 16px 8px 0 16px; padding: 16px 8px 0 16px;
${breakpoint("tablet")`
width: 276px; width: 276px;
`};
`; `;
const Button = styled(NudeButton)` const Button = styled(NudeButton)`
@ -282,6 +292,11 @@ const Loading = styled(HelpText)`
const ColorPicker = styled(TwitterPicker)` const ColorPicker = styled(TwitterPicker)`
box-shadow: none !important; box-shadow: none !important;
background: transparent !important; background: transparent !important;
width: auto !important;
${breakpoint("tablet")`
width: 276px;
`};
`; `;
const Wrapper = styled("div")` const Wrapper = styled("div")`

View File

@ -147,7 +147,7 @@
"react-virtualized-auto-sizer": "^1.0.5", "react-virtualized-auto-sizer": "^1.0.5",
"react-waypoint": "^10.1.0", "react-waypoint": "^10.1.0",
"react-window": "^1.8.6", "react-window": "^1.8.6",
"reakit": "^1.3.8", "reakit": "^1.3.10",
"regenerator-runtime": "^0.13.7", "regenerator-runtime": "^0.13.7",
"rich-markdown-editor": "^11.17.10", "rich-markdown-editor": "^11.17.10",
"semver": "^7.3.2", "semver": "^7.3.2",

View File

@ -12077,35 +12077,35 @@ readdirp@~3.5.0:
dependencies: dependencies:
picomatch "^2.2.1" picomatch "^2.2.1"
reakit-system@^0.15.1: reakit-system@^0.15.2:
version "0.15.1" version "0.15.2"
resolved "https://registry.yarnpkg.com/reakit-system/-/reakit-system-0.15.1.tgz#bf5cc7a03f60a817373bc9cbb4a689c1f4100547" resolved "https://registry.yarnpkg.com/reakit-system/-/reakit-system-0.15.2.tgz#a485fab84b3942acbed6212c3b56a6ef8611c457"
integrity sha512-PkqfAyEohtcEu/gUvKriCv42NywDtUgvocEN3147BI45dOFAB89nrT7wRIbIcKJiUT598F+JlPXAZZVLWhc1Kg== integrity sha512-TvRthEz0DmD0rcJkGamMYx+bATwnGNWJpe/lc8UV2Js8nnPvkaxrHk5fX9cVASFrWbaIyegZHCWUBfxr30bmmA==
dependencies: dependencies:
reakit-utils "^0.15.1" reakit-utils "^0.15.2"
reakit-utils@^0.15.1: reakit-utils@^0.15.2:
version "0.15.1" version "0.15.2"
resolved "https://registry.yarnpkg.com/reakit-utils/-/reakit-utils-0.15.1.tgz#797f0a43f6a1dbc22d161224d5d2272e287dbfe3" resolved "https://registry.yarnpkg.com/reakit-utils/-/reakit-utils-0.15.2.tgz#b4d5836e534576bfd175171541d43182ad97f2d2"
integrity sha512-6cZgKGvOkAMQgkwU9jdYbHfkuIN1Pr+vwcB19plLvcTfVN0Or10JhIuj9X+JaPZyI7ydqTDFaKNdUcDP69o/+Q== integrity sha512-i/RYkq+W6hvfFmXw5QW7zvfJJT/K8a4qZ0hjA79T61JAFPGt23DsfxwyBbyK91GZrJ9HMrXFVXWMovsKBc1qEQ==
reakit-warning@^0.6.1: reakit-warning@^0.6.2:
version "0.6.1" version "0.6.2"
resolved "https://registry.yarnpkg.com/reakit-warning/-/reakit-warning-0.6.1.tgz#dba33bb8866aebe30e67ac433ead707d16d38a36" resolved "https://registry.yarnpkg.com/reakit-warning/-/reakit-warning-0.6.2.tgz#9c346ae483eb1f284f2088653f90cabd26dbee56"
integrity sha512-poFUV0EyxB+CcV9uTNBAFmcgsnR2DzAbOTkld4Ul+QOKSeEHZB3b3+MoZQgcYHmbvG19Na1uWaM7ES+/Eyr8tQ== integrity sha512-z/3fvuc46DJyD3nJAUOto6inz2EbSQTjvI/KBQDqxwB0y02HDyeP8IWOJxvkuAUGkWpeSx+H3QWQFSNiPcHtmw==
dependencies: dependencies:
reakit-utils "^0.15.1" reakit-utils "^0.15.2"
reakit@^1.3.8: reakit@^1.3.10:
version "1.3.8" version "1.3.10"
resolved "https://registry.yarnpkg.com/reakit/-/reakit-1.3.8.tgz#717e1a3b7cc6da803362a0edc2c55d2b6a001baf" resolved "https://registry.yarnpkg.com/reakit/-/reakit-1.3.10.tgz#9b04efb8962cc17ecaffa31bae0396940177d431"
integrity sha512-8SVejx6FUaFi2+Q9eXoDAd4wWi/xAn6v8JgXH8x2xnzye8pb6v5bYvegACVpYVZnrS5w/JUgMTGh1Xy8MkkPww== integrity sha512-HxHtnegMDwidGU4Ik/fKTZ3coihf4nKeycs0QSIFWcau77qL5wL6xnqZrAxcjjDDPOIANct3LxTiAlf+qGLOlw==
dependencies: dependencies:
"@popperjs/core" "^2.5.4" "@popperjs/core" "^2.5.4"
body-scroll-lock "^3.1.5" body-scroll-lock "^3.1.5"
reakit-system "^0.15.1" reakit-system "^0.15.2"
reakit-utils "^0.15.1" reakit-utils "^0.15.2"
reakit-warning "^0.6.1" reakit-warning "^0.6.2"
rechoir@^0.6.2: rechoir@^0.6.2:
version "0.6.2" version "0.6.2"