Skip to content

Commit ae00350

Browse files
authored
StackItem responsive grow bug fix (#4891)
* getting somewhere * allow true/false for object * why null tho? * fix tests * Create mighty-parrots-carry.md
1 parent e6f7b72 commit ae00350

File tree

5 files changed

+24
-18
lines changed

5 files changed

+24
-18
lines changed

.changeset/mighty-parrots-carry.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@primer/react": patch
3+
---
4+
5+
`StackItem` responsive grow bug fix

packages/react/src/Stack/Stack.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -377,23 +377,31 @@ const StyledStackItem = styled.div`
377377
flex: 0 1 auto;
378378
min-inline-size: 0;
379379
380-
&[data-grow],
381-
&[data-grow-narrow] {
380+
&[data-grow='true'],
381+
&[data-grow-narrow='true'] {
382382
flex-grow: 1;
383383
}
384384
385385
// @custom-media --veiwportRange-regular
386386
@media (min-width: 48rem) {
387-
&[data-grow-regular] {
387+
&[data-grow-regular='true'] {
388388
flex-grow: 1;
389389
}
390+
391+
&[data-grow-regular='false'] {
392+
flex-grow: 0;
393+
}
390394
}
391395
392396
// @custom-media --viewportRange-wide
393397
@media (min-width: 87.5rem) {
394-
&[data-grow-wide] {
398+
&[data-grow-wide='true'] {
395399
flex-grow: 1;
396400
}
401+
402+
&[data-grow-wide='false'] {
403+
flex-grow: 0;
404+
}
397405
}
398406
`
399407

@@ -413,7 +421,7 @@ type StackItemProps<As> = React.PropsWithChildren<{
413421
function StackItem<As extends ElementType>({
414422
as,
415423
children,
416-
grow = false,
424+
grow,
417425
...rest
418426
}: StackItemProps<As> & React.ComponentPropsWithoutRef<ElementType extends As ? As : 'div'>) {
419427
const BaseComponent = as ?? 'div'

packages/react/src/Stack/__tests__/StackItem.test.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ describe('StackItem', () => {
1919
<StackItem data-testid="grow-false" />
2020
</Stack>,
2121
)
22-
expect(screen.getByTestId('grow-true')).toHaveAttribute('data-grow', '')
23-
expect(screen.getByTestId('grow-false')).not.toHaveAttribute('data-grow')
22+
expect(screen.getByTestId('grow-true')).toHaveAttribute('data-grow', 'true')
23+
expect(screen.getByTestId('grow-false')).not.toHaveAttribute('data-grow', 'false')
2424
})
2525

2626
it('should support responsive `grow` values', () => {
@@ -29,9 +29,9 @@ describe('StackItem', () => {
2929
<StackItem data-testid="responsive-grow" grow={{narrow: true, regular: false, wide: true}} />
3030
</Stack>,
3131
)
32-
expect(screen.getByTestId('responsive-grow')).toHaveAttribute('data-grow-narrow', '')
33-
expect(screen.getByTestId('responsive-grow')).not.toHaveAttribute('data-grow-regular')
34-
expect(screen.getByTestId('responsive-grow')).toHaveAttribute('data-grow-wide', '')
32+
expect(screen.getByTestId('responsive-grow')).toHaveAttribute('data-grow-narrow', 'true')
33+
expect(screen.getByTestId('responsive-grow')).toHaveAttribute('data-grow-regular', 'false')
34+
expect(screen.getByTestId('responsive-grow')).toHaveAttribute('data-grow-wide', 'true')
3535
})
3636

3737
it('should render a custom component with the `as` prop', () => {

packages/react/src/internal/utils/__tests__/getResponsiveAttributes.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe('getResponsiveAttributes', () => {
1414

1515
test('property with boolean value', () => {
1616
expect(getResponsiveAttributes('grow', true)).toMatchObject({
17-
'data-grow': '',
17+
'data-grow': true,
1818
})
1919

2020
expect(getResponsiveAttributes('grow', false)).toMatchObject({})

packages/react/src/internal/utils/getResponsiveAttributes.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,5 @@ export function getResponsiveAttributes<T>(
3636
}
3737

3838
function serialize<T>(property: string, value: T) {
39-
if (typeof value === 'boolean') {
40-
if (value) {
41-
return [property, '']
42-
}
43-
return []
44-
}
45-
4639
return [property, value]
4740
}

0 commit comments

Comments
 (0)