Skip to content

Commit

Permalink
[material-ui][ToggleButton] Add fullWidth to toggleButtonClasses
Browse files Browse the repository at this point in the history
…and `toggleButtonGroupClasses` (#39536)

Co-authored-by: ZeeshanTamboli <[email protected]>
  • Loading branch information
Semigradsky and ZeeshanTamboli committed Oct 22, 2023
1 parent c577e38 commit 58c617e
Show file tree
Hide file tree
Showing 8 changed files with 65 additions and 6 deletions.
10 changes: 9 additions & 1 deletion docs/pages/material-ui/api/toggle-button-group.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,15 @@
"import { ToggleButtonGroup } from '@mui/material';"
],
"styles": {
"classes": ["root", "vertical", "disabled", "grouped", "groupedHorizontal", "groupedVertical"],
"classes": [
"root",
"vertical",
"disabled",
"grouped",
"groupedHorizontal",
"groupedVertical",
"fullWidth"
],
"globalClasses": { "disabled": "Mui-disabled" },
"name": "MuiToggleButtonGroup"
},
Expand Down
3 changes: 2 additions & 1 deletion docs/pages/material-ui/api/toggle-button.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@
"secondary",
"sizeSmall",
"sizeMedium",
"sizeLarge"
"sizeLarge",
"fullWidth"
],
"globalClasses": { "disabled": "Mui-disabled", "selected": "Mui-selected" },
"name": "MuiToggleButton"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
"nodeName": "the children",
"conditions": "<code>orientation=\"vertical\"</code>"
},
"fullWidth": {
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
"nodeName": "the root element",
"conditions": "<code>fullWidth={true}</code>"
}
}
}
5 changes: 5 additions & 0 deletions docs/translations/api-docs/toggle-button/toggle-button.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
"nodeName": "the root element",
"conditions": "<code>size=\"large\"</code>"
},
"fullWidth": {
"description": "Styles applied to {{nodeName}} if {{conditions}}.",
"nodeName": "the root element",
"conditions": "<code>fullWidth={true}</code>"
}
}
}
4 changes: 2 additions & 2 deletions packages/mui-material/src/ButtonGroup/ButtonGroup.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ describe('<ButtonGroup />', () => {
const button = getByRole('button');
const buttonGroup = container.firstChild;
expect(buttonGroup).not.to.have.class(classes.fullWidth);
expect(button).not.to.have.class('MuiButton-fullWidth');
expect(button).not.to.have.class(buttonClasses.fullWidth);
});

it('can pass fullWidth to Button', () => {
Expand All @@ -148,7 +148,7 @@ describe('<ButtonGroup />', () => {
const buttonGroup = container.firstChild;
const button = getByRole('button');
expect(buttonGroup).to.have.class(classes.fullWidth);
expect(button).to.have.class('MuiButton-fullWidth');
expect(button).to.have.class(buttonClasses.fullWidth);
});

it('classes.grouped should be merged with Button className', () => {
Expand Down
3 changes: 3 additions & 0 deletions packages/mui-material/src/ToggleButton/toggleButtonClasses.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ export interface ToggleButtonClasses {
sizeMedium: string;
/** Styles applied to the root element if `size="large"`. */
sizeLarge: string;
/** Styles applied to the root element if `fullWidth={true}`. */
fullWidth: string;
}

export type ToggleButtonClassKey = keyof ToggleButtonClasses;
Expand All @@ -38,6 +40,7 @@ const toggleButtonClasses: ToggleButtonClasses = generateUtilityClasses('MuiTogg
'sizeSmall',
'sizeMedium',
'sizeLarge',
'fullWidth',
]);

export default toggleButtonClasses;
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { describeConformance, createRenderer, screen } from '@mui-internal/test-
import ToggleButtonGroup, {
toggleButtonGroupClasses as classes,
} from '@mui/material/ToggleButtonGroup';
import ToggleButton from '@mui/material/ToggleButton';
import ToggleButton, { toggleButtonClasses } from '@mui/material/ToggleButton';

describe('<ToggleButtonGroup />', () => {
const { render } = createRenderer();
Expand Down Expand Up @@ -197,4 +197,30 @@ describe('<ToggleButtonGroup />', () => {
});
});
});

it('should not be fullWidth by default', () => {
const { container, getAllByRole } = render(
<ToggleButtonGroup>
<ToggleButton value="one">1</ToggleButton>
<ToggleButton value="two">2</ToggleButton>
</ToggleButtonGroup>,
);
const button = getAllByRole('button')[1];
const buttonGroup = container.firstChild;
expect(buttonGroup).not.to.have.class(classes.fullWidth);
expect(button).not.to.have.class(toggleButtonClasses.fullWidth);
});

it('can pass fullWidth to Button', () => {
const { container, getAllByRole } = render(
<ToggleButtonGroup fullWidth>
<ToggleButton value="one">1</ToggleButton>
<ToggleButton value="two">2</ToggleButton>
</ToggleButtonGroup>,
);
const buttonGroup = container.firstChild;
const button = getAllByRole('button')[1];
expect(buttonGroup).to.have.class(classes.fullWidth);
expect(button).to.have.class(toggleButtonClasses.fullWidth);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ export interface ToggleButtonGroupClasses {
groupedHorizontal: string;
/** Styles applied to the children if `orientation="vertical"`. */
groupedVertical: string;
/** Styles applied to the root element if `fullWidth={true}`. */
fullWidth: string;
}

export type ToggleButtonGroupClassKey = keyof ToggleButtonGroupClasses;
Expand All @@ -24,7 +26,16 @@ export function getToggleButtonGroupUtilityClass(slot: string): string {

const toggleButtonGroupClasses: ToggleButtonGroupClasses = generateUtilityClasses(
'MuiToggleButtonGroup',
['root', 'selected', 'vertical', 'disabled', 'grouped', 'groupedHorizontal', 'groupedVertical'],
[
'root',
'selected',
'vertical',
'disabled',
'grouped',
'groupedHorizontal',
'groupedVertical',
'fullWidth',
],
);

export default toggleButtonGroupClasses;

0 comments on commit 58c617e

Please sign in to comment.