즐겨찾기 메뉴 편집 기능 개선
- 즐겨찾기가 1개 남았을 때 해제 방지 - 편집 모드에서 메뉴 클릭 기능 비활성화 - 즐겨찾기 변경 시 모든 카테고리의 체크박스 상태 동기화 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -70,7 +70,7 @@ export const FavoriteWrapper = ({
|
|||||||
<SwiperSlide key={ `favorite-slide-key-${i}` }>
|
<SwiperSlide key={ `favorite-slide-key-${i}` }>
|
||||||
<div
|
<div
|
||||||
className="swiper-item"
|
className="swiper-item"
|
||||||
onClick={ () => onClickToNavigate(favoriteItems[i]?.programPath) }
|
onClick={ () => !editMode && onClickToNavigate(favoriteItems[i]?.programPath) }
|
||||||
>
|
>
|
||||||
<div className="swiper-icon coin-icon">
|
<div className="swiper-icon coin-icon">
|
||||||
<img
|
<img
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export interface MenuCategoryProps {
|
|||||||
subMenu?: Array<MenuItem>;
|
subMenu?: Array<MenuItem>;
|
||||||
setMenuOn?: (menuOn: boolean) => void;
|
setMenuOn?: (menuOn: boolean) => void;
|
||||||
editMode?: boolean;
|
editMode?: boolean;
|
||||||
|
changeMenuId?: string;
|
||||||
setChangeMenuId: (menuIdChecked?: string) => void;
|
setChangeMenuId: (menuIdChecked?: string) => void;
|
||||||
buttonRefs: RefObject<Array<HTMLDivElement>>;
|
buttonRefs: RefObject<Array<HTMLDivElement>>;
|
||||||
itemIndex: number;
|
itemIndex: number;
|
||||||
@@ -25,6 +26,7 @@ export const MenuCategory = ({
|
|||||||
subMenu,
|
subMenu,
|
||||||
setMenuOn,
|
setMenuOn,
|
||||||
editMode,
|
editMode,
|
||||||
|
changeMenuId,
|
||||||
setChangeMenuId,
|
setChangeMenuId,
|
||||||
buttonRefs,
|
buttonRefs,
|
||||||
itemIndex
|
itemIndex
|
||||||
@@ -68,6 +70,11 @@ export const MenuCategory = ({
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
// 즐겨찾기가 1개 남았을 때는 해제하지 않음
|
||||||
|
if(userFavorite.length <= 1){
|
||||||
|
callFavoiteItems();
|
||||||
|
return;
|
||||||
|
}
|
||||||
userFavorite = userFavorite.filter((value, _) => {
|
userFavorite = userFavorite.filter((value, _) => {
|
||||||
return value.menuId !== menuId
|
return value.menuId !== menuId
|
||||||
});
|
});
|
||||||
@@ -76,7 +83,7 @@ export const MenuCategory = ({
|
|||||||
setChangeMenuId(`${menuId}-${checked}`);
|
setChangeMenuId(`${menuId}-${checked}`);
|
||||||
callFavoiteItems();
|
callFavoiteItems();
|
||||||
// if(location.pathname === PATHS.home){
|
// if(location.pathname === PATHS.home){
|
||||||
|
|
||||||
// }
|
// }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -93,11 +100,15 @@ export const MenuCategory = ({
|
|||||||
callFavoiteItems();
|
callFavoiteItems();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
callFavoiteItems();
|
||||||
|
}, [changeMenuId]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if(menuIds.length > 0) {
|
if(menuIds.length > 0) {
|
||||||
// callShortcutSave();
|
// callShortcutSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
}, [menuIds]);
|
}, [menuIds]);
|
||||||
|
|
||||||
const getMenuItems = () => {
|
const getMenuItems = () => {
|
||||||
@@ -138,9 +149,8 @@ export const MenuCategory = ({
|
|||||||
rs.push(
|
rs.push(
|
||||||
<li
|
<li
|
||||||
key={ `menu-item-key-${i}` }
|
key={ `menu-item-key-${i}` }
|
||||||
onClick={ () => onClickToNavigate(subMenu[i]?.programPath) }
|
|
||||||
>{ subMenu[i]?.menuName }</li>
|
>{ subMenu[i]?.menuName }</li>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ export const Menu = ({
|
|||||||
subMenu={ MenuItems[i]?.subMenu }
|
subMenu={ MenuItems[i]?.subMenu }
|
||||||
setMenuOn={ setMenuOn }
|
setMenuOn={ setMenuOn }
|
||||||
editMode={ editMode }
|
editMode={ editMode }
|
||||||
|
changeMenuId={ changeMenuId }
|
||||||
setChangeMenuId= { setChangeMenuId }
|
setChangeMenuId= { setChangeMenuId }
|
||||||
buttonRefs={ buttonRefs }
|
buttonRefs={ buttonRefs }
|
||||||
itemIndex={ i }
|
itemIndex={ i }
|
||||||
|
|||||||
Reference in New Issue
Block a user