Skip to content

Commit 4345b34

Browse files
authored
[Layout foundations] Update layout component custom properties (Shopify#8954)
### WHY are these changes introduced? Small update to custom properties of `HorizontalStack`, `VerticalStack`, and `HorizontalGrid` to have the custom properties align with the new component names. ### WHAT is this pull request doing? - Updates `--pc-stack` custom properties to `--pc-vertical-stack` - Updates `--pc-inline` custom properties to `--pc-horizontal-stack` - Updates `--pc-columns` custom properties to `--pc-horizontal-grid` ### How to 🎩 🖥 [Local development instructions](https://github.com/Shopify/polaris/blob/main/README.md#local-development) 🗒 [General tophatting guidelines](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting.md) 📄 [Changelog guidelines](https://github.com/Shopify/polaris/blob/main/.github/CONTRIBUTING.md#changelog) ### 🎩 checklist - [ ] Tested on [mobile](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting.md#cross-browser-testing) - [ ] Tested on [multiple browsers](https://help.shopify.com/en/manual/shopify-admin/supported-browsers) - [ ] Tested for [accessibility](https://github.com/Shopify/polaris/blob/main/documentation/Accessibility%20testing.md) - [ ] Updated the component's `README.md` with documentation changes - [ ] [Tophatted documentation](https://github.com/Shopify/polaris/blob/main/documentation/Tophatting%20documentation.md) changes in the style guide
1 parent 21b303f commit 4345b34

File tree

10 files changed

+84
-71
lines changed

10 files changed

+84
-71
lines changed

.changeset/rotten-coats-drive.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/polaris': patch
3+
---
4+
5+
Updated custom property names to align with new component names for `HorizontalGrid`, `HorizontalStack`, and `VerticalStack`
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
@import '../../styles/common';
22

33
.HorizontalGrid {
4-
@include responsive-props('columns', 'gap', 'gap');
4+
@include responsive-props('horizontal-grid', 'gap', 'gap');
55
@include responsive-props(
6-
'columns',
6+
'horizontal-grid',
77
'grid-template-columns',
88
'grid-template-columns'
99
);
1010

1111
// stylelint-disable -- Polaris component custom properties
12-
--pc-columns-align-items: initial;
12+
--pc-horizontal-grid-align-items: initial;
1313
// stylelint-enable
1414
display: grid;
1515
// stylelint-disable-next-line -- generated by polaris-migrator DO NOT COPY
16-
align-items: var(--pc-columns-align-items);
16+
align-items: var(--pc-horizontal-grid-align-items);
1717
}

polaris-react/src/components/HorizontalGrid/HorizontalGrid.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,12 @@ export function HorizontalGrid({
4545
}: HorizontalGridProps) {
4646
const style = {
4747
...getResponsiveValue(
48-
'columns',
48+
'horizontal-grid',
4949
'grid-template-columns',
5050
formatHorizontalGrid(columns),
5151
),
52-
...getResponsiveProps('columns', 'gap', 'space', gap),
53-
'--pc-columns-align-items': alignItems,
52+
...getResponsiveProps('horizontal-grid', 'gap', 'space', gap),
53+
'--pc-horizontal-grid-align-items': alignItems,
5454
} as React.CSSProperties;
5555

5656
return (

polaris-react/src/components/HorizontalGrid/tests/HorizontalGrid.test.tsx

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,54 +5,58 @@ import {HorizontalGrid} from '..';
55

66
describe('HorizontalGrid', () => {
77
it('only renders custom properties that match the properties passed in', () => {
8-
const columns = mountWithApp(
8+
const horizontalGrid = mountWithApp(
99
<HorizontalGrid gap={{md: '1'}} alignItems="start" />,
1010
);
1111

12-
expect(columns).toContainReactComponent('div', {
12+
expect(horizontalGrid).toContainReactComponent('div', {
1313
style: {
14-
'--pc-columns-gap-md': 'var(--p-space-1)',
15-
'--pc-columns-align-items': 'start',
14+
'--pc-horizontal-grid-gap-md': 'var(--p-space-1)',
15+
'--pc-horizontal-grid-align-items': 'start',
1616
} as React.CSSProperties,
1717
});
1818
});
1919

2020
it('formats string columns', () => {
21-
const columns = mountWithApp(
21+
const horizontalGrid = mountWithApp(
2222
<HorizontalGrid columns={{xs: '1fr 1fr', lg: '1.5fr 0.5fr'}} />,
2323
);
2424

25-
expect(columns).toContainReactComponent('div', {
25+
expect(horizontalGrid).toContainReactComponent('div', {
2626
style: {
27-
'--pc-columns-grid-template-columns-xs': '1fr 1fr',
28-
'--pc-columns-grid-template-columns-lg': '1.5fr 0.5fr',
27+
'--pc-horizontal-grid-grid-template-columns-xs': '1fr 1fr',
28+
'--pc-horizontal-grid-grid-template-columns-lg': '1.5fr 0.5fr',
2929
} as React.CSSProperties,
3030
});
3131
});
3232

3333
it('formats number columns', () => {
34-
const columns = mountWithApp(<HorizontalGrid columns={{xs: 1, md: 4}} />);
34+
const horizontalGrid = mountWithApp(
35+
<HorizontalGrid columns={{xs: 1, md: 4}} />,
36+
);
3537

36-
expect(columns).toContainReactComponent('div', {
38+
expect(horizontalGrid).toContainReactComponent('div', {
3739
style: {
38-
'--pc-columns-grid-template-columns-xs': 'repeat(1, minmax(0, 1fr))',
39-
'--pc-columns-grid-template-columns-md': 'repeat(4, minmax(0, 1fr))',
40+
'--pc-horizontal-grid-grid-template-columns-xs':
41+
'repeat(1, minmax(0, 1fr))',
42+
'--pc-horizontal-grid-grid-template-columns-md':
43+
'repeat(4, minmax(0, 1fr))',
4044
} as React.CSSProperties,
4145
});
4246
});
4347

4448
it('formats alias columns', () => {
45-
const columns = mountWithApp(
49+
const horizontalGrid = mountWithApp(
4650
<HorizontalGrid
4751
columns={{xs: ['oneHalf', 'oneHalf'], md: ['oneThird', 'twoThirds']}}
4852
/>,
4953
);
5054

51-
expect(columns).toContainReactComponent('div', {
55+
expect(horizontalGrid).toContainReactComponent('div', {
5256
style: {
53-
'--pc-columns-grid-template-columns-xs':
57+
'--pc-horizontal-grid-grid-template-columns-xs':
5458
'minmax(0, 1fr) minmax(0, 1fr)',
55-
'--pc-columns-grid-template-columns-md':
59+
'--pc-horizontal-grid-grid-template-columns-md':
5660
'minmax(0, 1fr) minmax(0, 2fr)',
5761
} as React.CSSProperties,
5862
});
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
@import '../../styles/common';
22

33
.HorizontalStack {
4-
@include responsive-props('inline', 'gap', 'gap');
4+
@include responsive-props('horizontal-stack', 'gap', 'gap');
55
display: flex;
66
// stylelint-disable-next-line -- generated by polaris-migrator DO NOT COPY
7-
flex-wrap: var(--pc-inline-wrap);
7+
flex-wrap: var(--pc-horizontal-stack-wrap);
88
// stylelint-disable-next-line -- generated by polaris-migrator DO NOT COPY
9-
align-items: var(--pc-inline-block-align);
9+
align-items: var(--pc-horizontal-stack-block-align);
1010
// stylelint-disable-next-line -- generated by polaris-migrator DO NOT COPY
11-
justify-content: var(--pc-inline-align);
11+
justify-content: var(--pc-horizontal-stack-align);
1212
}

polaris-react/src/components/HorizontalStack/HorizontalStack.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ export const HorizontalStack = function HorizontalStack({
4343
children,
4444
}: HorizontalStackProps) {
4545
const style = {
46-
'--pc-inline-align': align,
47-
'--pc-inline-block-align': blockAlign,
48-
'--pc-inline-wrap': wrap ? 'wrap' : 'nowrap',
49-
...getResponsiveProps('inline', 'gap', 'space', gap),
46+
'--pc-horizontal-stack-align': align,
47+
'--pc-horizontal-stack-block-align': blockAlign,
48+
'--pc-horizontal-stack-wrap': wrap ? 'wrap' : 'nowrap',
49+
...getResponsiveProps('horizontal-stack', 'gap', 'space', gap),
5050
} as React.CSSProperties;
5151

5252
return (

polaris-react/src/components/HorizontalStack/tests/HorizontalStack.test.tsx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,54 +13,54 @@ describe('<HorizontalStack />', () => {
1313
));
1414

1515
it('renders its children', () => {
16-
const stack = mountWithApp(
16+
const horizontalStack = mountWithApp(
1717
<HorizontalStack>{renderChildren()}</HorizontalStack>,
1818
);
1919

20-
expect(stack).toContainReactText(childText);
20+
expect(horizontalStack).toContainReactText(childText);
2121
});
2222

2323
it('renders custom properties by default', () => {
24-
const stack = mountWithApp(
24+
const horizontalStack = mountWithApp(
2525
<HorizontalStack>{renderChildren()}</HorizontalStack>,
2626
);
2727

28-
expect(stack).toContainReactComponent('div', {
28+
expect(horizontalStack).toContainReactComponent('div', {
2929
style: expect.objectContaining({
30-
'--pc-inline-wrap': 'wrap',
30+
'--pc-horizontal-stack-wrap': 'wrap',
3131
}) as React.CSSProperties,
3232
});
3333
});
3434

3535
it('overrides custom properties if they are passed in', () => {
36-
const stack = mountWithApp(
36+
const horizontalStack = mountWithApp(
3737
<HorizontalStack align="center" blockAlign="start" gap="10">
3838
{renderChildren()}
3939
</HorizontalStack>,
4040
);
4141

42-
expect(stack).toContainReactComponent('div', {
42+
expect(horizontalStack).toContainReactComponent('div', {
4343
style: expect.objectContaining({
44-
'--pc-inline-align': 'center',
45-
'--pc-inline-block-align': 'start',
46-
'--pc-inline-wrap': 'wrap',
47-
'--pc-inline-gap-xs': 'var(--p-space-10)',
44+
'--pc-horizontal-stack-align': 'center',
45+
'--pc-horizontal-stack-block-align': 'start',
46+
'--pc-horizontal-stack-wrap': 'wrap',
47+
'--pc-horizontal-stack-gap-xs': 'var(--p-space-10)',
4848
}) as React.CSSProperties,
4949
});
5050
});
5151

5252
it('accepts gap based on breakpoints', () => {
53-
const stack = mountWithApp(
53+
const horizontalStack = mountWithApp(
5454
<HorizontalStack gap={{xs: '2', md: '8'}}>
5555
{renderChildren()}
5656
</HorizontalStack>,
5757
);
5858

59-
expect(stack).toContainReactComponent('div', {
59+
expect(horizontalStack).toContainReactComponent('div', {
6060
style: expect.objectContaining({
61-
'--pc-inline-wrap': 'wrap',
62-
'--pc-inline-gap-xs': 'var(--p-space-2)',
63-
'--pc-inline-gap-md': 'var(--p-space-8)',
61+
'--pc-horizontal-stack-wrap': 'wrap',
62+
'--pc-horizontal-stack-gap-xs': 'var(--p-space-2)',
63+
'--pc-horizontal-stack-gap-md': 'var(--p-space-8)',
6464
}) as React.CSSProperties,
6565
});
6666
});

polaris-react/src/components/VerticalStack/VerticalStack.scss

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
@import '../../styles/common';
22

33
.VerticalStack {
4-
@include responsive-props('stack', 'gap', 'gap');
4+
@include responsive-props('vertical-stack', 'gap', 'gap');
55
// stylelint-disable -- Polaris component custom properties
6-
--pc-stack-align: initial;
7-
--pc-stack-inline-align: initial;
8-
--pc-stack-order: initial;
6+
--pc-vertical-stack-align: initial;
7+
--pc-vertical-stack-inline-align: initial;
8+
--pc-vertical-stack-order: initial;
99
// stylelint-enable
1010
display: flex;
1111
// stylelint-disable-next-line -- custom property to set flex direction
12-
flex-direction: var(--pc-stack-order);
12+
flex-direction: var(--pc-vertical-stack-order);
1313
// stylelint-disable-next-line -- custom property to set horizontal alignment
14-
align-items: var(--pc-stack-inline-align);
14+
align-items: var(--pc-vertical-stack-inline-align);
1515
// stylelint-disable-next-line -- custom property to set vertical alignment
16-
justify-content: var(--pc-stack-align);
16+
justify-content: var(--pc-vertical-stack-align);
1717
}
1818

1919
.listReset {

polaris-react/src/components/VerticalStack/VerticalStack.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ export const VerticalStack = ({
6161
);
6262

6363
const style = {
64-
'--pc-stack-align': align ? `${align}` : '',
65-
'--pc-stack-inline-align': inlineAlign ? `${inlineAlign}` : '',
66-
'--pc-stack-order': reverseOrder ? 'column-reverse' : 'column',
67-
...getResponsiveProps('stack', 'gap', 'space', gap),
64+
'--pc-vertical-stack-align': align ? `${align}` : '',
65+
'--pc-vertical-stack-inline-align': inlineAlign ? `${inlineAlign}` : '',
66+
'--pc-vertical-stack-order': reverseOrder ? 'column-reverse' : 'column',
67+
...getResponsiveProps('vertical-stack', 'gap', 'space', gap),
6868
} as React.CSSProperties;
6969

7070
return React.createElement(

polaris-react/src/components/VerticalStack/tests/VerticalStack.tsx renamed to polaris-react/src/components/VerticalStack/tests/VerticalStack.test.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,45 +8,49 @@ const children = <p>{text}</p>;
88

99
describe('<VerticalStack />', () => {
1010
it('renders children', () => {
11-
const stack = mountWithApp(<VerticalStack>{children}</VerticalStack>);
11+
const verticalStack = mountWithApp(
12+
<VerticalStack>{children}</VerticalStack>,
13+
);
1214

13-
expect(stack).toContainReactComponent('p', {children: text});
15+
expect(verticalStack).toContainReactComponent('p', {children: text});
1416
});
1517

1618
it('renders custom properties by default', () => {
17-
const stack = mountWithApp(<VerticalStack>{children}</VerticalStack>);
19+
const verticalStack = mountWithApp(
20+
<VerticalStack>{children}</VerticalStack>,
21+
);
1822

19-
expect(stack).toContainReactComponent('div', {
23+
expect(verticalStack).toContainReactComponent('div', {
2024
style: expect.objectContaining({
21-
'--pc-stack-order': 'column',
25+
'--pc-vertical-stack-order': 'column',
2226
}) as React.CSSProperties,
2327
});
2428
});
2529

2630
it('overrides custom properties if they are passed in', () => {
27-
const stack = mountWithApp(
31+
const verticalStack = mountWithApp(
2832
<VerticalStack inlineAlign="center" gap="10">
2933
{children}
3034
</VerticalStack>,
3135
);
3236

33-
expect(stack).toContainReactComponent('div', {
37+
expect(verticalStack).toContainReactComponent('div', {
3438
style: expect.objectContaining({
35-
'--pc-stack-inline-align': 'center',
36-
'--pc-stack-gap-xs': 'var(--p-space-10)',
39+
'--pc-vertical-stack-inline-align': 'center',
40+
'--pc-vertical-stack-gap-xs': 'var(--p-space-10)',
3741
}) as React.CSSProperties,
3842
});
3943
});
4044

4145
it('accepts gap based on breakpoints', () => {
42-
const stack = mountWithApp(
46+
const verticalStack = mountWithApp(
4347
<VerticalStack gap={{xs: '2', md: '8'}}>{children}</VerticalStack>,
4448
);
4549

46-
expect(stack).toContainReactComponent('div', {
50+
expect(verticalStack).toContainReactComponent('div', {
4751
style: expect.objectContaining({
48-
'--pc-stack-gap-md': 'var(--p-space-8)',
49-
'--pc-stack-gap-xs': 'var(--p-space-2)',
52+
'--pc-vertical-stack-gap-md': 'var(--p-space-8)',
53+
'--pc-vertical-stack-gap-xs': 'var(--p-space-2)',
5054
}) as React.CSSProperties,
5155
});
5256
});

0 commit comments

Comments
 (0)