UNPKG

passbolt-styleguide

Version:

Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.

80 lines (71 loc) 2.13 kB
/** * 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 3.0.0 */ import React from "react"; import PropTypes from "prop-types"; import {withContextualMenu} from "../../../contexts/ContextualMenuContext"; /** * This component acts as an anchor for the different project contextual menus. */ class ManageContextualMenu extends React.Component { /** * Default constructor * @param props The component props */ constructor(props) { super(props); this.createRefs(); this.bindCallback(); } /** * Bind class methods callback */ bindCallback() { this.handleHide = this.handleHide.bind(this); } /** * Create DOM nodes or React elements references in order to be able to access them programmatically. */ createRefs() { this.elementRef = React.createRef(); } /** * Hide the contextual menu * @param {int} index The contextual menu to close */ handleHide(index) { this.props.contextualMenuContext.hide(index); } /** * Renders the component * @returns {JSX.Element} */ render() { return ( <div ref={this.elementRef}> { this.props.contextualMenuContext.contextualMenus.map((contextualMenu, index) => <contextualMenu.ContextualMenuComponent key={index} hide={() => this.handleHide(index)} {...contextualMenu.componentProps} /> ) } </div> ); } } ManageContextualMenu.propTypes = { contextualMenuContext: PropTypes.any // The contextual menu context }; export default withContextualMenu(ManageContextualMenu);