react-garden
Version:
React + TypeScript + ThreeJS app using Material UI on NextJS, Apollo Client, GraphQL + WordPress REST APIs, for ThreeD web development.. a part of the threed.ai code family.
27 lines (19 loc) • 747 B
JavaScript
// ** React Imports
import { useContext } from 'react'
// ** Component Imports
import { AbilityContext } from '~/layouts/components/acl/Can'
const CanViewNavGroup = props => {
// ** Props
const { children, navGroup } = props
// ** Hook
const ability = useContext(AbilityContext)
const canViewMenuGroup = item => {
const hasAnyVisibleChild = item.children && item.children.some(i => ability && ability.can(i.action, i.subject))
if (!(item.action && item.subject)) {
return hasAnyVisibleChild
}
return ability && ability.can(item.action, item.subject) && hasAnyVisibleChild
}
return navGroup && canViewMenuGroup(navGroup) ? <>{children}</> : null
}
export default CanViewNavGroup