From 21f54af4752079ede6ec2166f691bfb880a48f8b Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Fri, 26 Aug 2022 10:30:08 -0400 Subject: [PATCH 01/13] Add AlphaStack component --- .../src/components/AlphaStack/AlphaStack.tsx | 40 +++++++ .../src/components/AlphaStack/Stack.scss | 103 ++++++++++++++++++ .../AlphaStack/components/Item/Item.tsx | 20 ++++ .../AlphaStack/components/Item/index.ts | 1 + .../components/AlphaStack/components/index.ts | 1 + .../src/components/AlphaStack/index.ts | 1 + polaris-react/src/index.ts | 3 + 7 files changed, 169 insertions(+) create mode 100644 polaris-react/src/components/AlphaStack/AlphaStack.tsx create mode 100644 polaris-react/src/components/AlphaStack/Stack.scss create mode 100644 polaris-react/src/components/AlphaStack/components/Item/Item.tsx create mode 100644 polaris-react/src/components/AlphaStack/components/Item/index.ts create mode 100644 polaris-react/src/components/AlphaStack/components/index.ts create mode 100644 polaris-react/src/components/AlphaStack/index.ts diff --git a/polaris-react/src/components/AlphaStack/AlphaStack.tsx b/polaris-react/src/components/AlphaStack/AlphaStack.tsx new file mode 100644 index 00000000000..e7455242f5f --- /dev/null +++ b/polaris-react/src/components/AlphaStack/AlphaStack.tsx @@ -0,0 +1,40 @@ +import React from 'react'; +import type {spacing} from '@shopify/polaris-tokens'; + +import {classNames, variationName} from '../../utilities/css'; +import {elementChildren, wrapWithComponent} from '../../utilities/components'; + +import styles from './Stack.scss'; +import {Item} from './components'; + +type SpacingTokenGroup = typeof spacing; +type SpacingTokenName = keyof SpacingTokenGroup; + +// TODO: Bring this logic into tokens +type Spacing = SpacingTokenName extends `space-${infer Scale}` ? Scale : never; + +type Alignment = 'left' | 'right' | 'center'; + +export interface AlphaStackProps { + /** Elements to display inside stack */ + children?: React.ReactNode; + /** Adjust spacing between elements */ + spacing?: Spacing; + /** Adjust vertical alignment of elements */ + alignment?: Alignment; +} + +export const AlphaStack = ({children, spacing, alignment}: AlphaStackProps) => { + const className = classNames( + styles.Stack, + spacing && styles[variationName('spacing', spacing)], + alignment && styles[variationName('alignment', alignment)], + ); + + const itemMarkup = elementChildren(children).map((child, index) => { + const props = {key: index}; + return wrapWithComponent(child, Item, props); + }); + + return
{itemMarkup}
; +}; diff --git a/polaris-react/src/components/AlphaStack/Stack.scss b/polaris-react/src/components/AlphaStack/Stack.scss new file mode 100644 index 00000000000..1835c6b527e --- /dev/null +++ b/polaris-react/src/components/AlphaStack/Stack.scss @@ -0,0 +1,103 @@ +.Stack { + --pc-stack-spacing: var(--p-space-4); + display: flex; + flex-direction: column; + align-items: stretch; + margin-top: calc(-1 * var(--pc-stack-spacing)); + margin-left: calc(-1 * var(--pc-stack-spacing)); + + > .Item { + margin-top: var(--pc-stack-spacing); + margin-left: var(--pc-stack-spacing); + max-width: 100%; + } +} + +.spacing0 { + --pc-stack-spacing: var(--p-space-0); +} + +.spacing025 { + --pc-stack-spacing: var(--p-space-025); +} + +.spacing05 { + --pc-stack-spacing: var(--p-space-05); +} + +.spacin1 { + --pc-stack-spacing: var(--p-space1); +} + +.spacing2 { + --pc-stack-spacing: var(--p-space-2); +} + +.spacing3 { + --pc-stack-spacing: var(--p-space-3); +} + +.spacing4 { + --pc-stack-spacing: var(--p-space-4); +} + +.spacing5 { + --pc-stack-spacing: var(--p-space-5); +} + +.spacing6 { + --pc-stack-spacing: var(--p-space-6); +} + +.spacing8 { + --pc-stack-spacing: var(--p-space-8); +} + +.spacing10 { + --pc-stack-spacing: var(--p-space-10); +} + +.spacing12 { + --pc-stack-spacing: var(--p-space-12); +} + +.spacing16 { + --pc-stack-spacing: var(--p-space-16); +} + +.spacing20 { + --pc-stack-spacing: var(--p-space-20); +} + +.spacing24 { + --pc-stack-spacing: var(--p-space-24); +} + +.spacing28 { + --pc-stack-spacing: var(--p-space-28); +} + +.spacing32 { + --pc-stack-spacing: var(--p-space-32); +} + +.alignmentLeft { + align-items: flex-start; +} + +.alignmentRight { + align-items: flex-end; +} + +.alignmentCenter { + align-items: center; +} + +.Item { + flex: 0 0 auto; + min-width: 0; +} + +.Item-fill { + flex: 1 1 auto; +} diff --git a/polaris-react/src/components/AlphaStack/components/Item/Item.tsx b/polaris-react/src/components/AlphaStack/components/Item/Item.tsx new file mode 100644 index 00000000000..404ba97c457 --- /dev/null +++ b/polaris-react/src/components/AlphaStack/components/Item/Item.tsx @@ -0,0 +1,20 @@ +import React from 'react'; + +import {classNames} from '../../../../utilities/css'; +import styles from '../../Stack.scss'; + +export interface ItemProps { + /** Elements to display inside item */ + children?: React.ReactNode; + /** Fill the remaining horizontal space in the stack with the item */ + fill?: boolean; + /** + * @default false + */ +} + +export function Item({children, fill}: ItemProps) { + const className = classNames(styles.Item, fill && styles['Item-fill']); + + return
{children}
; +} diff --git a/polaris-react/src/components/AlphaStack/components/Item/index.ts b/polaris-react/src/components/AlphaStack/components/Item/index.ts new file mode 100644 index 00000000000..c924835a042 --- /dev/null +++ b/polaris-react/src/components/AlphaStack/components/Item/index.ts @@ -0,0 +1 @@ +export * from './Item'; diff --git a/polaris-react/src/components/AlphaStack/components/index.ts b/polaris-react/src/components/AlphaStack/components/index.ts new file mode 100644 index 00000000000..c924835a042 --- /dev/null +++ b/polaris-react/src/components/AlphaStack/components/index.ts @@ -0,0 +1 @@ +export * from './Item'; diff --git a/polaris-react/src/components/AlphaStack/index.ts b/polaris-react/src/components/AlphaStack/index.ts new file mode 100644 index 00000000000..832515641aa --- /dev/null +++ b/polaris-react/src/components/AlphaStack/index.ts @@ -0,0 +1 @@ +export * from './AlphaStack'; diff --git a/polaris-react/src/index.ts b/polaris-react/src/index.ts index ff69562764e..271a91a732a 100644 --- a/polaris-react/src/index.ts +++ b/polaris-react/src/index.ts @@ -46,6 +46,9 @@ export type { export {ActionMenu} from './components/ActionMenu'; export type {ActionMenuProps} from './components/ActionMenu'; +export {AlphaStack} from './components/AlphaStack'; +export type {AlphaStackProps} from './components/AlphaStack'; + export {Autocomplete} from './components/Autocomplete'; export type {AutocompleteProps} from './components/Autocomplete'; From d5b50cc4983795c90f59281cd1d51daba4304dd5 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Fri, 26 Aug 2022 13:22:38 -0400 Subject: [PATCH 02/13] Update AlphaStack --- .../src/components/AlphaStack/AlphaStack.tsx | 8 ++++---- polaris-react/src/components/AlphaStack/Stack.scss | 14 +++++--------- .../components/AlphaStack/components/Item/Item.tsx | 6 ++---- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/polaris-react/src/components/AlphaStack/AlphaStack.tsx b/polaris-react/src/components/AlphaStack/AlphaStack.tsx index e7455242f5f..0dfdba93361 100644 --- a/polaris-react/src/components/AlphaStack/AlphaStack.tsx +++ b/polaris-react/src/components/AlphaStack/AlphaStack.tsx @@ -13,7 +13,7 @@ type SpacingTokenName = keyof SpacingTokenGroup; // TODO: Bring this logic into tokens type Spacing = SpacingTokenName extends `space-${infer Scale}` ? Scale : never; -type Alignment = 'left' | 'right' | 'center'; +type Align = 'start' | 'end' | 'center'; export interface AlphaStackProps { /** Elements to display inside stack */ @@ -21,14 +21,14 @@ export interface AlphaStackProps { /** Adjust spacing between elements */ spacing?: Spacing; /** Adjust vertical alignment of elements */ - alignment?: Alignment; + align?: Align; } -export const AlphaStack = ({children, spacing, alignment}: AlphaStackProps) => { +export const AlphaStack = ({children, spacing, align}: AlphaStackProps) => { const className = classNames( styles.Stack, spacing && styles[variationName('spacing', spacing)], - alignment && styles[variationName('alignment', alignment)], + align && styles[variationName('align', align)], ); const itemMarkup = elementChildren(children).map((child, index) => { diff --git a/polaris-react/src/components/AlphaStack/Stack.scss b/polaris-react/src/components/AlphaStack/Stack.scss index 1835c6b527e..1679c9e61b0 100644 --- a/polaris-react/src/components/AlphaStack/Stack.scss +++ b/polaris-react/src/components/AlphaStack/Stack.scss @@ -2,7 +2,7 @@ --pc-stack-spacing: var(--p-space-4); display: flex; flex-direction: column; - align-items: stretch; + align-items: start; margin-top: calc(-1 * var(--pc-stack-spacing)); margin-left: calc(-1 * var(--pc-stack-spacing)); @@ -25,7 +25,7 @@ --pc-stack-spacing: var(--p-space-05); } -.spacin1 { +.spacing1 { --pc-stack-spacing: var(--p-space1); } @@ -81,15 +81,15 @@ --pc-stack-spacing: var(--p-space-32); } -.alignmentLeft { +.alignStart { align-items: flex-start; } -.alignmentRight { +.alignEnd { align-items: flex-end; } -.alignmentCenter { +.alignCenter { align-items: center; } @@ -97,7 +97,3 @@ flex: 0 0 auto; min-width: 0; } - -.Item-fill { - flex: 1 1 auto; -} diff --git a/polaris-react/src/components/AlphaStack/components/Item/Item.tsx b/polaris-react/src/components/AlphaStack/components/Item/Item.tsx index 404ba97c457..f5b30ca2203 100644 --- a/polaris-react/src/components/AlphaStack/components/Item/Item.tsx +++ b/polaris-react/src/components/AlphaStack/components/Item/Item.tsx @@ -6,15 +6,13 @@ import styles from '../../Stack.scss'; export interface ItemProps { /** Elements to display inside item */ children?: React.ReactNode; - /** Fill the remaining horizontal space in the stack with the item */ - fill?: boolean; /** * @default false */ } -export function Item({children, fill}: ItemProps) { - const className = classNames(styles.Item, fill && styles['Item-fill']); +export function Item({children}: ItemProps) { + const className = classNames(styles.Item); return
{children}
; } From 9602707d04d97113ec5c3901692b6648eb54ebf7 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Mon, 29 Aug 2022 13:57:33 -0400 Subject: [PATCH 03/13] add changeset --- .changeset/poor-kiwis-travel.md | 5 +++++ polaris-react/src/components/AlphaStack/AlphaStack.tsx | 2 ++ 2 files changed, 7 insertions(+) create mode 100644 .changeset/poor-kiwis-travel.md diff --git a/.changeset/poor-kiwis-travel.md b/.changeset/poor-kiwis-travel.md new file mode 100644 index 00000000000..713cd12905f --- /dev/null +++ b/.changeset/poor-kiwis-travel.md @@ -0,0 +1,5 @@ +--- +'@shopify/polaris': patch +--- + +Add `AlphaStack` component diff --git a/polaris-react/src/components/AlphaStack/AlphaStack.tsx b/polaris-react/src/components/AlphaStack/AlphaStack.tsx index 0dfdba93361..0e50de39cf2 100644 --- a/polaris-react/src/components/AlphaStack/AlphaStack.tsx +++ b/polaris-react/src/components/AlphaStack/AlphaStack.tsx @@ -38,3 +38,5 @@ export const AlphaStack = ({children, spacing, align}: AlphaStackProps) => { return
{itemMarkup}
; }; + +AlphaStack.Item = Item; From af58578df1bc447cb4069a65dc349d1af7e95b78 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Tue, 30 Aug 2022 09:12:44 -0400 Subject: [PATCH 04/13] Fix token name --- polaris-react/src/components/AlphaStack/Stack.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polaris-react/src/components/AlphaStack/Stack.scss b/polaris-react/src/components/AlphaStack/Stack.scss index 1679c9e61b0..f36e84ae4a1 100644 --- a/polaris-react/src/components/AlphaStack/Stack.scss +++ b/polaris-react/src/components/AlphaStack/Stack.scss @@ -26,7 +26,7 @@ } .spacing1 { - --pc-stack-spacing: var(--p-space1); + --pc-stack-spacing: var(--p-space-1); } .spacing2 { From c295e9a73955b58e428f5bfa22aa767ebd6e191f Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Tue, 30 Aug 2022 16:20:36 -0400 Subject: [PATCH 05/13] Remove `Item` component --- .../AlphaStack/components/Item/Item.tsx | 18 ------------------ .../AlphaStack/components/Item/index.ts | 1 - .../components/AlphaStack/components/index.ts | 1 - 3 files changed, 20 deletions(-) delete mode 100644 polaris-react/src/components/AlphaStack/components/Item/Item.tsx delete mode 100644 polaris-react/src/components/AlphaStack/components/Item/index.ts delete mode 100644 polaris-react/src/components/AlphaStack/components/index.ts diff --git a/polaris-react/src/components/AlphaStack/components/Item/Item.tsx b/polaris-react/src/components/AlphaStack/components/Item/Item.tsx deleted file mode 100644 index f5b30ca2203..00000000000 --- a/polaris-react/src/components/AlphaStack/components/Item/Item.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; - -import {classNames} from '../../../../utilities/css'; -import styles from '../../Stack.scss'; - -export interface ItemProps { - /** Elements to display inside item */ - children?: React.ReactNode; - /** - * @default false - */ -} - -export function Item({children}: ItemProps) { - const className = classNames(styles.Item); - - return
{children}
; -} diff --git a/polaris-react/src/components/AlphaStack/components/Item/index.ts b/polaris-react/src/components/AlphaStack/components/Item/index.ts deleted file mode 100644 index c924835a042..00000000000 --- a/polaris-react/src/components/AlphaStack/components/Item/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Item'; diff --git a/polaris-react/src/components/AlphaStack/components/index.ts b/polaris-react/src/components/AlphaStack/components/index.ts deleted file mode 100644 index c924835a042..00000000000 --- a/polaris-react/src/components/AlphaStack/components/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './Item'; From a1adabe13f082eac0341c85981576e1f5e382591 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Tue, 30 Aug 2022 16:21:38 -0400 Subject: [PATCH 06/13] Refactor `AlphaStack` --- .../src/components/AlphaStack/AlphaStack.tsx | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/polaris-react/src/components/AlphaStack/AlphaStack.tsx b/polaris-react/src/components/AlphaStack/AlphaStack.tsx index 0e50de39cf2..de0f2de7ed1 100644 --- a/polaris-react/src/components/AlphaStack/AlphaStack.tsx +++ b/polaris-react/src/components/AlphaStack/AlphaStack.tsx @@ -2,10 +2,9 @@ import React from 'react'; import type {spacing} from '@shopify/polaris-tokens'; import {classNames, variationName} from '../../utilities/css'; -import {elementChildren, wrapWithComponent} from '../../utilities/components'; +import {elementChildren} from '../../utilities/components'; import styles from './Stack.scss'; -import {Item} from './components'; type SpacingTokenGroup = typeof spacing; type SpacingTokenName = keyof SpacingTokenGroup; @@ -27,16 +26,20 @@ export interface AlphaStackProps { export const AlphaStack = ({children, spacing, align}: AlphaStackProps) => { const className = classNames( styles.Stack, - spacing && styles[variationName('spacing', spacing)], align && styles[variationName('align', align)], ); - const itemMarkup = elementChildren(children).map((child, index) => { - const props = {key: index}; - return wrapWithComponent(child, Item, props); + const style = { + '--pc-stack-spacing': spacing ? `var(--p-space-${spacing})` : '', + } as React.CSSProperties; + + const stackItems = elementChildren(children).map((child, index) => { + return
{child}
; }); - return
{itemMarkup}
; + return ( +
+ {stackItems} +
+ ); }; - -AlphaStack.Item = Item; From 83e1e29c57e84ba548968f935fea51837754ef32 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Tue, 30 Aug 2022 16:23:00 -0400 Subject: [PATCH 07/13] Update Stack.scss --- .../src/components/AlphaStack/Stack.scss | 82 +------------------ 1 file changed, 1 insertion(+), 81 deletions(-) diff --git a/polaris-react/src/components/AlphaStack/Stack.scss b/polaris-react/src/components/AlphaStack/Stack.scss index f36e84ae4a1..cfd4a1e2ced 100644 --- a/polaris-react/src/components/AlphaStack/Stack.scss +++ b/polaris-react/src/components/AlphaStack/Stack.scss @@ -3,82 +3,7 @@ display: flex; flex-direction: column; align-items: start; - margin-top: calc(-1 * var(--pc-stack-spacing)); - margin-left: calc(-1 * var(--pc-stack-spacing)); - - > .Item { - margin-top: var(--pc-stack-spacing); - margin-left: var(--pc-stack-spacing); - max-width: 100%; - } -} - -.spacing0 { - --pc-stack-spacing: var(--p-space-0); -} - -.spacing025 { - --pc-stack-spacing: var(--p-space-025); -} - -.spacing05 { - --pc-stack-spacing: var(--p-space-05); -} - -.spacing1 { - --pc-stack-spacing: var(--p-space-1); -} - -.spacing2 { - --pc-stack-spacing: var(--p-space-2); -} - -.spacing3 { - --pc-stack-spacing: var(--p-space-3); -} - -.spacing4 { - --pc-stack-spacing: var(--p-space-4); -} - -.spacing5 { - --pc-stack-spacing: var(--p-space-5); -} - -.spacing6 { - --pc-stack-spacing: var(--p-space-6); -} - -.spacing8 { - --pc-stack-spacing: var(--p-space-8); -} - -.spacing10 { - --pc-stack-spacing: var(--p-space-10); -} - -.spacing12 { - --pc-stack-spacing: var(--p-space-12); -} - -.spacing16 { - --pc-stack-spacing: var(--p-space-16); -} - -.spacing20 { - --pc-stack-spacing: var(--p-space-20); -} - -.spacing24 { - --pc-stack-spacing: var(--p-space-24); -} - -.spacing28 { - --pc-stack-spacing: var(--p-space-28); -} - -.spacing32 { - --pc-stack-spacing: var(--p-space-32); + gap: var(--pc-stack-spacing); } .alignStart { @@ -92,8 +17,3 @@ .alignCenter { align-items: center; } - -.Item { - flex: 0 0 auto; - min-width: 0; -} From 4a0331fe00f2f2f9c5cb1281c1bfa0a8a3dcd072 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Tue, 30 Aug 2022 19:12:40 -0400 Subject: [PATCH 08/13] Remove `stackItems` & add default alignment --- .../src/components/AlphaStack/AlphaStack.tsx | 23 ++++++++----------- .../src/components/AlphaStack/Stack.scss | 7 +----- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/polaris-react/src/components/AlphaStack/AlphaStack.tsx b/polaris-react/src/components/AlphaStack/AlphaStack.tsx index de0f2de7ed1..eecc78640a1 100644 --- a/polaris-react/src/components/AlphaStack/AlphaStack.tsx +++ b/polaris-react/src/components/AlphaStack/AlphaStack.tsx @@ -1,8 +1,7 @@ import React from 'react'; import type {spacing} from '@shopify/polaris-tokens'; -import {classNames, variationName} from '../../utilities/css'; -import {elementChildren} from '../../utilities/components'; +import {classNames} from '../../utilities/css'; import styles from './Stack.scss'; @@ -23,23 +22,21 @@ export interface AlphaStackProps { align?: Align; } -export const AlphaStack = ({children, spacing, align}: AlphaStackProps) => { - const className = classNames( - styles.Stack, - align && styles[variationName('align', align)], - ); +export const AlphaStack = ({ + children, + spacing, + align = 'start', +}: AlphaStackProps) => { + const className = classNames(styles.Stack); const style = { - '--pc-stack-spacing': spacing ? `var(--p-space-${spacing})` : '', + ...(spacing ? {'--pc-stack-spacing': `var(--p-space-${spacing})`} : {}), + 'align-items': align ? `${align}` : '', } as React.CSSProperties; - const stackItems = elementChildren(children).map((child, index) => { - return
{child}
; - }); - return (
- {stackItems} + {children}
); }; diff --git a/polaris-react/src/components/AlphaStack/Stack.scss b/polaris-react/src/components/AlphaStack/Stack.scss index cfd4a1e2ced..8c58b392213 100644 --- a/polaris-react/src/components/AlphaStack/Stack.scss +++ b/polaris-react/src/components/AlphaStack/Stack.scss @@ -2,16 +2,11 @@ --pc-stack-spacing: var(--p-space-4); display: flex; flex-direction: column; - align-items: start; gap: var(--pc-stack-spacing); } -.alignStart { - align-items: flex-start; -} - .alignEnd { - align-items: flex-end; + align-items: end; } .alignCenter { From 07c89c3b407466debefc45631357a5ec7a1adb4d Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Wed, 31 Aug 2022 11:32:19 -0400 Subject: [PATCH 09/13] Update .changeset/poor-kiwis-travel.md Co-authored-by: Lo Kim --- .changeset/poor-kiwis-travel.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/poor-kiwis-travel.md b/.changeset/poor-kiwis-travel.md index 713cd12905f..69a0f495e00 100644 --- a/.changeset/poor-kiwis-travel.md +++ b/.changeset/poor-kiwis-travel.md @@ -1,5 +1,5 @@ --- -'@shopify/polaris': patch +'@shopify/polaris': minor --- -Add `AlphaStack` component +Added `AlphaStack` component From 8afd07feb3a06e3f70afd4148300b9cbdc4b3715 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Fri, 2 Sep 2022 11:12:26 -0400 Subject: [PATCH 10/13] Update AlphaStack styling --- polaris-react/src/components/AlphaStack/AlphaStack.tsx | 2 +- polaris-react/src/components/AlphaStack/Stack.scss | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/polaris-react/src/components/AlphaStack/AlphaStack.tsx b/polaris-react/src/components/AlphaStack/AlphaStack.tsx index eecc78640a1..5f03f29bc27 100644 --- a/polaris-react/src/components/AlphaStack/AlphaStack.tsx +++ b/polaris-react/src/components/AlphaStack/AlphaStack.tsx @@ -30,8 +30,8 @@ export const AlphaStack = ({ const className = classNames(styles.Stack); const style = { + '--pc-align': align, ...(spacing ? {'--pc-stack-spacing': `var(--p-space-${spacing})`} : {}), - 'align-items': align ? `${align}` : '', } as React.CSSProperties; return ( diff --git a/polaris-react/src/components/AlphaStack/Stack.scss b/polaris-react/src/components/AlphaStack/Stack.scss index 8c58b392213..35b0caacd2d 100644 --- a/polaris-react/src/components/AlphaStack/Stack.scss +++ b/polaris-react/src/components/AlphaStack/Stack.scss @@ -2,13 +2,6 @@ --pc-stack-spacing: var(--p-space-4); display: flex; flex-direction: column; + align-items: var(--pc-align); gap: var(--pc-stack-spacing); } - -.alignEnd { - align-items: end; -} - -.alignCenter { - align-items: center; -} From c6d938440e939d53cb3f899cb9551ab77b4650a3 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Fri, 2 Sep 2022 11:12:42 -0400 Subject: [PATCH 11/13] Create AlphaStack.stories.tsx --- .../AlphaStack/AlphaStack.stories.tsx | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 polaris-react/src/components/AlphaStack/AlphaStack.stories.tsx diff --git a/polaris-react/src/components/AlphaStack/AlphaStack.stories.tsx b/polaris-react/src/components/AlphaStack/AlphaStack.stories.tsx new file mode 100644 index 00000000000..8758d651d8a --- /dev/null +++ b/polaris-react/src/components/AlphaStack/AlphaStack.stories.tsx @@ -0,0 +1,51 @@ +import React from 'react'; +import type {ComponentMeta} from '@storybook/react'; +import {Badge, AlphaStack} from '@shopify/polaris'; + +export default { + component: AlphaStack, +} as ComponentMeta; + +export function Default() { + return ( + + Paid + Processing + Fulfilled + Completed + + ); +} + +export function Spacing() { + return ( + + Paid + Processing + Fulfilled + Completed + + ); +} + +export function AlignCenter() { + return ( + + Paid + Processing + Fulfilled + Completed + + ); +} + +export function AlignEnd() { + return ( + + Paid + Processing + Fulfilled + Completed + + ); +} From 048c0f17df4227cc3768f95dc386be24c6c37dd0 Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Fri, 2 Sep 2022 11:12:47 -0400 Subject: [PATCH 12/13] Create AlphaStack.test.tsx --- .../AlphaStack/tests/AlphaStack.test.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 polaris-react/src/components/AlphaStack/tests/AlphaStack.test.tsx diff --git a/polaris-react/src/components/AlphaStack/tests/AlphaStack.test.tsx b/polaris-react/src/components/AlphaStack/tests/AlphaStack.test.tsx new file mode 100644 index 00000000000..a90c9dc8592 --- /dev/null +++ b/polaris-react/src/components/AlphaStack/tests/AlphaStack.test.tsx @@ -0,0 +1,14 @@ +import React from 'react'; +import {mountWithApp} from 'tests/utilities'; + +import {AlphaStack} from '../AlphaStack'; + +describe('', () => { + const renderChildren = () => [0, 1].map((i) =>
Child {i}
); + + it('renders its children', () => { + const stack = mountWithApp({renderChildren()}); + + expect(stack).toContainReactComponentTimes('div', 3); + }); +}); From eb89d903b03520589ab03af6cb12210c535e89aa Mon Sep 17 00:00:00 2001 From: Chaz Dean <59836805+chazdean@users.noreply.github.com> Date: Fri, 2 Sep 2022 12:04:30 -0400 Subject: [PATCH 13/13] Update custom style properties --- polaris-react/src/components/AlphaStack/AlphaStack.tsx | 4 ++-- polaris-react/src/components/AlphaStack/Stack.scss | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/polaris-react/src/components/AlphaStack/AlphaStack.tsx b/polaris-react/src/components/AlphaStack/AlphaStack.tsx index 5f03f29bc27..7d354a07ae1 100644 --- a/polaris-react/src/components/AlphaStack/AlphaStack.tsx +++ b/polaris-react/src/components/AlphaStack/AlphaStack.tsx @@ -24,13 +24,13 @@ export interface AlphaStackProps { export const AlphaStack = ({ children, - spacing, + spacing = '4', align = 'start', }: AlphaStackProps) => { const className = classNames(styles.Stack); const style = { - '--pc-align': align, + '--pc-stack-align': align, ...(spacing ? {'--pc-stack-spacing': `var(--p-space-${spacing})`} : {}), } as React.CSSProperties; diff --git a/polaris-react/src/components/AlphaStack/Stack.scss b/polaris-react/src/components/AlphaStack/Stack.scss index 35b0caacd2d..9860659b2c7 100644 --- a/polaris-react/src/components/AlphaStack/Stack.scss +++ b/polaris-react/src/components/AlphaStack/Stack.scss @@ -1,7 +1,6 @@ .Stack { - --pc-stack-spacing: var(--p-space-4); display: flex; flex-direction: column; - align-items: var(--pc-align); + align-items: var(--pc-stack-align); gap: var(--pc-stack-spacing); }