onClick(idol.id) : undefined}
+ ${isDisabled ? 'opacity-50 cursor-not-allowed' : isSelectable ? 'cursor-pointer' : 'cursor-default'} transition-all`} // 비활성화된 경우 투명도 50%
+ onClick={!isDisabled && isSelectable ? () => onClick(idol.id) : undefined} // 비활성화된 경우 클릭 방지
>
{children}
-
+
+ {/* 비활성화된 경우 클릭 차단 & 마우스 금지 커서 적용 */}
+ {isDisabled && (
+
+ )}
+
{isSelected && isSelectable && (
<>
@@ -40,7 +49,7 @@ const CheckedIdolCard = ({
>
)}
{idol.name}
{idol.group || '그룹 없음'}
diff --git a/src/pages/myPage/MyPage.jsx b/src/pages/myPage/MyPage.jsx
index 3ffd260..501fb2b 100644
--- a/src/pages/myPage/MyPage.jsx
+++ b/src/pages/myPage/MyPage.jsx
@@ -21,6 +21,7 @@ const MyPage = () => {
const width = window.innerWidth;
if (width >= 1200) setItemsPerPage(16);
else if (width >= 768) setItemsPerPage(8);
+ else if (width >= 375) setItemsPerPage(6);
else setItemsPerPage(6);
};
@@ -45,6 +46,7 @@ const MyPage = () => {
}, []);
const handleToggle = (idolId) => {
+ if (favoriteIdols.includes(idolId)) return;
setSelectedIdols((prev) =>
prev.includes(idolId)
? prev.filter((id) => id !== idolId)
@@ -54,13 +56,11 @@ const MyPage = () => {
const handleAddToFavorites = () => {
if (selectedIdols.length === 0) return;
-
setFavoriteIdols((prev) => {
const updatedFavorites = [...new Set([...prev, ...selectedIdols])];
localStorage.setItem(storageKey, updatedFavorites.join(','));
return updatedFavorites;
});
-
setSelectedIdols([]);
};
@@ -87,9 +87,9 @@ const MyPage = () => {
{/* 관심 있는 아이돌 섹션 */}
-
-
- 내가 관심있는 아이돌
+
+
+ 내가 관심 있는 아이돌
@@ -99,21 +99,19 @@ const MyPage = () => {
if (!idol) return null;
return (
-
+
@@ -121,61 +119,76 @@ const MyPage = () => {
})}
+
+
-
+
관심 있는 아이돌을 추가해보세요.
-
- {/* 이전 버튼 */}
-
-
-
- {/* 아이돌 리스트 */}
-
- {idols
- .slice(
- currentPage * itemsPerPage,
- (currentPage + 1) * itemsPerPage
- )
- .map((idol) => (
+
+
+
+
+
+
+ {/* 아이돌 리스트 */}
+
+ {idols.slice(currentPage * itemsPerPage, (currentPage + 1) * itemsPerPage).map((idol) => {
+ const isDisabled = favoriteIdols.includes(idol.id);
+
+ return (
+
handleToggle(idol.id)}
+ isDisabled={isDisabled}
+ onClick={(e) => {
+ if (isDisabled) {
+ e.preventDefault();
+ return;
+ }
+ handleToggle(idol.id);
+ }}
/>
- ))}
-
-
- {/* 다음 버튼 (반응형 위치 조정) */}
-
+
+ );
+ })}
+
+
+
-
+ 추가하기