|
|
@@ -16,6 +16,7 @@ import type {
|
|
|
} from "./type";
|
|
|
import type IEmbeddedMenuButton from "./type";
|
|
|
import {
|
|
|
+ NCoreUIKitLocalize,
|
|
|
NCoreUIKitTheme
|
|
|
} from "../../../../core/hooks";
|
|
|
import {
|
|
|
@@ -53,10 +54,16 @@ const isPageActive = (
|
|
|
|
|
|
if (!state?.routes) return false;
|
|
|
|
|
|
+ const activeRouteName = getDeepActiveRouteName(state);
|
|
|
const targetName = buttonItem.redirectSub ?? buttonItem.redirectMain;
|
|
|
- if (!targetName) return false;
|
|
|
|
|
|
- return getDeepActiveRouteName(state) === targetName;
|
|
|
+ if (targetName && activeRouteName === targetName) return true;
|
|
|
+
|
|
|
+ if (buttonItem.subButtons?.length) {
|
|
|
+ return buttonItem.subButtons.some(sub => isPageActive(sub, navigation));
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
};
|
|
|
|
|
|
const EmbeddedMenuButton: FC<IEmbeddedMenuButton> = ({
|
|
|
@@ -67,12 +74,17 @@ const EmbeddedMenuButton: FC<IEmbeddedMenuButton> = ({
|
|
|
buttonItem,
|
|
|
navigation,
|
|
|
depthMap,
|
|
|
+ openMenu,
|
|
|
id
|
|
|
}) => {
|
|
|
const {
|
|
|
colors
|
|
|
} = NCoreUIKitTheme.useContext();
|
|
|
|
|
|
+ const {
|
|
|
+ localize
|
|
|
+ } = NCoreUIKitLocalize.useContext();
|
|
|
+
|
|
|
const [
|
|
|
measure,
|
|
|
setMeasure
|
|
|
@@ -146,10 +158,6 @@ const EmbeddedMenuButton: FC<IEmbeddedMenuButton> = ({
|
|
|
|
|
|
const isPActive = isPageActive(buttonItem, navigation);
|
|
|
|
|
|
- if(!isMenuCollabs && buttonItem.subButtons && buttonItem.subButtons.length) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
if(!isMenuCollabs && !buttonItem.icon) {
|
|
|
return null;
|
|
|
}
|
|
|
@@ -159,6 +167,7 @@ const EmbeddedMenuButton: FC<IEmbeddedMenuButton> = ({
|
|
|
>
|
|
|
<RowCard
|
|
|
{...buttonItem.props}
|
|
|
+ title={isMenuCollabs ? buttonItem.isUseLocalize ? localize(buttonItem.title as keyof NCoreUIKit.Translation) : buttonItem.title : ""}
|
|
|
rightIcon={
|
|
|
isMenuCollabs && (buttonItem.isCollapsible || buttonItem.isShowRedirectIcon) ?
|
|
|
() => {
|
|
|
@@ -187,9 +196,18 @@ const EmbeddedMenuButton: FC<IEmbeddedMenuButton> = ({
|
|
|
backgroundColor={isPActive ? "primary" : undefined}
|
|
|
titleColor={isPActive ? "onPrimary" : undefined}
|
|
|
iconColor={isPActive ? "onPrimary" : undefined}
|
|
|
- title={isMenuCollabs ? buttonItem.title : ""}
|
|
|
icon={buttonItem.icon}
|
|
|
onPress={() => {
|
|
|
+ if(!isMenuCollabs && buttonItem.subButtons && buttonItem.subButtons.length) {
|
|
|
+ openMenu();
|
|
|
+ updateMenuButtonCollabs({
|
|
|
+ status: true,
|
|
|
+ buttonItem,
|
|
|
+ depthMap
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if(buttonItem.isCollapsible) {
|
|
|
updateMenuButtonCollabs({
|
|
|
status: !buttonItem.isCollapse,
|
|
|
@@ -210,7 +228,7 @@ const EmbeddedMenuButton: FC<IEmbeddedMenuButton> = ({
|
|
|
if(buttonItem.props?.onPress) buttonItem.props.onPress();
|
|
|
}
|
|
|
|
|
|
- if(closeAction && !buttonItem.isCollapsible) closeAction();
|
|
|
+ if(closeAction) closeAction();
|
|
|
}}
|
|
|
/>
|
|
|
{
|
|
|
@@ -244,6 +262,7 @@ const EmbeddedMenuButton: FC<IEmbeddedMenuButton> = ({
|
|
|
buttonItem={subButtonItem}
|
|
|
closeAction={closeAction}
|
|
|
navigation={navigation}
|
|
|
+ openMenu={openMenu}
|
|
|
depthMap={[
|
|
|
...depthMap,
|
|
|
subButtonIndex
|