From e0e5f7c43d1ef2a01ff0d244ffb8c5261b956766 Mon Sep 17 00:00:00 2001
From: Philipinho <16838612+Philipinho@users.noreply.github.com>
Date: Mon, 22 Jan 2024 17:36:41 +0100
Subject: [PATCH] add emoji removal
---
apps/client/src/components/emoji-picker.tsx | 26 ++++++++++++++++---
.../src/features/page/tree/page-tree.tsx | 7 ++++-
2 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/apps/client/src/components/emoji-picker.tsx b/apps/client/src/components/emoji-picker.tsx
index e7bbef11..5011bc32 100644
--- a/apps/client/src/components/emoji-picker.tsx
+++ b/apps/client/src/components/emoji-picker.tsx
@@ -1,27 +1,34 @@
import React, { ReactNode } from 'react';
import data from '@emoji-mart/data';
import Picker from '@emoji-mart/react';
-import { ActionIcon, Popover } from '@mantine/core';
+import { ActionIcon, Popover, Button, useMantineColorScheme } from '@mantine/core';
import { useDisclosure } from '@mantine/hooks';
export interface EmojiPickerInterface {
onEmojiSelect: (emoji: any) => void;
icon: ReactNode;
+ removeEmojiAction: () => void;
}
-function EmojiPicker({ onEmojiSelect, icon }: EmojiPickerInterface) {
+function EmojiPicker({ onEmojiSelect, icon, removeEmojiAction }: EmojiPickerInterface) {
const [opened, handlers] = useDisclosure(false);
+ const { colorScheme } = useMantineColorScheme();
const handleEmojiSelect = (emoji) => {
onEmojiSelect(emoji);
handlers.close();
};
+ const handleRemoveEmoji = () => {
+ removeEmojiAction();
+ handlers.close();
+ };
+
return (
@@ -30,7 +37,18 @@ function EmojiPicker({ onEmojiSelect, icon }: EmojiPickerInterface) {
-
+
+
+
);
diff --git a/apps/client/src/features/page/tree/page-tree.tsx b/apps/client/src/features/page/tree/page-tree.tsx
index 2713f9af..5d98a1e4 100644
--- a/apps/client/src/features/page/tree/page-tree.tsx
+++ b/apps/client/src/features/page/tree/page-tree.tsx
@@ -113,6 +113,11 @@ function Node({ node, style, dragHandle }: NodeRendererProps) {
updatePageMutation.mutateAsync({ id: node.id, icon: emoji.native });
};
+ const handleRemoveEmoji = () => {
+ handleUpdateNodeIcon(node.id, null);
+ updatePageMutation.mutateAsync({ id: node.id, icon: null });
+ };
+
if (node.willReceiveDrop && node.isClosed) {
setTimeout(() => {
if (node.state.willReceiveDrop) node.open();
@@ -134,7 +139,7 @@ function Node({ node, style, dragHandle }: NodeRendererProps) {
node.data.icon ? node.data.icon :
- }/>
+ } removeEmojiAction={handleRemoveEmoji}/>