Skip to content

Commit

Permalink
[Joy][button] Replace start/endIcon prop with start/endDecorator (m…
Browse files Browse the repository at this point in the history
  • Loading branch information
hbjORbj authored and Daniel Rabe committed Nov 29, 2022
1 parent 6eb4b46 commit e7ec3f1
Show file tree
Hide file tree
Showing 26 changed files with 92 additions and 79 deletions.
4 changes: 2 additions & 2 deletions docs/data/joy/components/button/ButtonIcons.js
Expand Up @@ -8,11 +8,11 @@ import ThumbUp from '@mui/icons-material/ThumbUp';
export default function ButtonIcons() {
return (
<Box sx={{ display: 'flex', gap: 2, flexWrap: 'wrap' }}>
<Button startIcon={<Add />}>Add to cart</Button>
<Button startDecorator={<Add />}>Add to cart</Button>
<Button aria-label="Like" variant="outlined" color="neutral">
<ThumbUp />
</Button>
<Button variant="soft" endIcon={<KeyboardArrowRight />} color="success">
<Button variant="soft" endDecorator={<KeyboardArrowRight />} color="success">
Checkout
</Button>
</Box>
Expand Down
4 changes: 2 additions & 2 deletions docs/data/joy/components/button/ButtonIcons.tsx
Expand Up @@ -8,11 +8,11 @@ import ThumbUp from '@mui/icons-material/ThumbUp';
export default function ButtonIcons() {
return (
<Box sx={{ display: 'flex', gap: 2, flexWrap: 'wrap' }}>
<Button startIcon={<Add />}>Add to cart</Button>
<Button startDecorator={<Add />}>Add to cart</Button>
<Button aria-label="Like" variant="outlined" color="neutral">
<ThumbUp />
</Button>
<Button variant="soft" endIcon={<KeyboardArrowRight />} color="success">
<Button variant="soft" endDecorator={<KeyboardArrowRight />} color="success">
Checkout
</Button>
</Box>
Expand Down
4 changes: 2 additions & 2 deletions docs/data/joy/components/button/ButtonIcons.tsx.preview
@@ -1,7 +1,7 @@
<Button startIcon={<Add />}>Add to cart</Button>
<Button startDecorator={<Add />}>Add to cart</Button>
<Button aria-label="Like" variant="outlined" color="neutral">
<ThumbUp />
</Button>
<Button variant="soft" endIcon={<KeyboardArrowRight />} color="success">
<Button variant="soft" endDecorator={<KeyboardArrowRight />} color="success">
Checkout
</Button>
2 changes: 1 addition & 1 deletion docs/data/joy/components/button/ButtonLink.js
Expand Up @@ -7,7 +7,7 @@ import OpenInNew from '@mui/icons-material/OpenInNew';
export default function IconButtons() {
return (
<Box sx={{ display: 'flex', gap: 2, alignItems: 'center' }}>
<Button component="a" href="#as-link" startIcon={<OpenInNew />}>
<Button component="a" href="#as-link" startDecorator={<OpenInNew />}>
Open in new tab
</Button>
<IconButton aria-label="Open in new tab" component="a" href="#as-link">
Expand Down
2 changes: 1 addition & 1 deletion docs/data/joy/components/button/ButtonLink.tsx
Expand Up @@ -7,7 +7,7 @@ import OpenInNew from '@mui/icons-material/OpenInNew';
export default function IconButtons() {
return (
<Box sx={{ display: 'flex', gap: 2, alignItems: 'center' }}>
<Button component="a" href="#as-link" startIcon={<OpenInNew />}>
<Button component="a" href="#as-link" startDecorator={<OpenInNew />}>
Open in new tab
</Button>
<IconButton aria-label="Open in new tab" component="a" href="#as-link">
Expand Down
2 changes: 1 addition & 1 deletion docs/data/joy/components/button/ButtonLink.tsx.preview
@@ -1,4 +1,4 @@
<Button component="a" href="#as-link" startIcon={<OpenInNew />}>
<Button component="a" href="#as-link" startDecorator={<OpenInNew />}>
Open in new tab
</Button>
<IconButton aria-label="Open in new tab" component="a" href="#as-link">
Expand Down
4 changes: 2 additions & 2 deletions docs/data/joy/components/button/ButtonVariables.js
Expand Up @@ -8,15 +8,15 @@ export default function ButtonVariables() {
<JoyVariablesDemo
componentName="Button"
renderCode={(formattedSx) => `<Button
startIcon={<FavoriteBorder />}${formattedSx ? `${formattedSx}>` : '\n>'}`}
startDecorator={<FavoriteBorder />}${formattedSx ? `${formattedSx}>` : '\n>'}`}
data={[
{
var: '--Button-gap',
defaultValue: '8px',
},
]}
renderDemo={(sx) => (
<Button sx={sx} startIcon={<FavoriteBorder />}>
<Button sx={sx} startDecorator={<FavoriteBorder />}>
Favorite
</Button>
)}
Expand Down
4 changes: 2 additions & 2 deletions docs/data/joy/components/button/button-pt.md
Expand Up @@ -54,9 +54,9 @@ Use the `disabled` prop to disable interaction and focus.

{{"demo": "ButtonDisabled.js"}}

### With icons
### With decorators

Use the `startIcon` and/or `endIcon` props to add supporting icons to the button.
Use the `startDecorator` and/or `endDecorator` props to add supporting decorators to the button.

{{"demo": "ButtonIcons.js"}}

Expand Down
4 changes: 2 additions & 2 deletions docs/data/joy/components/button/button-zh.md
Expand Up @@ -54,9 +54,9 @@ Use the `disabled` prop to disable interaction and focus.

{{"demo": "ButtonDisabled.js"}}

### With icons
### With decorators

Use the `startIcon` and/or `endIcon` props to add supporting icons to the button.
Use the `startDecorator` and/or `endDecorator` props to add supporting decorators to the button.

{{"demo": "ButtonIcons.js"}}

Expand Down
4 changes: 2 additions & 2 deletions docs/data/joy/components/button/button.md
Expand Up @@ -64,9 +64,9 @@ Use the `disabled` prop to disable interaction and focus.

{{"demo": "ButtonDisabled.js"}}

### With icons
### With decorators

Use the `startIcon` and/or `endIcon` props to add supporting icons to the button.
Use the `startDecorator` and/or `endDecorator` props to add supporting decorators to the button.

{{"demo": "ButtonIcons.js"}}

Expand Down
Expand Up @@ -8,7 +8,7 @@ import CircularProgress from '@mui/joy/CircularProgress';
export default function CircularProgressSizes() {
return (
<Box sx={{ display: 'flex', gap: 2, alignItems: 'center', flexWrap: 'wrap' }}>
<Button startIcon={<CircularProgress variant="solid" thickness={2} />}>
<Button startDecorator={<CircularProgress variant="solid" thickness={2} />}>
Loading…
</Button>
<IconButton>
Expand Down
Expand Up @@ -8,7 +8,7 @@ import CircularProgress from '@mui/joy/CircularProgress';
export default function CircularProgressSizes() {
return (
<Box sx={{ display: 'flex', gap: 2, alignItems: 'center', flexWrap: 'wrap' }}>
<Button startIcon={<CircularProgress variant="solid" thickness={2} />}>
<Button startDecorator={<CircularProgress variant="solid" thickness={2} />}>
Loading…
</Button>
<IconButton>
Expand Down
@@ -1,4 +1,4 @@
<Button startIcon={<CircularProgress variant="solid" thickness={2} />}>
<Button startDecorator={<CircularProgress variant="solid" thickness={2} />}>
Loading…
</Button>
<IconButton>
Expand Down
2 changes: 1 addition & 1 deletion docs/data/joy/components/menu/GroupMenu.js
Expand Up @@ -31,7 +31,7 @@ export default function BasicMenu() {
variant="outlined"
color="neutral"
onClick={handleClick}
endIcon={<ArrowDropDown />}
endDecorator={<ArrowDropDown />}
>
Size
</Button>
Expand Down
2 changes: 1 addition & 1 deletion docs/data/joy/components/menu/SelectedMenu.js
Expand Up @@ -28,7 +28,7 @@ export default function SelectedMenu() {
variant="outlined"
color="neutral"
onClick={handleClick}
startIcon={<Apps />}
startDecorator={<Apps />}
>
Apps
</Button>
Expand Down
2 changes: 1 addition & 1 deletion docs/data/joy/components/modal/AlertDialogModal.js
Expand Up @@ -14,7 +14,7 @@ export default function AlertDialogModal() {
<Button
variant="outlined"
color="danger"
endIcon={<DeleteForever />}
endDecorator={<DeleteForever />}
onClick={() => setOpen(true)}
>
Discard
Expand Down
2 changes: 1 addition & 1 deletion docs/data/joy/components/modal/BasicModalDialog.js
Expand Up @@ -14,7 +14,7 @@ export default function BasicModalDialog() {
<Button
variant="outlined"
color="neutral"
startIcon={<Add />}
startDecorator={<Add />}
onClick={() => setOpen(true)}
>
New project
Expand Down
4 changes: 2 additions & 2 deletions docs/data/joy/getting-started/templates/TemplateCollection.js
Expand Up @@ -97,7 +97,7 @@ export default function TemplateCollection() {
data-ga-event-category="joy-template"
data-ga-event-label={name}
data-ga-event-action="preview"
startIcon={<Visibility />}
startDecorator={<Visibility />}
sx={{ ml: 'auto' }}
>
Live demo
Expand Down Expand Up @@ -137,7 +137,7 @@ export default function TemplateCollection() {
form.submit();
document.body.removeChild(form);
}}
startIcon={
startDecorator={
<SvgIcon viewBox="0 0 1080 1080">
<path d="M755 140.3l0.5-0.3h0.3L512 0 268.3 140h-0.3l0.8 0.4L68.6 256v512L512 1024l443.4-256V256L755 140.3z m-30 506.4v171.2L548 920.1V534.7L883.4 341v215.7l-158.4 90z m-584.4-90.6V340.8L476 534.4v385.7L300 818.5V646.7l-159.4-90.6zM511.7 280l171.1-98.3 166.3 96-336.9 194.5-337-194.6 165.7-95.7L511.7 280z" />
</SvgIcon>
Expand Down
2 changes: 1 addition & 1 deletion docs/data/joy/getting-started/templates/files/App.tsx
Expand Up @@ -679,7 +679,7 @@ export default function FilesExample() {
</Box>
<ListDivider component="hr" />
<Box sx={{ py: 2, px: 1 }}>
<Button variant="plain" size="sm" endIcon={<EditOutlinedIcon />}>
<Button variant="plain" size="sm" endDecorator={<EditOutlinedIcon />}>
Add a description
</Button>
</Box>
Expand Down
2 changes: 1 addition & 1 deletion docs/data/joy/getting-started/templates/team/App.tsx
Expand Up @@ -486,7 +486,7 @@ export default function TeamExample() {
<Button
size="sm"
variant="plain"
endIcon={<KeyboardArrowRightRoundedIcon fontSize="small" />}
endDecorator={<KeyboardArrowRightRoundedIcon fontSize="small" />}
sx={{ px: 1, mt: 1 }}
>
Expand
Expand Down
6 changes: 3 additions & 3 deletions packages/mui-joy/src/Button/Button.spec.tsx
Expand Up @@ -73,14 +73,14 @@ function Icon() {
<Button
variant="solid"
color="success"
endIcon={<Icon />}
endDecorator={<Icon />}
sx={{ width: 'var(--Button-minHeight)' }}
>
<Icon />
</Button>;
<Button variant="solid" startIcon={<Icon />} size="sm">
<Button variant="solid" startDecorator={<Icon />} size="sm">
Add to cart
</Button>;
<Button variant="outlined" endIcon={<Icon />} color="success">
<Button variant="outlined" endDecorator={<Icon />} color="success">
Checkout
</Button>;
20 changes: 10 additions & 10 deletions packages/mui-joy/src/Button/Button.test.js
Expand Up @@ -7,13 +7,13 @@ import { ThemeProvider } from '@mui/joy/styles';
describe('Joy <Button />', () => {
const { render } = createRenderer();

describeConformance(<Button startIcon="icon">Conformance?</Button>, () => ({
describeConformance(<Button startDecorator="icon">Conformance?</Button>, () => ({
render,
classes,
ThemeProvider,
refInstanceof: window.HTMLButtonElement,
muiName: 'JoyButton',
testDeepOverrides: { slotName: 'startIcon', slotClassName: classes.startIcon },
testDeepOverrides: { slotName: 'startDecorator', slotClassName: classes.startDecorator },
testVariantProps: { variant: 'solid', fullWidth: true },
testCustomVariant: true,
skip: ['propsSpread', 'componentsProp', 'classesRoot'],
Expand Down Expand Up @@ -76,21 +76,21 @@ describe('Joy <Button />', () => {
expect(button).to.have.class(classes.fullWidth);
});

it('should render a button with startIcon', () => {
const { getByRole } = render(<Button startIcon={<span>icon</span>}>Hello World</Button>);
it('should render a button with startDecorator', () => {
const { getByRole } = render(<Button startDecorator={<span>icon</span>}>Hello World</Button>);
const button = getByRole('button');
const startIcon = button.querySelector(`.${classes.startIcon}`);
const startDecorator = button.querySelector(`.${classes.startDecorator}`);

expect(button).to.have.class(classes.root);
expect(startIcon).not.to.have.class(classes.endIcon);
expect(startDecorator).not.to.have.class(classes.endDecorator);
});

it('should render a button with endIcon', () => {
const { getByRole } = render(<Button endIcon={<span>icon</span>}>Hello World</Button>);
it('should render a button with endDecorator', () => {
const { getByRole } = render(<Button endDecorator={<span>icon</span>}>Hello World</Button>);
const button = getByRole('button');
const endIcon = button.querySelector(`.${classes.endIcon}`);
const endDecorator = button.querySelector(`.${classes.endDecorator}`);

expect(button).to.have.class(classes.root);
expect(endIcon).not.to.have.class(classes.startIcon);
expect(endDecorator).not.to.have.class(classes.startDecorator);
});
});

0 comments on commit e7ec3f1

Please sign in to comment.