import React from 'react'; import PropTypes from 'prop-types'; import { css } from '@emotion/core'; import styled from '@emotion/styled'; import { Wrapper, Button as DropdownButton, Menu, MenuItem } from 'react-aria-menubutton'; import { colors, buttons, components, zIndex } from './styles'; import Icon from './Icon'; const StyledWrapper = styled(Wrapper)` position: relative; font-size: 14px; user-select: none; `; const StyledDropdownButton = styled(DropdownButton)` ${buttons.button}; ${buttons.default}; display: block; padding-left: 20px; padding-right: 40px; position: relative; &:after { ${components.caretDown}; content: ''; display: block; position: absolute; top: 16px; right: 10px; color: currentColor; } `; const DropdownList = styled.ul` ${components.dropdownList}; margin: 0; position: absolute; top: 0; left: 0; min-width: 100%; z-index: ${zIndex.zIndex299}; ${props => css` width: ${props.width}; top: ${props.top}; left: ${props.position === 'left' ? 0 : 'auto'}; right: ${props.position === 'right' ? 0 : 'auto'}; `}; `; function StyledMenuItem({ isActive, isCheckedItem = false, ...props }) { return ( ); } const MenuItemIconContainer = styled.div` flex: 1 0 32px; text-align: right; position: relative; top: ${props => (props.iconSmall ? '0' : '2px')}; `; function Dropdown({ closeOnSelection = true, renderButton, dropdownWidth = 'auto', dropdownPosition = 'left', dropdownTopOverlap = '0', className, children, }) { return ( handler()} className={className} > {renderButton()} {children} ); } Dropdown.propTypes = { renderButton: PropTypes.func.isRequired, dropdownWidth: PropTypes.string, dropdownPosition: PropTypes.string, dropdownTopOverlap: PropTypes.string, className: PropTypes.string, children: PropTypes.node, }; function DropdownItem({ label, icon, iconDirection, iconSmall, isActive, onClick, className }) { return ( {label} {icon ? ( ) : null} ); } DropdownItem.propTypes = { label: PropTypes.string, icon: PropTypes.string, iconDirection: PropTypes.string, onClick: PropTypes.func, className: PropTypes.string, }; function StyledDropdownCheckbox({ checked, id }) { return ( ); } function DropdownCheckedItem({ label, id, checked, onClick }) { return ( {label} ); } DropdownCheckedItem.propTypes = { label: PropTypes.string.isRequired, id: PropTypes.string.isRequired, checked: PropTypes.bool.isRequired, onClick: PropTypes.func.isRequired, }; export { Dropdown as default, DropdownItem, DropdownCheckedItem, DropdownButton, StyledDropdownButton, };