diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index d0ea2d9107..00d3858d71 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -118,4 +118,7 @@ export const decorators = [withLayoutDecorator, withMisticaThemeProvider]; export const parameters = { // https://storybook.js.org/docs/react/configure/story-layout layout: 'fullscreen', + + // Workaround for: https://github.com/storybookjs/storybook/issues/17098 + docs: {source: {type: 'code'}}, }; diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-1-snap.png deleted file mode 100644 index caaa0c98ab..0000000000 Binary files a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-1-snap.png and /dev/null differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-2-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-2-snap.png deleted file mode 100644 index 0136c1753a..0000000000 Binary files a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-2-snap.png and /dev/null differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-3-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-3-snap.png deleted file mode 100644 index 2c65615b73..0000000000 Binary files a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-3-snap.png and /dev/null differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-4-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-4-snap.png deleted file mode 100644 index ae7bdcbbca..0000000000 Binary files a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-4-snap.png and /dev/null differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-5-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-5-snap.png deleted file mode 100644 index 492c13d58d..0000000000 Binary files a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-5-snap.png and /dev/null differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-6-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-6-snap.png deleted file mode 100644 index db410a2caf..0000000000 Binary files a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-6-snap.png and /dev/null differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-7-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-7-snap.png deleted file mode 100644 index 9f1db64c92..0000000000 Binary files a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-7-snap.png and /dev/null differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-8-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-8-snap.png deleted file mode 100644 index aaa98c378e..0000000000 Binary files a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-8-snap.png and /dev/null differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-and-link-footer-image-false-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-and-link-footer-image-false-1-snap.png new file mode 100644 index 0000000000..8866035cce Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-and-link-footer-image-false-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-and-link-footer-image-true-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-and-link-footer-image-true-1-snap.png new file mode 100644 index 0000000000..f8d3d257d8 Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-and-link-footer-image-true-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-footer-image-false-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-footer-image-false-1-snap.png new file mode 100644 index 0000000000..7d27a172ec Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-footer-image-false-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-footer-image-true-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-footer-image-true-1-snap.png new file mode 100644 index 0000000000..98bdfcbc62 Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-button-footer-image-true-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-link-footer-image-false-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-link-footer-image-false-1-snap.png new file mode 100644 index 0000000000..29f405273e Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-link-footer-image-false-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-link-footer-image-true-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-link-footer-image-true-1-snap.png new file mode 100644 index 0000000000..184f0eb1c2 Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-link-footer-image-true-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-none-footer-image-false-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-none-footer-image-false-1-snap.png new file mode 100644 index 0000000000..d7920607fd Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-none-footer-image-false-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-none-footer-image-true-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-none-footer-image-true-1-snap.png new file mode 100644 index 0000000000..44aa77c665 Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-actions-none-footer-image-true-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-0-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-0-1-snap.png new file mode 100644 index 0000000000..8866035cce Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-0-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-1-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-1-1-snap.png new file mode 100644 index 0000000000..1a61bf36ef Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-1-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-3-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-3-1-snap.png new file mode 100644 index 0000000000..7e8c0651e6 Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-extras-3-1-snap.png differ diff --git a/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-inside-carousel-1-snap.png b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-inside-carousel-1-snap.png new file mode 100644 index 0000000000..57d48f07b6 Binary files /dev/null and b/src/community/__screenshot_tests__/__image_snapshots__/advanced-data-card-screenshot-test-tsx-advanced-data-card-inside-carousel-1-snap.png differ diff --git a/src/community/__screenshot_tests__/advanced-data-card-screenshot-test.tsx b/src/community/__screenshot_tests__/advanced-data-card-screenshot-test.tsx index b39cabdc9c..7bbb3d6b2e 100644 --- a/src/community/__screenshot_tests__/advanced-data-card-screenshot-test.tsx +++ b/src/community/__screenshot_tests__/advanced-data-card-screenshot-test.tsx @@ -10,7 +10,7 @@ test.each` ${'button'} | ${true} ${'link'} | ${true} ${'button and link'} | ${true} -`('Advanced Data Card', async ({actions, footerImage}) => { +`('Advanced Data Card actions: $actions - footerImage: $footerImage', async ({actions, footerImage}) => { await openStoryPage({ id: 'community-advanceddatacard--default', device: 'MOBILE_IOS', @@ -22,3 +22,33 @@ test.each` expect(image).toMatchImageSnapshot(); }); + +test.each` + extra + ${0} + ${1} + ${3} +`('Advanced Data Card extras: $extra', async ({extra}) => { + await openStoryPage({ + id: 'community-advanceddatacard--default', + device: 'MOBILE_IOS', + args: {extra}, + }); + + const element = await screen.findByTestId('advanced-data-card'); + const image = await element.screenshot(); + + expect(image).toMatchImageSnapshot(); +}); + +test('Advanced Data Card inside Carousel', async () => { + await openStoryPage({ + id: 'community-advanceddatacards-in-carousel--default', + device: 'DESKTOP', + }); + + const element = await screen.findByTestId('advanced-data-card-carousel'); + const image = await element.screenshot(); + + expect(image).toMatchImageSnapshot(); +}); diff --git a/src/community/__stories__/advanced-data-card-carousel-story.tsx b/src/community/__stories__/advanced-data-card-carousel-story.tsx new file mode 100644 index 0000000000..8ea944d987 --- /dev/null +++ b/src/community/__stories__/advanced-data-card-carousel-story.tsx @@ -0,0 +1,62 @@ +import * as React from 'react'; +import AdvancedDataCard from '../advanced-data-card'; +import {Placeholder} from '../../placeholder'; +import {Carousel} from '../../carousel'; +import Tag from '../../tag'; + +export default { + title: 'Community/AdvancedDataCards in Carousel', +}; + +type Args = {onPress: boolean}; + +export const Default: StoryComponent = ({onPress}) => { + const onPressHandler = onPress ? () => {} : undefined; + return ( + {}} + onPress={onPressHandler} + />, + Headline 2} + extra={[]} + footerText="Footer 2" + onClose={() => {}} + onPress={onPressHandler} + />, + , ]} + footerText="Footer 3" + onClose={() => {}} + onPress={onPressHandler} + />, + , + , + , + ]} + footerText="Footer 4" + onClose={() => {}} + onPress={onPressHandler} + />, + ]} + /> + ); +}; + +Default.storyName = 'AdvancedDataCards in Carousel'; +Default.args = { + onPress: true, +}; diff --git a/src/community/__stories__/advanced-data-card-story.tsx b/src/community/__stories__/advanced-data-card-story.tsx index 46cf0820a1..8923db188c 100644 --- a/src/community/__stories__/advanced-data-card-story.tsx +++ b/src/community/__stories__/advanced-data-card-story.tsx @@ -1,12 +1,11 @@ import * as React from 'react'; -import ResponsiveLayout from '../../responsive-layout'; -import Box from '../../box'; import {ButtonLink, ButtonPrimary} from '../../button'; import Tag from '../../tag'; import AdvancedDataCard from '../advanced-data-card'; import imgExample from '../../__stories__/images/avatar.jpg'; import Image from '../../image'; import StackingGroup from '../../stacking-group'; +import {Placeholder} from '../../placeholder'; import type {TagType} from '../../tag'; @@ -25,6 +24,7 @@ type Args = { footerText: string; actions: string; onClose: boolean; + extra: number; }; export const Default: StoryComponent = ({ @@ -38,6 +38,7 @@ export const Default: StoryComponent = ({ footerText, actions, onClose, + extra, }) => { const button = actions.includes('button') ? ( = ({ : undefined; return ( - - - - - - - - - - ) : undefined - } - headline={{headlineType}} - pretitle={pretitle} - title={title} - subtitle={subtitle} - description={description} - aria-label="aria label" - button={button} - buttonLink={buttonLink} - footerImage={footerImage ? : undefined} - footerText={footerText} - onClose={onClose ? () => window.alert('closed!') : undefined} - onPress={onPress} - /> - - + + + + + + + + ) : undefined + } + headline={{headlineType}} + pretitle={pretitle} + title={title} + subtitle={subtitle} + description={description} + aria-label="aria label" + button={button} + buttonLink={buttonLink} + footerImage={footerImage ? : undefined} + footerText={footerText} + onClose={onClose ? () => window.alert('closed!') : undefined} + onPress={onPress} + extra={Array.from({length: extra}, (_, i) => ( + + ))} + /> ); }; @@ -111,6 +112,7 @@ Default.args = { footerText: '', actions: 'button and link', onClose: true, + extra: 0, }; Default.argTypes = { headlineType: { diff --git a/src/community/advanced-data-card.css.ts b/src/community/advanced-data-card.css.ts index 2ff81abb4f..7e5a924145 100644 --- a/src/community/advanced-data-card.css.ts +++ b/src/community/advanced-data-card.css.ts @@ -38,14 +38,18 @@ export const actions = style([ }, ]); -export const boxed = style([ - sprinkles({display: 'flex'}), +export const touchableContainer = style([ { - isolation: 'isolate', // Needed to preserve border-radius with Video component and Safari + // not defined in sprinkles to avoid touchable style override + display: 'flex', }, + sprinkles({ + height: '100%', + flexDirection: 'column', + }), ]); -export const interaction = style({ +export const hoverEffect = style({ '@media': { [mq.supportsHover]: { selectors: { @@ -65,7 +69,6 @@ export const interaction = style({ export const cardContentStyle = style([ paddingX, sprinkles({ - display: 'flex', paddingTop: 8, paddingBottom: 24, }), @@ -83,6 +86,7 @@ export const minHeight = style({minHeight: 216}); export const dataCard = style([ sprinkles({ + position: 'relative', display: 'flex', flex: 1, flexDirection: 'column', @@ -195,11 +199,6 @@ export const buttonMobile = style([ }, ]); -export const extraTop = style({ - marginTop: 'auto', - width: '100%', -}); - export const footerDirection = style([ sprinkles({ display: 'flex', diff --git a/src/community/advanced-data-card.tsx b/src/community/advanced-data-card.tsx index 6c35fd17e8..c4d5e17436 100644 --- a/src/community/advanced-data-card.tsx +++ b/src/community/advanced-data-card.tsx @@ -1,3 +1,4 @@ +// https://www.figma.com/file/35iS2dwoogulJZPgFGKmCX/Explora%C3%A7%C3%A3o-Data-Card-%2F-Slots?type=design&node-id=443-32508&mode=design&t=wwoi2TRLVsjwGYAb-0 import * as React from 'react'; import {Boxed} from '../boxed'; import {sprinkles} from '../sprinkles.css'; @@ -11,6 +12,7 @@ import Touchable from '../touchable'; import classNames from 'classnames'; import {CardActionsGroup} from '../card'; import {useTheme} from '../hooks'; +import {getPrefixedDataAttributes} from '../utils/dom'; import type {CardAction} from '../card'; import type StackingGroup from '../stacking-group'; @@ -58,60 +60,54 @@ const CardContent: React.FC = ({ const {textPresets} = useTheme(); return ( - <> + + {headline} -
- - {headline} - - {pretitle && ( - - {pretitle} - - )} - - {title} - - - {subtitle} - - - {description && ( - - {description} - - )} - -
+ {pretitle && ( + + {pretitle} + + )} + + {title} + + + {subtitle} +
- + {description && ( + + {description} + + )} +
); }; @@ -267,6 +263,7 @@ export const AdvancedDataCard = React.forwardRef - -
- + +
-
-
- - - {stackingGroup} - - - - -
-
- {extra && extra?.length ? ( - - {extra.map((ex, index) => { - return ( -
-
-
- {ex} -
-
+ + + {stackingGroup} + + + +
+
+ {hasExtras && ( + + {extra.map((item, index) => { + return ( +
+
{item}
- {index + 1 !== extra.length && ( - - - - )} -
- ); - })} -
- ) : null} -
-
- - {hasFooter && } -
+ {index + 1 !== extra.length && ( + + + + )} +
+ ); + })} + + )} +
+ {hasFooter && } + ); }