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
+23 -11
View File
@@ -1,8 +1,8 @@
// import React from 'react'
import { useState, useEffect } from "react";
// import { NimblePicker } from "emoji-mart";
import "emoji-mart/css/emoji-mart.css";
import { Picker } from "emoji-mart";
// import data from "emoji-mart/data/";
import "emoji-mart/css/emoji-mart.css";
import styled from "styled-components";
const StyledWrapper = styled.div`
filter: drop-shadow(0px 25px 50px rgba(31, 41, 55, 0.25));
@@ -19,17 +19,29 @@ const StyledWrapper = styled.div`
}
`;
export default function EmojiPicker({ onSelect, ...rest }) {
const [visible, setVisible] = useState(false);
useEffect(() => {
const inter = setTimeout(() => {
setVisible(true);
}, 500);
return () => {
clearTimeout(inter);
};
}, []);
return (
<StyledWrapper>
<Picker
// set="twitter"
// data={data}
// set="twitter"
showPreview={false}
showSkinTones={false}
onSelect={onSelect}
{...rest}
/>
{visible ? (
<Picker
// set="twitter"
// data={data}
// set="twitter"
showPreview={false}
showSkinTones={false}
onSelect={onSelect}
{...rest}
/>
) : null}
</StyledWrapper>
);
}
+6 -24
View File
@@ -1,8 +1,7 @@
import { useState } from "react";
// import { useState } from "react";
import Tippy from "@tippyjs/react";
import styled from "styled-components";
import Tooltip from "../../component/Tooltip";
import { useKey } from "rooks";
const StyledBtn = styled.button`
outline: none;
width: fit-content;
@@ -18,38 +17,21 @@ import Picker from "../EmojiPicker";
import SmileIcon from "../../../assets/icons/emoji.smile.svg";
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) => {
selectEmoji(emoji.native);
};
return (
<Tooltip placement="top" tip="Emojis" disabled={visible}>
<Tooltip placement="top" tip="Emojis">
<Tippy
onClickOutside={toggleVisible}
visible={visible}
duration={0}
delay={[0, 0]}
offset={[-18, 25]}
interactive
placement="top-start"
// trigger="click"
trigger="click"
content={<Picker onSelect={handleSelect} />}
>
<StyledBtn onClick={toggleVisible}>
<StyledBtn>
<SmileIcon />
</StyledBtn>
</Tippy>