@edvisor/product-language 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +2 -0
- package/index.js +7914 -0
- package/lib/components/alert-banner/alert-banner.d.ts +11 -0
- package/lib/components/alert-banner/alert-level-flags.d.ts +13 -0
- package/lib/components/alert-banner/index.d.ts +1 -0
- package/lib/components/badge/badge-type-flags.d.ts +18 -0
- package/lib/components/badge/badge.d.ts +5 -0
- package/lib/components/badge/index.d.ts +1 -0
- package/{src/lib/components/card/atoms/card-frame.tsx → lib/components/card/atoms/card-frame.d.ts} +7 -17
- package/lib/components/card/atoms/index.d.ts +1 -0
- package/lib/components/card/card.d.ts +14 -0
- package/lib/components/card/components/card-alert-banner-slot.d.ts +5 -0
- package/lib/components/card/components/card-controls-slot.d.ts +4 -0
- package/lib/components/card/components/card-section-slot.d.ts +11 -0
- package/lib/components/card/components/index.d.ts +3 -0
- package/lib/components/card/index.d.ts +2 -0
- package/lib/components/card/molecules/index.d.ts +1 -0
- package/lib/components/card/molecules/left-right-card.d.ts +16 -0
- package/lib/components/checkbox/checkbox.d.ts +10 -0
- package/lib/components/checkbox/helpers.d.ts +12 -0
- package/lib/components/checkbox/index.d.ts +1 -0
- package/lib/components/divider/divider-type-flags.d.ts +9 -0
- package/lib/components/divider/divider.d.ts +7 -0
- package/lib/components/divider/index.d.ts +1 -0
- package/lib/components/flag/flag-size-flags.d.ts +12 -0
- package/lib/components/flag/flag.d.ts +9 -0
- package/lib/components/flag/flag.list.d.ts +781 -0
- package/lib/components/flag/index.d.ts +1 -0
- package/lib/components/icon/icon-list.d.ts +131 -0
- package/lib/components/icon/icon.d.ts +131 -0
- package/lib/components/icon/index.d.ts +1 -0
- package/lib/components/index.d.ts +17 -0
- package/lib/components/input-field/components/index.d.ts +2 -0
- package/lib/components/input-field/components/labeled-input.d.ts +10 -0
- package/lib/components/input-field/components/stepper.d.ts +7 -0
- package/lib/components/input-field/index.d.ts +3 -0
- package/lib/components/input-field/input-field.d.ts +25 -0
- package/lib/components/input-field/input-number.d.ts +18 -0
- package/lib/components/input-field/input-text.d.ts +14 -0
- package/lib/components/layout/flex.d.ts +16 -0
- package/lib/components/layout/grid-layout.d.ts +11 -0
- package/lib/components/layout/index.d.ts +3 -0
- package/lib/components/layout/left-right-layout.d.ts +34 -0
- package/lib/components/link/index.d.ts +1 -0
- package/lib/components/link/link.d.ts +14 -0
- package/lib/components/molecules/avatar/avatar-size-flags.d.ts +12 -0
- package/lib/components/molecules/avatar/avatar.d.ts +12 -0
- package/lib/components/molecules/avatar/index.d.ts +1 -0
- package/lib/components/molecules/button/button-flags.d.ts +44 -0
- package/lib/components/molecules/button/button.d.ts +12 -0
- package/lib/components/molecules/button/index.d.ts +1 -0
- package/lib/components/molecules/index.d.ts +3 -0
- package/lib/components/molecules/input-checkbox/index.d.ts +1 -0
- package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +8 -0
- package/lib/components/organisms/index.d.ts +1 -0
- package/lib/components/organisms/multi-choice-list/index.d.ts +1 -0
- package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +10 -0
- package/lib/components/spinner/index.d.ts +1 -0
- package/lib/components/spinner/spinner-size-flags.d.ts +10 -0
- package/lib/components/spinner/spinner.d.ts +9 -0
- package/lib/components/tabs/components/index.d.ts +1 -0
- package/lib/components/tabs/components/tab.d.ts +7 -0
- package/lib/components/tabs/index.d.ts +1 -0
- package/lib/components/tabs/tabs.d.ts +15 -0
- package/lib/components/tag/components/close-button.d.ts +8 -0
- package/lib/components/tag/components/index.d.ts +2 -0
- package/lib/components/tag/components/tag-label.d.ts +8 -0
- package/lib/components/tag/index.d.ts +1 -0
- package/lib/components/tag/tag.d.ts +10 -0
- package/lib/components/thumbnail/index.d.ts +1 -0
- package/lib/components/thumbnail/thumbnail-size-flags.d.ts +10 -0
- package/lib/components/thumbnail/thumbnail.d.ts +10 -0
- package/lib/components/typography/index.d.ts +1 -0
- package/lib/components/typography/typography.d.ts +24 -0
- package/lib/foundations/color-system/base-palette/base-palette.d.ts +76 -0
- package/lib/foundations/color-system/base-palette/index.d.ts +1 -0
- package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +132 -0
- package/lib/foundations/color-system/color-guidelines/index.d.ts +1 -0
- package/lib/foundations/color-system/components/color-sample.d.ts +17 -0
- package/lib/foundations/color-system/components/index.d.ts +1 -0
- package/lib/foundations/color-system/index.d.ts +1 -0
- package/lib/foundations/index.d.ts +4 -0
- package/lib/foundations/shadows/components.d.ts +8 -0
- package/lib/foundations/shadows/index.d.ts +1 -0
- package/lib/foundations/shadows/shadows.d.ts +8 -0
- package/lib/foundations/spacing/index.d.ts +1 -0
- package/lib/foundations/spacing/spacing-guidelines.d.ts +22 -0
- package/lib/foundations/spacing/spacing.d.ts +18 -0
- package/lib/foundations/typography/constants.d.ts +22 -0
- package/lib/foundations/typography/fonts.d.ts +1 -0
- package/lib/foundations/typography/index.d.ts +1 -0
- package/lib/foundations/typography/text-aspect-flags.d.ts +19 -0
- package/lib/foundations/typography/typography.d.ts +24 -0
- package/lib/helpers/generic-types.d.ts +21 -0
- package/lib/helpers/index.d.ts +6 -0
- package/lib/helpers/nothing.d.ts +8 -0
- package/{src/lib/helpers/numbers.ts → lib/helpers/numbers.d.ts} +50 -67
- package/lib/helpers/safe-navigation.d.ts +15 -0
- package/lib/helpers/slots.d.ts +23 -0
- package/lib/helpers/strings.d.ts +1 -0
- package/package.json +11 -3
- package/.babelrc +0 -12
- package/.eslintrc.json +0 -147
- package/.storybook/main.js +0 -57
- package/.storybook/manager.js +0 -7
- package/.storybook/preview.js +0 -15
- package/.storybook/tsconfig.json +0 -30
- package/jest.config.ts +0 -15
- package/jest.setup.ts +0 -2
- package/project.json +0 -96
- package/release-it.json +0 -18
- package/src/README.md +0 -61
- package/src/assets/svg/example_icon.svg +0 -3
- package/src/assets/svg/example_icon_white.svg +0 -3
- package/src/assets/svg/spinner.svg +0 -3
- package/src/assets/svg/spinner_white.svg +0 -3
- package/src/helpers/index.ts +0 -4
- package/src/helpers/playground.ts +0 -16
- package/src/helpers/talesOf.tsx +0 -42
- package/src/index.ts +0 -2
- package/src/lib/components/README.md +0 -49
- package/src/lib/components/alert-banner/alert-banner.tsx +0 -34
- package/src/lib/components/alert-banner/alert-level-flags.ts +0 -77
- package/src/lib/components/alert-banner/index.ts +0 -1
- package/src/lib/components/badge/badge-type-flags.ts +0 -72
- package/src/lib/components/badge/badge.test.tsx +0 -29
- package/src/lib/components/badge/badge.tsx +0 -22
- package/src/lib/components/badge/index.ts +0 -1
- package/src/lib/components/badge/stories/badge.stories.mdx +0 -44
- package/src/lib/components/badge/stories/components.tsx +0 -49
- package/src/lib/components/card/atoms/index.ts +0 -1
- package/src/lib/components/card/card.test.tsx +0 -162
- package/src/lib/components/card/card.tsx +0 -78
- package/src/lib/components/card/components/card-alert-banner-slot.tsx +0 -16
- package/src/lib/components/card/components/card-controls-slot.tsx +0 -19
- package/src/lib/components/card/components/card-section-slot.tsx +0 -51
- package/src/lib/components/card/components/index.ts +0 -3
- package/src/lib/components/card/index.ts +0 -2
- package/src/lib/components/card/molecules/index.ts +0 -1
- package/src/lib/components/card/molecules/left-right-card.test.tsx +0 -89
- package/src/lib/components/card/molecules/left-right-card.tsx +0 -63
- package/src/lib/components/card/storybook/card.stories.mdx +0 -100
- package/src/lib/components/card/storybook/components.tsx +0 -223
- package/src/lib/components/checkbox/checkbox.test.tsx +0 -39
- package/src/lib/components/checkbox/checkbox.tsx +0 -63
- package/src/lib/components/checkbox/helpers.tsx +0 -100
- package/src/lib/components/checkbox/index.tsx +0 -1
- package/src/lib/components/checkbox/stories/checkbox.stories.mdx +0 -57
- package/src/lib/components/checkbox/stories/components.tsx +0 -84
- package/src/lib/components/divider/divider-type-flags.tsx +0 -37
- package/src/lib/components/divider/divider.test.tsx +0 -34
- package/src/lib/components/divider/divider.tsx +0 -37
- package/src/lib/components/divider/index.tsx +0 -1
- package/src/lib/components/divider/stories/components.tsx +0 -13
- package/src/lib/components/divider/stories/divider.stories.mdx +0 -44
- package/src/lib/components/flag/flag-size-flags.tsx +0 -55
- package/src/lib/components/flag/flag.list.tsx +0 -788
- package/src/lib/components/flag/flag.test.tsx +0 -65
- package/src/lib/components/flag/flag.tsx +0 -97
- package/src/lib/components/flag/index.tsx +0 -1
- package/src/lib/components/flag/stories/components.tsx +0 -403
- package/src/lib/components/flag/stories/flag.stories.mdx +0 -48
- package/src/lib/components/flag/stories/playGround-select.tsx +0 -145
- package/src/lib/components/icon/icon-list.tsx +0 -135
- package/src/lib/components/icon/icon.test.tsx +0 -48
- package/src/lib/components/icon/icon.tsx +0 -181
- package/src/lib/components/icon/index.tsx +0 -1
- package/src/lib/components/icon/stories/components.tsx +0 -282
- package/src/lib/components/icon/stories/icon.stories.mdx +0 -65
- package/src/lib/components/index.ts +0 -19
- package/src/lib/components/input-field/components/index.ts +0 -2
- package/src/lib/components/input-field/components/labeled-input.tsx +0 -54
- package/src/lib/components/input-field/components/stepper.tsx +0 -60
- package/src/lib/components/input-field/index.ts +0 -6
- package/src/lib/components/input-field/input-field.test.tsx +0 -107
- package/src/lib/components/input-field/input-field.tsx +0 -126
- package/src/lib/components/input-field/input-number.tsx +0 -41
- package/src/lib/components/input-field/input-text.tsx +0 -30
- package/src/lib/components/input-field/storybook/components.tsx +0 -327
- package/src/lib/components/input-field/storybook/input-field.stories.mdx +0 -113
- package/src/lib/components/layout/flex.tsx +0 -22
- package/src/lib/components/layout/grid-layout.tsx +0 -40
- package/src/lib/components/layout/index.ts +0 -3
- package/src/lib/components/layout/left-right-layout.tsx +0 -67
- package/src/lib/components/link/index.ts +0 -1
- package/src/lib/components/link/link.test.tsx +0 -29
- package/src/lib/components/link/link.tsx +0 -56
- package/src/lib/components/link/storybook/link.stories.mdx +0 -52
- package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +0 -55
- package/src/lib/components/molecules/avatar/avatar.test.tsx +0 -114
- package/src/lib/components/molecules/avatar/avatar.tsx +0 -80
- package/src/lib/components/molecules/avatar/index.tsx +0 -1
- package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +0 -52
- package/src/lib/components/molecules/avatar/stories/components.tsx +0 -36
- package/src/lib/components/molecules/button/button-flags.tsx +0 -340
- package/src/lib/components/molecules/button/button.test.tsx +0 -77
- package/src/lib/components/molecules/button/button.tsx +0 -214
- package/src/lib/components/molecules/button/index.tsx +0 -1
- package/src/lib/components/molecules/button/stories/button.stories.mdx +0 -105
- package/src/lib/components/molecules/button/stories/components.tsx +0 -84
- package/src/lib/components/molecules/index.ts +0 -3
- package/src/lib/components/molecules/input-checkbox/index.tsx +0 -1
- package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +0 -34
- package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +0 -49
- package/src/lib/components/molecules/input-checkbox/stories/components.tsx +0 -53
- package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +0 -49
- package/src/lib/components/organisms/index.ts +0 -1
- package/src/lib/components/organisms/multi-choice-list/index.tsx +0 -1
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +0 -33
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +0 -52
- package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +0 -124
- package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +0 -99
- package/src/lib/components/spinner/index.tsx +0 -1
- package/src/lib/components/spinner/spinner-size-flags.tsx +0 -39
- package/src/lib/components/spinner/spinner.test.tsx +0 -31
- package/src/lib/components/spinner/spinner.tsx +0 -54
- package/src/lib/components/spinner/stories/components.tsx +0 -39
- package/src/lib/components/spinner/stories/spinner.stories.mdx +0 -35
- package/src/lib/components/tabs/components/index.ts +0 -1
- package/src/lib/components/tabs/components/tab.tsx +0 -62
- package/src/lib/components/tabs/index.tsx +0 -1
- package/src/lib/components/tabs/storybook/components.tsx +0 -282
- package/src/lib/components/tabs/storybook/tabs.stories.mdx +0 -97
- package/src/lib/components/tabs/tabs.test.tsx +0 -86
- package/src/lib/components/tabs/tabs.tsx +0 -101
- package/src/lib/components/tag/components/close-button.tsx +0 -85
- package/src/lib/components/tag/components/index.ts +0 -2
- package/src/lib/components/tag/components/tag-label.tsx +0 -44
- package/src/lib/components/tag/index.tsx +0 -1
- package/src/lib/components/tag/stories/components.tsx +0 -86
- package/src/lib/components/tag/stories/tag.stories.mdx +0 -42
- package/src/lib/components/tag/tag.test.tsx +0 -36
- package/src/lib/components/tag/tag.tsx +0 -33
- package/src/lib/components/thumbnail/index.tsx +0 -1
- package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +0 -34
- package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +0 -41
- package/src/lib/components/thumbnail/thumbnail.test.tsx +0 -51
- package/src/lib/components/thumbnail/thumbnail.tsx +0 -45
- package/src/lib/components/typography/index.ts +0 -1
- package/src/lib/components/typography/storybook/components.tsx +0 -288
- package/src/lib/components/typography/storybook/typography.stories.mdx +0 -90
- package/src/lib/components/typography/typography.test.tsx +0 -97
- package/src/lib/components/typography/typography.tsx +0 -99
- package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +0 -123
- package/src/lib/foundations/color-system/base-palette/base-palette.ts +0 -93
- package/src/lib/foundations/color-system/base-palette/index.ts +0 -1
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +0 -85
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +0 -231
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +0 -160
- package/src/lib/foundations/color-system/color-guidelines/index.ts +0 -1
- package/src/lib/foundations/color-system/components/color-sample.tsx +0 -99
- package/src/lib/foundations/color-system/components/index.ts +0 -1
- package/src/lib/foundations/color-system/index.ts +0 -1
- package/src/lib/foundations/index.ts +0 -4
- package/src/lib/foundations/shadows/components.tsx +0 -59
- package/src/lib/foundations/shadows/index.ts +0 -1
- package/src/lib/foundations/shadows/shadows.stories.mdx +0 -71
- package/src/lib/foundations/shadows/shadows.tsx +0 -47
- package/src/lib/foundations/spacing/index.ts +0 -1
- package/src/lib/foundations/spacing/spacing-guidelines.ts +0 -24
- package/src/lib/foundations/spacing/spacing.stories.mdx +0 -51
- package/src/lib/foundations/spacing/spacing.ts +0 -18
- package/src/lib/foundations/typography/constants.ts +0 -25
- package/src/lib/foundations/typography/fonts.ts +0 -205
- package/src/lib/foundations/typography/index.tsx +0 -1
- package/src/lib/foundations/typography/text-aspect-flags.ts +0 -61
- package/src/lib/foundations/typography/typography.tsx +0 -102
- package/src/lib/helpers/generic-types.ts +0 -44
- package/src/lib/helpers/index.ts +0 -6
- package/src/lib/helpers/nothing.tsx +0 -18
- package/src/lib/helpers/safe-navigation.ts +0 -44
- package/src/lib/helpers/slots.test.tsx +0 -98
- package/src/lib/helpers/slots.tsx +0 -157
- package/src/lib/helpers/strings.test.ts +0 -47
- package/src/lib/helpers/strings.ts +0 -16
- package/tsconfig.json +0 -35
- package/tsconfig.lib.json +0 -28
- package/tsconfig.spec.json +0 -21
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import styled from 'styled-components'
|
|
2
|
-
import { isDefined, isEmpty, getSlots, getOtherChildren, FC, PropsWithChildren, If, getSlot, toKebabCase } from '@helpers'
|
|
3
|
-
import { Padding, Margin, shadow } from '@foundations'
|
|
4
|
-
import { CardFrame as CardFrameBase } from './atoms'
|
|
5
|
-
import { Heading3 } from 'components/typography'
|
|
6
|
-
import { SpaceBetween } from 'components/layout'
|
|
7
|
-
import { CardAlertBannerSlot, CardControlsSlot, CardHeadingActionSlot, CardSectionSlot } from './components'
|
|
8
|
-
import { HTMLAttributes } from 'react'
|
|
9
|
-
|
|
10
|
-
const CardHeading = styled(SpaceBetween)`
|
|
11
|
-
margin: ${Margin.none} ${Margin.l} ${Margin.none} ${Margin.l};
|
|
12
|
-
padding-top: ${Padding.l};
|
|
13
|
-
`
|
|
14
|
-
|
|
15
|
-
/** remove the margin bottom here since the frame handles it */
|
|
16
|
-
const CardHeadingText = styled(Heading3)`
|
|
17
|
-
margin-bottom: ${Margin.none};
|
|
18
|
-
`
|
|
19
|
-
|
|
20
|
-
const CardFrame = styled(CardFrameBase)`
|
|
21
|
-
${shadow};
|
|
22
|
-
|
|
23
|
-
> section:nth-of-type(1) {
|
|
24
|
-
border: none;
|
|
25
|
-
}
|
|
26
|
-
`
|
|
27
|
-
|
|
28
|
-
export interface ICardProps extends HTMLAttributes<HTMLDivElement>, PropsWithChildren {
|
|
29
|
-
heading?: string
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const SubComponents = {
|
|
33
|
-
Section: CardSectionSlot,
|
|
34
|
-
Controls: CardControlsSlot,
|
|
35
|
-
HeadingAction: CardHeadingActionSlot,
|
|
36
|
-
AlertBanner: CardAlertBannerSlot,
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export const Card: FC<ICardProps, typeof SubComponents> = (props) => {
|
|
40
|
-
const { children, heading, ...htmlProps } = props
|
|
41
|
-
|
|
42
|
-
const sections = getSlots(CardSectionSlot, children)
|
|
43
|
-
const controls = getSlot(CardControlsSlot, children)
|
|
44
|
-
const headingAction = getSlot(CardHeadingActionSlot, children)
|
|
45
|
-
const alertBanners = getSlots(CardAlertBannerSlot, children)
|
|
46
|
-
const otherChildren = getOtherChildren(children)
|
|
47
|
-
|
|
48
|
-
const headingId = isDefined(heading)
|
|
49
|
-
? toKebabCase(heading)
|
|
50
|
-
: undefined
|
|
51
|
-
|
|
52
|
-
return (
|
|
53
|
-
<CardFrame
|
|
54
|
-
aria-labelledby={headingId}
|
|
55
|
-
{...htmlProps}
|
|
56
|
-
>
|
|
57
|
-
<If is={alertBanners}>{alertBanners}</If>
|
|
58
|
-
<If is={heading}>
|
|
59
|
-
<CardHeading>
|
|
60
|
-
<CardHeadingText id={headingId}>{heading}</CardHeadingText>
|
|
61
|
-
<If is={headingAction}>{headingAction}</If>
|
|
62
|
-
</CardHeading>
|
|
63
|
-
</If>
|
|
64
|
-
{isEmpty(sections) ? (
|
|
65
|
-
<CardSectionSlot>{otherChildren}</CardSectionSlot>
|
|
66
|
-
) : (
|
|
67
|
-
sections
|
|
68
|
-
)}
|
|
69
|
-
<If is={controls}>{controls}</If>
|
|
70
|
-
</CardFrame>
|
|
71
|
-
)
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/** export the slots and some sub-components */
|
|
75
|
-
Card.Section = CardSectionSlot
|
|
76
|
-
Card.Controls = CardControlsSlot
|
|
77
|
-
Card.HeadingAction = CardHeadingActionSlot
|
|
78
|
-
Card.AlertBanner = CardAlertBannerSlot
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import styled from 'styled-components'
|
|
2
|
-
import { Slot } from '@helpers'
|
|
3
|
-
import { Margin } from '@foundations'
|
|
4
|
-
import { AlertBanner, AlertBannerProps } from 'components/alert-banner'
|
|
5
|
-
|
|
6
|
-
const CardAlertBanner = styled(AlertBanner)`
|
|
7
|
-
margin: ${Margin.l} ${Margin.l} ${Margin.none} ${Margin.l};
|
|
8
|
-
`
|
|
9
|
-
|
|
10
|
-
export class CardAlertBannerSlot extends Slot<AlertBannerProps> {
|
|
11
|
-
override render () {
|
|
12
|
-
return (
|
|
13
|
-
<CardAlertBanner {...this.props}>{this.props.children}</CardAlertBanner>
|
|
14
|
-
)
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import styled from 'styled-components'
|
|
2
|
-
import { Slot, PropsWithChildren } from '@helpers'
|
|
3
|
-
import { Padding } from '@foundations'
|
|
4
|
-
import { Flex } from 'components/layout'
|
|
5
|
-
|
|
6
|
-
const ControlsFrame = styled(Flex)`
|
|
7
|
-
justify-content: end;
|
|
8
|
-
padding: ${Padding.none} ${Padding.l} ${Padding.l} ${Padding.l};
|
|
9
|
-
`
|
|
10
|
-
|
|
11
|
-
export class CardControlsSlot extends Slot<PropsWithChildren> {
|
|
12
|
-
override render () {
|
|
13
|
-
return (
|
|
14
|
-
<ControlsFrame>
|
|
15
|
-
{this.props.children}
|
|
16
|
-
</ControlsFrame>
|
|
17
|
-
)
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { HTMLAttributes } from 'react'
|
|
2
|
-
import styled from 'styled-components'
|
|
3
|
-
import { isDefined, Slot, getOtherChildren, PropsWithChildren, If, getSlot, toKebabCase } from '@helpers'
|
|
4
|
-
import { Borders, Padding, Margin } from '@foundations'
|
|
5
|
-
import { Heading4 } from 'components/typography'
|
|
6
|
-
import { SpaceBetween } from 'components/layout'
|
|
7
|
-
|
|
8
|
-
export class CardHeadingActionSlot extends Slot {}
|
|
9
|
-
|
|
10
|
-
interface ICardSectionProps extends HTMLAttributes<HTMLDivElement>, PropsWithChildren {
|
|
11
|
-
heading?: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const Subheading = styled(Heading4)`
|
|
15
|
-
margin: ${Margin.none};
|
|
16
|
-
`
|
|
17
|
-
|
|
18
|
-
const SectionFrame = styled.section`
|
|
19
|
-
border-top: 1px solid ${Borders.Default.Subdued};
|
|
20
|
-
|
|
21
|
-
padding: ${Padding.l};
|
|
22
|
-
`
|
|
23
|
-
|
|
24
|
-
const SubheadingFrame = styled(SpaceBetween)`
|
|
25
|
-
margin: ${Margin.none} ${Margin.none} ${Margin.m} ${Margin.none};
|
|
26
|
-
`
|
|
27
|
-
|
|
28
|
-
export class CardSectionSlot extends Slot<ICardSectionProps> {
|
|
29
|
-
override render () {
|
|
30
|
-
const headingAction = getSlot(CardHeadingActionSlot, this.props.children)
|
|
31
|
-
const children = getOtherChildren(this.props.children)
|
|
32
|
-
const headingId = isDefined(this.props.heading)
|
|
33
|
-
? toKebabCase(this.props.heading)
|
|
34
|
-
: undefined
|
|
35
|
-
|
|
36
|
-
return (
|
|
37
|
-
<SectionFrame
|
|
38
|
-
aria-labelledby={headingId}
|
|
39
|
-
{...this.props}
|
|
40
|
-
>
|
|
41
|
-
<If is={this.props.heading}>
|
|
42
|
-
<SubheadingFrame>
|
|
43
|
-
<Subheading id={headingId}>{this.props.heading}</Subheading>
|
|
44
|
-
<If is={headingAction}>{headingAction}</If>
|
|
45
|
-
</SubheadingFrame>
|
|
46
|
-
</If>
|
|
47
|
-
{children}
|
|
48
|
-
</SectionFrame>
|
|
49
|
-
)
|
|
50
|
-
}
|
|
51
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './left-right-card'
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { Margin } from '@foundations'
|
|
2
|
-
import { render, screen } from '@testing-library/react'
|
|
3
|
-
import styled from 'styled-components'
|
|
4
|
-
import { LeftRightCard } from './left-right-card'
|
|
5
|
-
|
|
6
|
-
describe('LeftRightCard', () => {
|
|
7
|
-
it('renders the content in the Right slot', () => {
|
|
8
|
-
render(
|
|
9
|
-
<LeftRightCard>
|
|
10
|
-
<LeftRightCard.Right>Content</LeftRightCard.Right>
|
|
11
|
-
</LeftRightCard>
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
expect(screen.getByText('Content')).toBeInTheDocument()
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
it('does not render other children', () => {
|
|
18
|
-
render(
|
|
19
|
-
<LeftRightCard>
|
|
20
|
-
<div>Other Children</div>
|
|
21
|
-
<LeftRightCard.Right>Content</LeftRightCard.Right>
|
|
22
|
-
</LeftRightCard>
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
expect(screen.queryByText('Other Children')).not.toBeInTheDocument()
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
it('renders a region labelled by the given heading', () => {
|
|
29
|
-
render(
|
|
30
|
-
<LeftRightCard heading='Heading'>
|
|
31
|
-
<LeftRightCard.Right>Content</LeftRightCard.Right>
|
|
32
|
-
</LeftRightCard>
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
expect(screen.getByRole('region')).toBeInTheDocument()
|
|
36
|
-
expect(screen.getByLabelText('Heading')).toBeInTheDocument()
|
|
37
|
-
expect(screen.getByLabelText('Heading')).toHaveTextContent('Content')
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
it('renders no region without a heading', () => {
|
|
41
|
-
render(
|
|
42
|
-
<LeftRightCard>
|
|
43
|
-
<LeftRightCard.Right>Content</LeftRightCard.Right>
|
|
44
|
-
</LeftRightCard>
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
expect(screen.queryByRole('region')).not.toBeInTheDocument()
|
|
48
|
-
expect(screen.queryByLabelText('Heading')).not.toBeInTheDocument()
|
|
49
|
-
expect(screen.getByText('Content')).toBeInTheDocument()
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
it('describes the children by the given help text', () => {
|
|
53
|
-
render(
|
|
54
|
-
<LeftRightCard helpText='Helpful Text'>
|
|
55
|
-
<LeftRightCard.Right>Content</LeftRightCard.Right>
|
|
56
|
-
</LeftRightCard>
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
expect(screen.getByText('Helpful Text')).toBeInTheDocument()
|
|
60
|
-
expect(screen.getByText('Content')).toHaveAccessibleDescription('Helpful Text')
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
it('still renders without the helpful text, but it is not as helpful', () => {
|
|
64
|
-
render(
|
|
65
|
-
<LeftRightCard>
|
|
66
|
-
<LeftRightCard.Right>Content</LeftRightCard.Right>
|
|
67
|
-
</LeftRightCard>
|
|
68
|
-
)
|
|
69
|
-
|
|
70
|
-
expect(screen.queryByText('Helpful Text')).not.toBeInTheDocument()
|
|
71
|
-
expect(screen.getByText('Content')).not.toHaveAccessibleDescription('Helpful Text')
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* this test just ensures that the programmer did not
|
|
76
|
-
* forget to add className? to the props and then pass
|
|
77
|
-
* it to the wrapping element so that users downstream
|
|
78
|
-
* can style the component
|
|
79
|
-
*/
|
|
80
|
-
it('accepts styles', () => {
|
|
81
|
-
const Component = styled(LeftRightCard)`
|
|
82
|
-
margin-bottom: ${Margin.l};
|
|
83
|
-
`
|
|
84
|
-
|
|
85
|
-
const { container } = render(<Component>Contents</Component>)
|
|
86
|
-
|
|
87
|
-
expect(container.firstChild).toHaveStyle(`margin-bottom: ${Margin.l}`)
|
|
88
|
-
})
|
|
89
|
-
})
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { FC, getSlot, If, isDefined, Slot, toKebabCase } from '@helpers'
|
|
2
|
-
import { leftRightLayoutGenerator } from 'components/layout'
|
|
3
|
-
import { Card, ICardProps } from '../card'
|
|
4
|
-
|
|
5
|
-
const { Layout } = leftRightLayoutGenerator()
|
|
6
|
-
|
|
7
|
-
class Right extends Slot {}
|
|
8
|
-
class Controls extends Slot {}
|
|
9
|
-
|
|
10
|
-
type SubComponents = {
|
|
11
|
-
Right: typeof Right
|
|
12
|
-
Controls: typeof Controls
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
interface ILeftRightCardProps extends ICardProps {
|
|
16
|
-
helpText?: string
|
|
17
|
-
className?: string
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export const LeftRightCard: FC<ILeftRightCardProps, SubComponents> = (
|
|
21
|
-
props
|
|
22
|
-
) => {
|
|
23
|
-
const right = getSlot(Right, props.children)
|
|
24
|
-
const controls = getSlot(Controls, props.children)
|
|
25
|
-
|
|
26
|
-
const headingId = isDefined(props.heading)
|
|
27
|
-
? toKebabCase(props.heading)
|
|
28
|
-
: undefined
|
|
29
|
-
|
|
30
|
-
const helpTextId = isDefined(props.helpText)
|
|
31
|
-
? toKebabCase(props.helpText)
|
|
32
|
-
: undefined
|
|
33
|
-
|
|
34
|
-
return (
|
|
35
|
-
<Card className={props.className}>
|
|
36
|
-
<Card.Section aria-labelledby={headingId}>
|
|
37
|
-
<Layout>
|
|
38
|
-
<Layout.Left>
|
|
39
|
-
<If is={props.heading}>
|
|
40
|
-
<Layout.HeadingText id={headingId}>
|
|
41
|
-
{props.heading}
|
|
42
|
-
</Layout.HeadingText>
|
|
43
|
-
</If>
|
|
44
|
-
<If is={props.helpText}>
|
|
45
|
-
<Layout.HelpText id={helpTextId}>
|
|
46
|
-
{props.helpText}
|
|
47
|
-
</Layout.HelpText>
|
|
48
|
-
</If>
|
|
49
|
-
</Layout.Left>
|
|
50
|
-
<Layout.Right>
|
|
51
|
-
<div aria-describedby={helpTextId}>{right}</div>
|
|
52
|
-
</Layout.Right>
|
|
53
|
-
</Layout>
|
|
54
|
-
</Card.Section>
|
|
55
|
-
<Card.Controls>
|
|
56
|
-
{controls}
|
|
57
|
-
</Card.Controls>
|
|
58
|
-
</Card>
|
|
59
|
-
)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
LeftRightCard.Right = Right
|
|
63
|
-
LeftRightCard.Controls = Controls
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { Meta, Canvas } from '@storybook/addon-docs';
|
|
2
|
-
import { AlertBanner } from 'components/alert-banner'
|
|
3
|
-
import {
|
|
4
|
-
CardExample,
|
|
5
|
-
SectionsExample,
|
|
6
|
-
AlertBannerExample,
|
|
7
|
-
LeftRightLayoutExample,
|
|
8
|
-
CardControlsExample,
|
|
9
|
-
SectionsHeadingActionsExample,
|
|
10
|
-
} from './components'
|
|
11
|
-
|
|
12
|
-
<Meta title="Components/Card"/>
|
|
13
|
-
|
|
14
|
-
# Card
|
|
15
|
-
|
|
16
|
-
Cards are used to group similar things together.
|
|
17
|
-
|
|
18
|
-
## How to Use It
|
|
19
|
-
|
|
20
|
-
```tsx
|
|
21
|
-
import { Card } from '@edvisor/product-language'
|
|
22
|
-
|
|
23
|
-
<Card heading='Heading'>
|
|
24
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
25
|
-
</Card>
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
### Card
|
|
29
|
-
|
|
30
|
-
A simple card with a heading and content.
|
|
31
|
-
|
|
32
|
-
<CardExample />
|
|
33
|
-
|
|
34
|
-
### Card with Sections
|
|
35
|
-
|
|
36
|
-
You can divide a card's body up into sections.
|
|
37
|
-
|
|
38
|
-
<SectionsExample />
|
|
39
|
-
|
|
40
|
-
### Card with Heading Actions
|
|
41
|
-
|
|
42
|
-
Any heading in a Card can have an action
|
|
43
|
-
|
|
44
|
-
<AlertBanner warning>
|
|
45
|
-
HeadingAction is a slot, so its children will always render in the same place regardless of where you use it.
|
|
46
|
-
</AlertBanner>
|
|
47
|
-
|
|
48
|
-
<SectionsHeadingActionsExample />
|
|
49
|
-
|
|
50
|
-
### Card with Controls
|
|
51
|
-
|
|
52
|
-
Primary controls go on the bottom of the card.
|
|
53
|
-
|
|
54
|
-
<AlertBanner warning>
|
|
55
|
-
Controls is a slot, so its children will always render in the same place regardless of where you use it.
|
|
56
|
-
</AlertBanner>
|
|
57
|
-
|
|
58
|
-
<CardControlsExample />
|
|
59
|
-
|
|
60
|
-
### Card with Alert Banner
|
|
61
|
-
|
|
62
|
-
You can grab the user's attention with a banner.
|
|
63
|
-
|
|
64
|
-
<AlertBanner warning>
|
|
65
|
-
AlertBanner is a slot, so its children will always render in the same place regardless of where you use it.
|
|
66
|
-
</AlertBanner>
|
|
67
|
-
|
|
68
|
-
<AlertBannerExample />
|
|
69
|
-
|
|
70
|
-
### Card with a Layout
|
|
71
|
-
|
|
72
|
-
You can add a layout to a card. In this case we've added a 1:2 ratio "left/right" layout.
|
|
73
|
-
|
|
74
|
-
<LeftRightLayoutExample />
|
|
75
|
-
|
|
76
|
-
## API
|
|
77
|
-
|
|
78
|
-
### `Card`
|
|
79
|
-
|
|
80
|
-
Extends `HTMLAttributes<HTMLDivElement>`
|
|
81
|
-
|
|
82
|
-
| Prop | Type | Description |
|
|
83
|
-
| --------- | ---------- | -------------------------- |
|
|
84
|
-
| `heading` | `boolean?` | Adds a heading to the card |
|
|
85
|
-
|
|
86
|
-
### `Card.Section`
|
|
87
|
-
|
|
88
|
-
Extends `HTMLAttributes<HTMLDivElement>`
|
|
89
|
-
|
|
90
|
-
| Prop | Type | Description |
|
|
91
|
-
| --------- | ---------- | ------------------------------- |
|
|
92
|
-
| `heading` | `boolean?` | Adds a heading to the section |
|
|
93
|
-
|
|
94
|
-
### Slots
|
|
95
|
-
|
|
96
|
-
| Slot | Description |
|
|
97
|
-
| --------------- | ----------------------------------------------------------- |
|
|
98
|
-
| `Controls` | Adds controls to the bottom of the card |
|
|
99
|
-
| `HeadingAction` | Adds UI directly across from the card or sections's heading |
|
|
100
|
-
| `AlertBanner` | Adds an alert banner above the heading |
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
import styled from 'styled-components'
|
|
2
|
-
|
|
3
|
-
import { Surface } from '@foundations'
|
|
4
|
-
import { CardPlayground } from '@stories'
|
|
5
|
-
|
|
6
|
-
import { leftRightLayoutGenerator } from 'components/layout'
|
|
7
|
-
import { Body, Heading3 } from 'components/typography'
|
|
8
|
-
import { InputField } from 'components/input-field'
|
|
9
|
-
|
|
10
|
-
import { Card } from '../card'
|
|
11
|
-
import { LeftRightCard } from '../molecules/left-right-card'
|
|
12
|
-
|
|
13
|
-
export const CardExample = () => (
|
|
14
|
-
<CardPlayground
|
|
15
|
-
code={`
|
|
16
|
-
<Card heading='Heading'>
|
|
17
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
|
|
18
|
-
</Card>
|
|
19
|
-
`}
|
|
20
|
-
providerProps={{
|
|
21
|
-
renderAsComponent: true,
|
|
22
|
-
scope: {
|
|
23
|
-
Card,
|
|
24
|
-
},
|
|
25
|
-
}}
|
|
26
|
-
/>
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
export const SectionsExample = () => (
|
|
30
|
-
<CardPlayground
|
|
31
|
-
code={`
|
|
32
|
-
<Card heading='Sections!'>
|
|
33
|
-
If you include section slots, plain children won't render.
|
|
34
|
-
<Card.Section heading='Subheading 1'>
|
|
35
|
-
This is a section.
|
|
36
|
-
</Card.Section>
|
|
37
|
-
<Card.Section heading='Subheading 2'>
|
|
38
|
-
This is another section.
|
|
39
|
-
</Card.Section>
|
|
40
|
-
</Card>
|
|
41
|
-
`}
|
|
42
|
-
providerProps={{
|
|
43
|
-
renderAsComponent: true,
|
|
44
|
-
scope: {
|
|
45
|
-
Card,
|
|
46
|
-
},
|
|
47
|
-
}}
|
|
48
|
-
/>
|
|
49
|
-
)
|
|
50
|
-
|
|
51
|
-
export const CardControlsExample = () => (
|
|
52
|
-
<CardPlayground
|
|
53
|
-
code={`
|
|
54
|
-
const handleCancel = () => alert('Cancel');
|
|
55
|
-
const handleConfirm = () => alert('Confirm');
|
|
56
|
-
|
|
57
|
-
<Card heading='Controls!'>
|
|
58
|
-
<Card.Controls>
|
|
59
|
-
<button onClick={handleCancel}>Cancel</button>
|
|
60
|
-
<button onClick={handleConfirm}>Confirm</button>
|
|
61
|
-
</Card.Controls>
|
|
62
|
-
Notice that the controls render below this text, even though they are above this text in the JSX. That's because Controls is a slot, it is only telling Card what we want to render, not where we want to render it.
|
|
63
|
-
</Card>
|
|
64
|
-
`}
|
|
65
|
-
providerProps={{
|
|
66
|
-
renderAsComponent: true,
|
|
67
|
-
scope: {
|
|
68
|
-
Card,
|
|
69
|
-
},
|
|
70
|
-
}}
|
|
71
|
-
/>
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
export const CardHeadingActionExample = () => (
|
|
75
|
-
<CardPlayground
|
|
76
|
-
code={`
|
|
77
|
-
<Card heading='Heading Actions!'>
|
|
78
|
-
If you include section slots, plain children won't render.
|
|
79
|
-
<Card.HeadingAction><button>Activate</button></Card.HeadingAction>
|
|
80
|
-
</Card>
|
|
81
|
-
`}
|
|
82
|
-
providerProps={{
|
|
83
|
-
renderAsComponent: true,
|
|
84
|
-
scope: {
|
|
85
|
-
Card,
|
|
86
|
-
},
|
|
87
|
-
}}
|
|
88
|
-
/>
|
|
89
|
-
)
|
|
90
|
-
|
|
91
|
-
export const SectionsHeadingActionsExample = () => (
|
|
92
|
-
<CardPlayground
|
|
93
|
-
code={`
|
|
94
|
-
<Card heading='Heading Actions'>
|
|
95
|
-
<Card.HeadingAction><button>Action</button></Card.HeadingAction>
|
|
96
|
-
|
|
97
|
-
<Card.Section heading='Subheading 1'>
|
|
98
|
-
This is a section.
|
|
99
|
-
<Card.HeadingAction><button>Action</button></Card.HeadingAction>
|
|
100
|
-
</Card.Section>
|
|
101
|
-
|
|
102
|
-
<Card.Section heading='Subheading 2'>
|
|
103
|
-
This is another section.
|
|
104
|
-
<Card.HeadingAction><button>Action</button></Card.HeadingAction>
|
|
105
|
-
</Card.Section>
|
|
106
|
-
</Card>
|
|
107
|
-
`}
|
|
108
|
-
providerProps={{
|
|
109
|
-
renderAsComponent: true,
|
|
110
|
-
scope: {
|
|
111
|
-
Card,
|
|
112
|
-
},
|
|
113
|
-
}}
|
|
114
|
-
/>
|
|
115
|
-
)
|
|
116
|
-
|
|
117
|
-
export const AlertBannerExample = () => (
|
|
118
|
-
<CardPlayground
|
|
119
|
-
code={`
|
|
120
|
-
<Card heading='Heading'>
|
|
121
|
-
<Card.AlertBanner info>Seriously though, if you change the student's age or nationality you will regret it.</Card.AlertBanner>
|
|
122
|
-
Disaster can strike at any moment.
|
|
123
|
-
</Card>
|
|
124
|
-
`}
|
|
125
|
-
providerProps={{
|
|
126
|
-
renderAsComponent: true,
|
|
127
|
-
scope: {
|
|
128
|
-
Card,
|
|
129
|
-
},
|
|
130
|
-
}}
|
|
131
|
-
/>
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
const { Layout } = leftRightLayoutGenerator()
|
|
135
|
-
|
|
136
|
-
const GreyBox = styled.div`
|
|
137
|
-
background-color: ${Surface.Neutral};
|
|
138
|
-
height: 100%;
|
|
139
|
-
`
|
|
140
|
-
|
|
141
|
-
export const LeftRightLayoutExample = () => (
|
|
142
|
-
<CardPlayground
|
|
143
|
-
code={`
|
|
144
|
-
<Card>
|
|
145
|
-
<Layout>
|
|
146
|
-
<Layout.Left>
|
|
147
|
-
<Heading3>Personal Information</Heading3>
|
|
148
|
-
<Body subdued>This information will be seen by your colleagues and students.</Body>
|
|
149
|
-
</Layout.Left>
|
|
150
|
-
<Layout.Right>
|
|
151
|
-
<form id='my-form' onSubmit={(e) => e.preventDefault()}>
|
|
152
|
-
<InputField
|
|
153
|
-
label='First name'
|
|
154
|
-
/>
|
|
155
|
-
<InputField
|
|
156
|
-
label='Last name'
|
|
157
|
-
/>
|
|
158
|
-
<InputField
|
|
159
|
-
type='email'
|
|
160
|
-
required
|
|
161
|
-
label='Email'
|
|
162
|
-
/>
|
|
163
|
-
</form>
|
|
164
|
-
</Layout.Right>
|
|
165
|
-
</Layout>
|
|
166
|
-
<Card.Controls>
|
|
167
|
-
<button>Cancel</button>
|
|
168
|
-
<button form='my-form' type='submit'>Confirm</button>
|
|
169
|
-
</Card.Controls>
|
|
170
|
-
</Card>
|
|
171
|
-
`}
|
|
172
|
-
providerProps={{
|
|
173
|
-
renderAsComponent: true,
|
|
174
|
-
scope: {
|
|
175
|
-
Card,
|
|
176
|
-
Layout,
|
|
177
|
-
InputField,
|
|
178
|
-
Heading3,
|
|
179
|
-
Body,
|
|
180
|
-
},
|
|
181
|
-
}}
|
|
182
|
-
/>
|
|
183
|
-
)
|
|
184
|
-
|
|
185
|
-
export const LeftRightCardExample = () => (
|
|
186
|
-
<CardPlayground
|
|
187
|
-
code={`
|
|
188
|
-
<LeftRightCard
|
|
189
|
-
heading='Personal Information'
|
|
190
|
-
helpText='This information will be seen by your colleagues and students.'
|
|
191
|
-
>
|
|
192
|
-
<LeftRightCard.Right>
|
|
193
|
-
<form id='my-form-2' onSubmit={(e) => e.preventDefault()}>
|
|
194
|
-
<InputField
|
|
195
|
-
label='First name'
|
|
196
|
-
/>
|
|
197
|
-
<InputField
|
|
198
|
-
label='Last name'
|
|
199
|
-
/>
|
|
200
|
-
<InputField
|
|
201
|
-
type='email'
|
|
202
|
-
required
|
|
203
|
-
label='Email'
|
|
204
|
-
/>
|
|
205
|
-
</form>
|
|
206
|
-
</LeftRightCard.Right>
|
|
207
|
-
<LeftRightCard.Controls>
|
|
208
|
-
<button>Cancel</button>
|
|
209
|
-
<button form='my-form-2' type='submit'>Confirm</button>
|
|
210
|
-
</LeftRightCard.Controls>
|
|
211
|
-
</LeftRightCard>
|
|
212
|
-
`}
|
|
213
|
-
providerProps={{
|
|
214
|
-
renderAsComponent: true,
|
|
215
|
-
scope: {
|
|
216
|
-
LeftRightCard,
|
|
217
|
-
GreyBox,
|
|
218
|
-
Body,
|
|
219
|
-
InputField,
|
|
220
|
-
},
|
|
221
|
-
}}
|
|
222
|
-
/>
|
|
223
|
-
)
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { render, screen } from '@testing-library/react'
|
|
2
|
-
import userEvent from '@testing-library/user-event'
|
|
3
|
-
import { Checkbox } from './checkbox'
|
|
4
|
-
|
|
5
|
-
describe('Checkbox Input Tests', () => {
|
|
6
|
-
it('should render the component and handle event after click', async () => {
|
|
7
|
-
const spyOnChange = jest.fn()
|
|
8
|
-
render(
|
|
9
|
-
<Checkbox
|
|
10
|
-
onChange={spyOnChange}
|
|
11
|
-
/>
|
|
12
|
-
)
|
|
13
|
-
|
|
14
|
-
expect(spyOnChange).not.toHaveBeenCalled()
|
|
15
|
-
const myComponent = screen.getByRole('checkbox')
|
|
16
|
-
|
|
17
|
-
expect(myComponent).toBeInTheDocument()
|
|
18
|
-
|
|
19
|
-
await userEvent.click(myComponent)
|
|
20
|
-
expect(spyOnChange).toHaveBeenCalled()
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it('should not handle event after click if checkbox has disabled', async () => {
|
|
24
|
-
const spyOnChange = jest.fn()
|
|
25
|
-
render(
|
|
26
|
-
<Checkbox
|
|
27
|
-
disabled
|
|
28
|
-
onChange={spyOnChange}
|
|
29
|
-
/>
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
expect(spyOnChange).not.toHaveBeenCalled()
|
|
33
|
-
const myComponent = screen.getByRole('checkbox')
|
|
34
|
-
|
|
35
|
-
userEvent.click(myComponent)
|
|
36
|
-
|
|
37
|
-
expect(spyOnChange).not.toHaveBeenCalled()
|
|
38
|
-
})
|
|
39
|
-
})
|