Skip to content

Commit

Permalink
feat: add borderRadius prop to ButtonMenu component (#2570)
Browse files Browse the repository at this point in the history
Co-authored-by: Jose Leandro Torres <jtorressicilia@gmail.com>
  • Loading branch information
yvmunayev and LeandroTorresSicilia committed Jan 9, 2023
1 parent 17b5541 commit 1447e64
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/components/ButtonMenu/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export interface ButtonMenuProps extends BaseProps {
onBlur?: (event: FocusEvent<HTMLElement>) => void;
id?: string;
label?: ReactNode;
borderRadius?: 'square' | 'semi-square' | 'semi-rounded' | 'rounded';
}

export default function(props: ButtonMenuProps): JSX.Element | null;
3 changes: 3 additions & 0 deletions src/components/ButtonMenu/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,8 @@ ButtonMenu.propTypes = {
style: PropTypes.object,
/** The id of the outer element. */
id: PropTypes.string,
/** The border radius of the button and dropdown. Valid values are square, 'semi-square', semi-rounded and rounded. This value defaults to rounded. */
borderRadius: PropTypes.oneOf(['square', 'semi-square', 'semi-rounded', 'rounded']),
};

ButtonMenu.defaultProps = {
Expand All @@ -144,4 +146,5 @@ ButtonMenu.defaultProps = {
className: undefined,
style: undefined,
id: undefined,
borderRadius: 'rounded',
};
66 changes: 66 additions & 0 deletions src/components/ButtonMenu/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -725,3 +725,69 @@ import { faCog } from '@fortawesome/free-solid-svg-icons';
</GlobalHeader>
</div>
```

##### button menu with border radius

```js
import React from 'react';
import { ButtonMenu, MenuItem } from 'react-rainbow-components';

<div className="rainbow-m-bottom_xx-large rainbow-p-bottom_xx-large">
<GlobalHeader className="rainbow-p-bottom_xx-large rainbow-m-bottom_xx-large">
<ButtonMenu
menuAlignment="right"
menuSize="x-small"
className="rainbow-m-left_small"
buttonVariant="border"
label="Square"
borderRadius="square"

>
<MenuItem label="Menu Item One" />
<MenuItem label="Menu Item Two" />
<MenuItem label="Menu Item Three" />
<MenuItem label="Menu Item Four" />
</ButtonMenu>
<ButtonMenu
menuAlignment="right"
menuSize="x-small"
className="rainbow-m-left_small"
buttonVariant="border"
label="Semi Square"
borderRadius="semi-square"
>
<MenuItem label="Menu Item One" />
<MenuItem label="Menu Item Two" />
<MenuItem label="Menu Item Three" />
<MenuItem label="Menu Item Four" />
</ButtonMenu>
<ButtonMenu
menuAlignment="right"
menuSize="x-small"
className="rainbow-m-left_small"
buttonVariant="border"
label="Semi Rounded"
borderRadius="semi-rounded"
>
<MenuItem label="Menu Item One" />
<MenuItem label="Menu Item Two" />
<MenuItem label="Menu Item Three" />
<MenuItem label="Menu Item Four" />
</ButtonMenu>
<ButtonMenu
menuAlignment="right"
menuSize="x-small"
className="rainbow-m-left_small"
buttonVariant="border"
label="Rounded"
borderRadius="rounded"
>
<MenuItem label="Menu Item One" />
<MenuItem label="Menu Item Two" />
<MenuItem label="Menu Item Three" />
<MenuItem label="Menu Item Four" />
</ButtonMenu>

</GlobalHeader>
</div>
```
6 changes: 6 additions & 0 deletions src/components/PrimitiveMenu/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const PrimitiveMenu = React.forwardRef((props, ref) => {
title,
assistiveText,
trigger: Trigger,
borderRadius,
...rest
} = props;
const listboxId = useUniqueIdentifier('listbox');
Expand Down Expand Up @@ -94,6 +95,7 @@ const PrimitiveMenu = React.forwardRef((props, ref) => {
assistiveText={assistiveText}
onClick={toggleMenu}
ref={triggerRef}
borderRadius={borderRadius}
/>
<InternalOverlay
isVisible={isOpen}
Expand All @@ -107,6 +109,7 @@ const PrimitiveMenu = React.forwardRef((props, ref) => {
menuSize={menuSize}
menuAlignment={menuAlignment}
isLoading={isLoading}
borderRadius={borderRadius}
>
<MenuContent
ariaLabel={ariaLabel}
Expand Down Expand Up @@ -153,6 +156,8 @@ PrimitiveMenu.propTypes = {
id: PropTypes.string,
/** The element. */
trigger: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,
/** The border radius of the button and dropdown. Valid values are square, 'semi-square', semi-rounded and rounded. This value defaults to rounded. */
borderRadius: PropTypes.oneOf(['square', 'semi-square', 'semi-rounded', 'rounded']),
};

PrimitiveMenu.defaultProps = {
Expand All @@ -165,6 +170,7 @@ PrimitiveMenu.defaultProps = {
className: undefined,
style: undefined,
id: undefined,
borderRadius: 'rounded',
};

export default PrimitiveMenu;
4 changes: 2 additions & 2 deletions src/components/PrimitiveMenu/styled/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import styled from 'styled-components';
import attachThemeAttrs from '../../../styles/helpers/attachThemeAttrs';
import BorderRadiusElement from '../../Structural/borderRadiusElement';

export const StyledContainer = styled.div`
position: relative;
Expand All @@ -18,13 +19,12 @@ export const StyledContent = styled.ul`
box-sizing: border-box;
`;

export const StyledDropdown = attachThemeAttrs(styled.div)`
export const StyledDropdown = attachThemeAttrs(styled(BorderRadiusElement))`
min-width: 6rem;
max-width: 20rem;
max-height: 372px;
margin-top: 0.125rem;
margin-bottom: 0.125rem;
border-radius: 0.875rem;
padding: 0.5rem 0;
font-size: 0.75rem;
background: ${props => props.palette.background.main};
Expand Down

0 comments on commit 1447e64

Please sign in to comment.