import React from 'react'; import { pathUtils } from '@growi/core'; import { useTranslation } from 'next-i18next'; import Link from 'next/link'; import PropTypes from 'prop-types'; import urljoin from 'url-join'; import { useGrowiCloudUri, useGrowiAppIdForGrowiCloud } from '../../../stores/context'; // import AppContainer from '~/client/services/AppContainer'; // import { withUnstatedContainers } from '../../UnstatedUtils'; const AdminNavigation = (props) => { const { t } = useTranslation(['admin', 'commons']); // const { appContainer } = props; const pathname = window.location.pathname; const { data: growiCloudUri } = useGrowiCloudUri(); const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud(); // eslint-disable-next-line react/prop-types const MenuLabel = ({ menu }) => { switch (menu) { /* eslint-disable no-multi-spaces, max-len */ case 'app': return <>{ t('headers.app_settings', { ns: 'commons' }) }>; case 'security': return <>{ t('security_settings.security_settings') }>; case 'markdown': return <>{ t('markdown_settings.markdown_settings') }>; case 'customize': return <>{ t('customize_settings.customize_settings') }>; case 'importer': return <>{ t('importer_management.import_data') }>; case 'export': return <>{ t('export_management.export_archive_data') }>; case 'data-transfer': return <>{ t('g2g_data_transfer.data_transfer', { ns: 'commons' })}>; case 'notification': return <>{ t('external_notification.external_notification')}>; case 'slack-integration': return <>{ t('slack_integration.slack_integration') }>; case 'slack-integration-legacy': return <>{ t('slack_integration_legacy.slack_integration_legacy')}>; case 'users': return <>{ t('user_management.user_management') }>; case 'user-groups': return <>{ t('user_group_management.user_group_management') }>; case 'audit-log': return <>{ t('audit_log_management.audit_log')}>; case 'plugins': return <>{ t('plugins.plugins')}>; case 'search': return <>{ t('full_text_search_management.full_text_search_management') }>; case 'cloud': return <>{ t('cloud_setting_management.to_cloud_settings')} >; default: return <>{ t('wiki_management_home_page') }>; /* eslint-enable no-multi-spaces, max-len */ } }; const MenuLink = ({ // eslint-disable-next-line react/prop-types menu, isRoot, isListGroupItems, isActive, }) => { const pageTransitionClassName = isListGroupItems ? 'list-group-item list-group-item-action border-0 round-corner' : 'dropdown-item px-3 py-2'; const href = isRoot ? '/admin' : urljoin('/admin', menu); return ( ); }; const isActiveMenu = (path) => { const basisPath = pathUtils.normalizePath(urljoin('/admin', path)); const basisParentPath = pathUtils.addTrailingSlash(basisPath); return ( pathname === basisPath || pathname.startsWith(basisParentPath) ); }; const getListGroupItemOrDropdownItemList = (isListGroupItems) => { return ( <> {/* eslint-disable no-multi-spaces */} {growiCloudUri != null && growiAppIdForGrowiCloud != null && ( ) } {/* eslint-enable no-multi-spaces */} > ); }; return ( {/* List group */} {getListGroupItemOrDropdownItemList(true)} {/* Dropdown */} {/* eslint-disable no-multi-spaces */} {pathname === '/admin' && } {isActiveMenu('/app') && } {isActiveMenu('/security') && } {isActiveMenu('/markdown') && } {isActiveMenu('/customize') && } {isActiveMenu('/importer') && } {isActiveMenu('/export') && } {(isActiveMenu('/notification') || isActiveMenu('/global-notification')) && } {isActiveMenu('/slack-integration') && } {isActiveMenu('/users') && } {isActiveMenu('/user-groups') && } {isActiveMenu('/search') && } {isActiveMenu('/audit-log') && } {isActiveMenu('/plugins') && } {isActiveMenu('/data-transfer') && } {/* eslint-enable no-multi-spaces */} {getListGroupItemOrDropdownItemList(false)} ); }; // const AdminNavigationWrapper = withUnstatedContainers(AdminNavigation, [AppContainer]); AdminNavigation.propTypes = { // appContainer: PropTypes.instanceOf(AppContainer).isRequired, }; // export default AdminNavigationWrapper; export default AdminNavigation;