diff --git a/src/App.tsx b/src/App.tsx
index b76c696..91d2087 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -2,6 +2,7 @@ import { DndContext, DragEndEvent } from '@dnd-kit/core';
import { useRef } from 'react';
import { useShallow } from 'zustand/shallow';
import './App.scss';
+import { EditTierModal } from './components/EditTierModal';
import { TierImage } from './components/Image';
import { Tier } from './components/Tier';
import { TierModal } from './components/TierModal';
@@ -41,11 +42,12 @@ const App = () => {
color={tier_level.color}
textColor={tier_level.textColor}
name={tier_level.name}
- key={tier_level.name}
+ id={tier_level.id}
+ key={tier_level.id ?? tier_level.name}
/>
))}
-
+
{images
.filter(image => image.category === '')
.map((image, index) => (
@@ -79,6 +81,7 @@ const App = () => {
/>
+
);
};
diff --git a/src/components/EditTierModal.tsx b/src/components/EditTierModal.tsx
new file mode 100644
index 0000000..6225d24
--- /dev/null
+++ b/src/components/EditTierModal.tsx
@@ -0,0 +1,52 @@
+import { useEffect, useState } from 'react';
+import { useShallow } from 'zustand/shallow';
+import useStore from '../store';
+
+export const EditTierModal = () => {
+ const [tierLevel, setTierLevel, editTierLevel] = useStore(
+ useShallow(state => [state.editingTierLevel, state.setEditingTierLevel, state.editTierLevelName]),
+ );
+ const [newName, setNewName] = useState('');
+ useEffect(() => {
+ if (tierLevel) setNewName(tierLevel.name);
+ }, [tierLevel]);
+ return (
+
{
+ e.preventDefault();
+ e.stopPropagation();
+ setTierLevel(null);
+ }}
+ >
+
{
+ e.preventDefault();
+ e.stopPropagation();
+ }}
+ >
+ {tierLevel && (
+
+ setNewName(e.target.value)}
+ >
+
+
+
+ )}
+
+
+ );
+};
diff --git a/src/components/Tier.tsx b/src/components/Tier.tsx
index 2f1b36c..87123f6 100644
--- a/src/components/Tier.tsx
+++ b/src/components/Tier.tsx
@@ -1,4 +1,5 @@
import EditIcon from '@mui/icons-material/Edit';
+import { useShallow } from 'zustand/shallow';
import useStore from '../store';
import { TierImage } from './Image';
import './Tier.scss';
@@ -9,10 +10,10 @@ export interface TierProps {
textColor: string;
id?: string;
}
-export const Tier = ({ color, name, textColor }: TierProps) => {
+export const Tier = ({ color, name, textColor, id }: TierProps) => {
let color_code = '';
let text_color_code = '';
- const tierImages = useStore(state => state.images);
+ const [tierImages, setEditingTierLevel] = useStore(useShallow(state => [state.images, state.setEditingTierLevel]));
switch (color) {
case 'green':
color_code = '#00b894';
@@ -47,7 +48,12 @@ export const Tier = ({ color, name, textColor }: TierProps) => {
backgroundColor: color_code,
}}
>
-