Skip to content

Commit c7b109d

Browse files
langermankjoshblack
andauthoredJan 17, 2025··
Add flex-shrink to IconButton + tests (#5467)
* add flex-shrink * Create short-fireants-jog.md * fix test * try rename * fix regression * fine * fix test * test(e2e): update ActionBar test * test(vrt): update snapshots --------- Co-authored-by: Josh Black <joshblack@github.com> Co-authored-by: langermank <langermank@users.noreply.github.com>
1 parent fb0113d commit c7b109d

File tree

34 files changed

+68
-3
lines changed

34 files changed

+68
-3
lines changed
 

‎.changeset/short-fireants-jog.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@primer/react": patch
3+
---
4+
5+
Add `flex-shrink` to IconButton

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

Error rendering embedded code

Invalid image source.

‎e2e/components/IconButton.test.ts

+34
Original file line numberDiff line numberDiff line change
@@ -371,4 +371,38 @@ test.describe('IconButton', () => {
371371
})
372372
}
373373
})
374+
375+
test.describe('Flex', () => {
376+
for (const theme of themes) {
377+
test.describe(theme, () => {
378+
test('default @vrt', async ({page}) => {
379+
await visit(page, {
380+
id: 'components-iconbutton-devonly--icon-button-within-flex-container',
381+
globals: {
382+
colorScheme: theme,
383+
},
384+
})
385+
386+
// Default state
387+
expect(await page.screenshot()).toMatchSnapshot(`IconButton.Flex.${theme}.png`)
388+
})
389+
390+
test('axe @aat', async ({page}) => {
391+
await visit(page, {
392+
id: 'components-iconbutton-devonly--icon-button-within-flex-container',
393+
globals: {
394+
colorScheme: theme,
395+
},
396+
})
397+
await expect(page).toHaveNoViolations({
398+
rules: {
399+
'color-contrast': {
400+
enabled: theme !== 'dark_dimmed',
401+
},
402+
},
403+
})
404+
})
405+
})
406+
}
407+
})
374408
})

‎e2e/components/drafts/ActionBar.test.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,15 @@ test.describe('ActionBar', () => {
4141
},
4242
})
4343
const toolbarButtonSelector = `button[data-component="IconButton"]`
44-
await expect(page.locator(toolbarButtonSelector)).toHaveCount(10)
44+
await expect(page.locator(toolbarButtonSelector)).toHaveCount(9)
4545
await page.setViewportSize({width: viewports['primer.breakpoint.xs'], height: 768})
46-
await expect(page.locator(toolbarButtonSelector)).toHaveCount(6)
46+
await page.getByLabel('Insert Link').waitFor({
47+
state: 'hidden',
48+
})
49+
await expect(page.locator(toolbarButtonSelector)).toHaveCount(5)
4750
const moreButtonSelector = page.getByLabel('More Comment box toolbar items')
4851
await moreButtonSelector.click()
49-
await expect(page.locator('ul[role="menu"]>li')).toHaveCount(5)
52+
await expect(page.locator('ul[role="menu"] [role="menuitem"]')).toHaveCount(6)
5053
})
5154
})
5255
}

‎packages/react/src/Button/ButtonBase.module.css

+1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
/* stylelint-disable-next-line primer/spacing */
7676
padding: unset;
7777
place-content: center;
78+
flex-shrink: 0;
7879

7980
&:where([data-size='small']) {
8081
width: var(--control-small-size);

‎packages/react/src/Button/IconButton.dev.stories.tsx

+14
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {BoldIcon, ChevronDownIcon} from '@primer/octicons-react'
22
import React from 'react'
33
import {IconButton} from '.'
44
import Box from '../Box'
5+
import {Stack} from '../Stack'
56

67
export default {
78
title: 'Components/IconButton/DevOnly',
@@ -38,3 +39,16 @@ export const CustomSizeWithStyleProp = () => (
3839
/>
3940
</Box>
4041
)
42+
43+
export const IconButtonWithinFlexContainer = () => (
44+
<Stack direction="horizontal">
45+
<span>
46+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore
47+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
48+
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
49+
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
50+
</span>
51+
52+
<IconButton icon={BoldIcon} aria-label="Icon button" />
53+
</Stack>
54+
)

‎packages/react/src/TreeView/TreeView.module.css

+4
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@
174174
display: flex;
175175
color: var(--fgColor-muted);
176176
grid-area: leadingAction;
177+
178+
& > button {
179+
flex-shrink: 1;
180+
}
177181
}
178182

179183
.TreeViewItemLevelLine {

‎packages/react/src/TreeView/TreeView.tsx

+4
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,10 @@ const UlBox = toggleStyledComponent(
242242
display: flex;
243243
color: ${get('colors.fg.muted')};
244244
grid-area: leadingAction;
245+
246+
& > button {
247+
flex-shrink: 1;
248+
}
245249
}
246250
247251
.PRIVATE_TreeView-item-level-line {

0 commit comments

Comments
 (0)
Please sign in to comment.