diff --git a/src/components/Image.tsx b/src/components/Image.tsx
index cb32811..6958a1c 100644
--- a/src/components/Image.tsx
+++ b/src/components/Image.tsx
@@ -1,14 +1,23 @@
+import { tierImage } from '../store';
interface ImageProps {
- image: string;
- name: string;
+ image: tierImage;
+ onDragStart?: () => void;
}
-export const TierImage = ({ image, name }: ImageProps) => {
+export const TierImage = ({ image, onDragStart }: ImageProps) => {
return (
-
+
{
+ // e.preventDefault();
+ if (onDragStart) onDragStart();
+ }}
+ >
-

-
{name}
+

+
+ {image.name}
+
);
diff --git a/src/components/Tier.tsx b/src/components/Tier.tsx
index 63c5c2d..b96189d 100644
--- a/src/components/Tier.tsx
+++ b/src/components/Tier.tsx
@@ -1,4 +1,6 @@
-import { useAppSelector } from '../hooks';
+import { useState } from 'react';
+import { useAppDispatch, useAppSelector } from '../hooks';
+import { changeTierImage, tierImage } from '../store';
import { TierImage } from './Image';
export interface TierProps {
@@ -10,6 +12,7 @@ export const Tier = ({ color, name, textColor }: TierProps) => {
let color_code = '';
let text_color_code = '';
const tierImages = useAppSelector(state => state.tierImages);
+ const dispatch = useAppDispatch();
switch (color) {
case 'green':
color_code = '#00b894';
@@ -30,9 +33,23 @@ export const Tier = ({ color, name, textColor }: TierProps) => {
default:
text_color_code = '#2d3436';
}
+
+ const [currentDragImage, setCurrentDragImage] = useState
(null);
+
+ const onDragStart = (image: tierImage) => {
+ setCurrentDragImage(image);
+ };
+
return (
<>
-
+
{
+ // e.preventDefault();
+ if (currentDragImage) dispatch(changeTierImage(currentDragImage));
+ setCurrentDragImage(null);
+ }}
+ >
{
{tierImages
.filter(image => image.category === name)
.map((image, index) => (
-
+ onDragStart(image)} />
))}
diff --git a/src/store.ts b/src/store.ts
index 4c17dd7..6406849 100644
--- a/src/store.ts
+++ b/src/store.ts
@@ -1,6 +1,6 @@
import { configureStore, createSlice, PayloadAction } from '@reduxjs/toolkit';
-interface tierImage {
+export interface tierImage {
name: string;
url: string;
category: string;
@@ -16,10 +16,16 @@ const tierImages = createSlice({
removeTierImage: (state, action: PayloadAction
) => {
return state.filter(image => image.name !== action.payload);
},
+ changeTierImage: (state, action: PayloadAction) => {
+ return state.map(image => {
+ if (image.name == action.payload.name) return action.payload;
+ return image;
+ });
+ },
},
});
-export const { addTierImage, removeTierImage } = tierImages.actions;
+export const { addTierImage, removeTierImage, changeTierImage } = tierImages.actions;
const store = configureStore({
reducer: {