chore: emoji picker disorder

This commit is contained in:
zerosoul
2022-04-12 13:12:05 +08:00
parent 918afe6827
commit e5d29068c7
2 changed files with 29 additions and 35 deletions
+14 -2
View File
@@ -1,8 +1,8 @@
// import React from 'react' import { useState, useEffect } from "react";
// import { NimblePicker } from "emoji-mart"; // import { NimblePicker } from "emoji-mart";
import "emoji-mart/css/emoji-mart.css";
import { Picker } from "emoji-mart"; import { Picker } from "emoji-mart";
// import data from "emoji-mart/data/"; // import data from "emoji-mart/data/";
import "emoji-mart/css/emoji-mart.css";
import styled from "styled-components"; import styled from "styled-components";
const StyledWrapper = styled.div` const StyledWrapper = styled.div`
filter: drop-shadow(0px 25px 50px rgba(31, 41, 55, 0.25)); filter: drop-shadow(0px 25px 50px rgba(31, 41, 55, 0.25));
@@ -19,8 +19,19 @@ const StyledWrapper = styled.div`
} }
`; `;
export default function EmojiPicker({ onSelect, ...rest }) { export default function EmojiPicker({ onSelect, ...rest }) {
const [visible, setVisible] = useState(false);
useEffect(() => {
const inter = setTimeout(() => {
setVisible(true);
}, 500);
return () => {
clearTimeout(inter);
};
}, []);
return ( return (
<StyledWrapper> <StyledWrapper>
{visible ? (
<Picker <Picker
// set="twitter" // set="twitter"
// data={data} // data={data}
@@ -30,6 +41,7 @@ export default function EmojiPicker({ onSelect, ...rest }) {
onSelect={onSelect} onSelect={onSelect}
{...rest} {...rest}
/> />
) : null}
</StyledWrapper> </StyledWrapper>
); );
} }
+6 -24
View File
@@ -1,8 +1,7 @@
import { useState } from "react"; // import { useState } from "react";
import Tippy from "@tippyjs/react"; import Tippy from "@tippyjs/react";
import styled from "styled-components"; import styled from "styled-components";
import Tooltip from "../../component/Tooltip"; import Tooltip from "../../component/Tooltip";
import { useKey } from "rooks";
const StyledBtn = styled.button` const StyledBtn = styled.button`
outline: none; outline: none;
width: fit-content; width: fit-content;
@@ -18,38 +17,21 @@ import Picker from "../EmojiPicker";
import SmileIcon from "../../../assets/icons/emoji.smile.svg"; import SmileIcon from "../../../assets/icons/emoji.smile.svg";
export default function EmojiPicker({ selectEmoji }) { export default function EmojiPicker({ selectEmoji }) {
const [visible, setVisible] = useState(false);
useKey(
"Escape",
(evt) => {
evt.preventDefault();
toggleVisible();
},
{
// eventTypes: ["keydown"],
// target: editableRef,
when: visible,
}
);
const toggleVisible = () => {
console.log("toggle picker");
setVisible((prev) => !prev);
};
const handleSelect = (emoji) => { const handleSelect = (emoji) => {
selectEmoji(emoji.native); selectEmoji(emoji.native);
}; };
return ( return (
<Tooltip placement="top" tip="Emojis" disabled={visible}> <Tooltip placement="top" tip="Emojis">
<Tippy <Tippy
onClickOutside={toggleVisible} duration={0}
visible={visible} delay={[0, 0]}
offset={[-18, 25]} offset={[-18, 25]}
interactive interactive
placement="top-start" placement="top-start"
// trigger="click" trigger="click"
content={<Picker onSelect={handleSelect} />} content={<Picker onSelect={handleSelect} />}
> >
<StyledBtn onClick={toggleVisible}> <StyledBtn>
<SmileIcon /> <SmileIcon />
</StyledBtn> </StyledBtn>
</Tippy> </Tippy>