UNPKG

@navinc/base-react-components

Version:
65 lines (57 loc) 1.63 kB
import { Component } from 'react' import onClickOutside from 'react-onclickoutside' import styled from 'styled-components' import Copy from '../../../copy.js' const StyledKebabMenu = styled.div` position: absolute; right: 16px; top: 48px; padding: 8px 16px; background-color: ${({ theme }) => theme.neutral100}; border-radius: 4px; box-shadow: 0 6px 8px 2px rgba(0, 0, 0, 0.14), 0 2px 12px 4px rgba(0, 0, 0, 0.12), 0 4px 4px 0 rgba(0, 0, 0, 0.2); cursor: pointer; ` StyledKebabMenu.displayName = 'KebabMenu' export const KebabItem = styled.div` display: flex; flex-flow: row nowrap; cursor: pointer; ` KebabItem.displayName = 'KebabItem' export const KebabItemIcon = styled.img` width: 16px; height: 16px; margin-right: 8px; align-self: center; vertical-align: middle; ` KebabItemIcon.displayName = 'KebabItemIcon' export class KebabMenu extends Component { handleClickOutside(event) { this.props.toggleKebabMenu(event) } render() { const { onHide, kebabMenuItems = [], togglehideCard } = this.props return ( <StyledKebabMenu data-testid="deprecated-card:kebab-menu"> {kebabMenuItems.map(({ label, icon, onClick }, index) => ( <KebabItem key={index} onClick={(event) => { if (label === 'Hide') { togglehideCard(event) onHide() } onClick() }} > <KebabItemIcon src={icon} /> <Copy>{label}</Copy> </KebabItem> ))} </StyledKebabMenu> ) } } export default onClickOutside(KebabMenu)