passbolt-styleguide
Version:
Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.
151 lines (143 loc) • 5.89 kB
JavaScript
/**
* Passbolt ~ Open source password manager for teams
* Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
*
* Licensed under GNU Affero General Public License version 3 of the or any later version.
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
* @link https://www.passbolt.com Passbolt(tm)
* @since 2.13.0
*/
import React, { Component } from "react";
import { withRouter } from "react-router-dom";
import PropTypes from "prop-types";
import Breadcrumbs from "../../Common/Navigation/Breadcrumbs/Breadcrumbs";
import {
AdministrationWorkspaceMenuTypes,
withAdministrationWorkspace,
} from "../../../contexts/AdministrationWorkspaceContext";
import { withNavigationContext } from "../../../contexts/NavigationContext";
import Breadcrumb from "../../Common/Navigation/Breadcrumbs/Breadcrumb";
import { withTranslation } from "react-i18next";
/**
* The component displays a navigation breadcrumb given the administration setting selected
*/
class DisplayAdministrationWorkspaceBreadcrumb extends Component {
/**
* Returns the current list of breadcrumb items
*/
get items() {
switch (this.props.administrationWorkspaceContext.selectedAdministration) {
case AdministrationWorkspaceMenuTypes.NONE:
return [];
case AdministrationWorkspaceMenuTypes.HOME:
return [
<Breadcrumb key="bread-2" name={this.translate("Home")} onClick={this.onLastBreadcrumbClick.bind(this)} />,
];
default:
return [
<Breadcrumb
key="bread-3"
name={this.translate("Home")}
onClick={this.props.navigationContext.onGoToAdministrationRequested}
/>,
<Breadcrumb
key="bread-2"
name={this.getLastBreadcrumbItemName()}
onClick={this.onLastBreadcrumbClick.bind(this)}
/>,
];
}
}
/**
* Returns the main breadcrumb item name given the current administration setting selected
* @returns {string}
*/
getLastBreadcrumbItemName() {
switch (this.props.administrationWorkspaceContext.selectedAdministration) {
case AdministrationWorkspaceMenuTypes.MFA:
return this.translate("Multi Factor Authentication");
case AdministrationWorkspaceMenuTypes.USER_DIRECTORY:
return this.translate("Users Directory");
case AdministrationWorkspaceMenuTypes.EMAIL_NOTIFICATION:
return this.translate("Email Notification");
case AdministrationWorkspaceMenuTypes.SUBSCRIPTION:
return this.translate("Subscription");
case AdministrationWorkspaceMenuTypes.INTERNATIONALIZATION:
return this.translate("Internationalisation");
case AdministrationWorkspaceMenuTypes.ACCOUNT_RECOVERY:
return this.translate("Account Recovery");
case AdministrationWorkspaceMenuTypes.SMTP_SETTINGS:
return this.translate("Email server");
case AdministrationWorkspaceMenuTypes.SELF_REGISTRATION:
return this.translate("Self Registration");
case AdministrationWorkspaceMenuTypes.SSO:
return this.translate("Single Sign-On");
case AdministrationWorkspaceMenuTypes.MFA_POLICY:
return this.translate("MFA Policy");
case AdministrationWorkspaceMenuTypes.RBAC:
return this.translate("Role-Based Access Control");
case AdministrationWorkspaceMenuTypes.PASSWORD_POLICIES:
return this.translate("Password Policy");
case AdministrationWorkspaceMenuTypes.USER_PASSPHRASE_POLICIES:
return this.translate("User Passphrase Policies");
case AdministrationWorkspaceMenuTypes.PASSWORD_EXPIRY:
return this.translate("Password Expiry");
case AdministrationWorkspaceMenuTypes.HEALTHCHECK:
return this.translate("Passbolt API Status");
case AdministrationWorkspaceMenuTypes.CONTENT_TYPES_ENCRYPTED_METADATA:
return this.translate("Encrypted metadata");
case AdministrationWorkspaceMenuTypes.CONTENT_TYPES_METADATA_KEY:
return this.translate("Metadata key");
case AdministrationWorkspaceMenuTypes.MIGRATE_METADATA:
return this.translate("Migrate metadata");
case AdministrationWorkspaceMenuTypes.ALLOW_CONTENT_TYPES:
return this.translate("Allow content types");
case AdministrationWorkspaceMenuTypes.METADATA_GETTING_STARTED:
return this.translate("Getting started");
case AdministrationWorkspaceMenuTypes.SCIM:
return this.translate("SCIM");
case AdministrationWorkspaceMenuTypes.SECRET_HISTORY:
return this.translate("Secret history");
default:
return "";
}
}
/**
* Whenever the user click on the last breadcrumb
* @returns {Promise<void>}
*/
async onLastBreadcrumbClick() {
const pathname = this.props.location.pathname;
this.props.history.push({ pathname });
}
/**
* Get the translate function
* @returns {function(...[*]=)}
*/
get translate() {
return this.props.t;
}
/**
* Render the component
* @returns {JSX}
*/
render() {
return <Breadcrumbs items={this.items} />;
}
}
DisplayAdministrationWorkspaceBreadcrumb.propTypes = {
administrationWorkspaceContext: PropTypes.object, // The user workspace context
location: PropTypes.object, // The router location
history: PropTypes.object, // The router history
navigationContext: PropTypes.any, // The application navigation context
t: PropTypes.func, // The translation function
};
export default withRouter(
withNavigationContext(
withAdministrationWorkspace(withTranslation("common")(DisplayAdministrationWorkspaceBreadcrumb)),
),
);