@transferwise/components 0.0.0-experimental-9e19bae → 0.0.0-experimental-b762045

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.
Files changed (148) hide show
  1. package/build/avatarLayout/AvatarLayout.js +2 -9
  2. package/build/avatarLayout/AvatarLayout.js.map +1 -1
  3. package/build/avatarLayout/AvatarLayout.mjs +2 -9
  4. package/build/avatarLayout/AvatarLayout.mjs.map +1 -1
  5. package/build/button/Button.js +97 -76
  6. package/build/button/Button.js.map +1 -1
  7. package/build/button/Button.mjs +97 -76
  8. package/build/button/Button.mjs.map +1 -1
  9. package/build/circularButton/CircularButton.js +19 -24
  10. package/build/circularButton/CircularButton.js.map +1 -1
  11. package/build/circularButton/CircularButton.mjs +20 -25
  12. package/build/circularButton/CircularButton.mjs.map +1 -1
  13. package/build/criticalBanner/CriticalCommsBanner.js +2 -2
  14. package/build/criticalBanner/CriticalCommsBanner.js.map +1 -1
  15. package/build/criticalBanner/CriticalCommsBanner.mjs +1 -1
  16. package/build/definitionList/DefinitionList.js.map +1 -1
  17. package/build/definitionList/DefinitionList.mjs.map +1 -1
  18. package/build/header/Header.js +2 -2
  19. package/build/header/Header.js.map +1 -1
  20. package/build/header/Header.mjs +1 -1
  21. package/build/i18n/de.json +1 -0
  22. package/build/i18n/de.json.js +1 -0
  23. package/build/i18n/de.json.js.map +1 -1
  24. package/build/i18n/de.json.mjs +1 -0
  25. package/build/i18n/de.json.mjs.map +1 -1
  26. package/build/i18n/it.json +1 -0
  27. package/build/i18n/it.json.js +1 -0
  28. package/build/i18n/it.json.js.map +1 -1
  29. package/build/i18n/it.json.mjs +1 -0
  30. package/build/i18n/it.json.mjs.map +1 -1
  31. package/build/i18n/th.json +1 -0
  32. package/build/i18n/th.json.js +1 -0
  33. package/build/i18n/th.json.js.map +1 -1
  34. package/build/i18n/th.json.mjs +1 -0
  35. package/build/i18n/th.json.mjs.map +1 -1
  36. package/build/index.js +2 -2
  37. package/build/index.mjs +1 -1
  38. package/build/link/Link.js +3 -8
  39. package/build/link/Link.js.map +1 -1
  40. package/build/link/Link.mjs +3 -8
  41. package/build/link/Link.mjs.map +1 -1
  42. package/build/main.css +17 -431
  43. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js +3 -1
  44. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.js.map +1 -1
  45. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs +3 -1
  46. package/build/primitives/PrimitiveAnchor/src/PrimitiveAnchor.mjs.map +1 -1
  47. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js +4 -1
  48. package/build/primitives/PrimitiveButton/src/PrimitiveButton.js.map +1 -1
  49. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs +4 -1
  50. package/build/primitives/PrimitiveButton/src/PrimitiveButton.mjs.map +1 -1
  51. package/build/select/Select.js +3 -5
  52. package/build/select/Select.js.map +1 -1
  53. package/build/select/Select.mjs +2 -4
  54. package/build/select/Select.mjs.map +1 -1
  55. package/build/styles/avatarLayout/AvatarLayout.css +0 -11
  56. package/build/styles/button/Button.css +16 -255
  57. package/build/styles/circularButton/CircularButton.css +17 -158
  58. package/build/styles/main.css +17 -431
  59. package/build/types/avatarLayout/AvatarLayout.d.ts +2 -1
  60. package/build/types/avatarLayout/AvatarLayout.d.ts.map +1 -1
  61. package/build/types/avatarLayout/index.d.ts +0 -1
  62. package/build/types/avatarLayout/index.d.ts.map +1 -1
  63. package/build/types/button/Button.d.ts +23 -1
  64. package/build/types/button/Button.d.ts.map +1 -1
  65. package/build/types/button/index.d.ts +2 -2
  66. package/build/types/button/index.d.ts.map +1 -1
  67. package/build/types/circularButton/CircularButton.d.ts +11 -4
  68. package/build/types/circularButton/CircularButton.d.ts.map +1 -1
  69. package/build/types/definitionList/DefinitionList.d.ts +1 -2
  70. package/build/types/definitionList/DefinitionList.d.ts.map +1 -1
  71. package/build/types/link/Link.d.ts +2 -2
  72. package/build/types/link/Link.d.ts.map +1 -1
  73. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.d.ts.map +1 -1
  74. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.d.ts +1 -1
  75. package/build/types/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.d.ts.map +1 -1
  76. package/build/types/primitives/PrimitiveButton/src/PrimitiveButton.d.ts.map +1 -1
  77. package/build/types/select/Select.d.ts.map +1 -1
  78. package/build/upload/steps/completeStep/completeStep.js +2 -2
  79. package/build/upload/steps/completeStep/completeStep.js.map +1 -1
  80. package/build/upload/steps/completeStep/completeStep.mjs +1 -1
  81. package/build/upload/steps/processingStep/processingStep.js +2 -2
  82. package/build/upload/steps/processingStep/processingStep.js.map +1 -1
  83. package/build/upload/steps/processingStep/processingStep.mjs +1 -1
  84. package/build/uploadInput/UploadInput.js +3 -3
  85. package/build/uploadInput/UploadInput.js.map +1 -1
  86. package/build/uploadInput/UploadInput.mjs +1 -1
  87. package/package.json +3 -3
  88. package/src/avatarLayout/AvatarLayout.css +0 -11
  89. package/src/avatarLayout/AvatarLayout.less +1 -18
  90. package/src/avatarLayout/AvatarLayout.tsx +3 -11
  91. package/src/avatarLayout/index.ts +0 -1
  92. package/src/button/Button.css +16 -255
  93. package/src/button/Button.less +14 -215
  94. package/src/button/Button.spec.tsx +231 -54
  95. package/src/button/Button.story.tsx +136 -287
  96. package/src/button/Button.tsx +131 -84
  97. package/src/button/__snapshots__/{LegacyButton.spec.tsx.snap → Button.spec.tsx.snap} +22 -22
  98. package/src/button/index.ts +3 -2
  99. package/src/circularButton/CircularButton.css +17 -158
  100. package/src/circularButton/CircularButton.less +22 -91
  101. package/src/circularButton/CircularButton.story.tsx +45 -24
  102. package/src/circularButton/CircularButton.tsx +39 -28
  103. package/src/definitionList/DefinitionList.story.tsx +57 -57
  104. package/src/definitionList/DefinitionList.tsx +1 -1
  105. package/src/flowNavigation/__snapshots__/FlowNavigation.spec.js.snap +1 -1
  106. package/src/i18n/de.json +1 -0
  107. package/src/i18n/it.json +1 -0
  108. package/src/i18n/th.json +1 -0
  109. package/src/iconButton/IconButton.story.tsx +6 -6
  110. package/src/inputs/SelectInput.story.tsx +1 -1
  111. package/src/link/Link.tsx +6 -15
  112. package/src/main.css +17 -431
  113. package/src/main.less +0 -1
  114. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.tsx +7 -1
  115. package/src/primitives/PrimitiveAnchor/src/PrimitiveAnchor.types.ts +1 -1
  116. package/src/primitives/PrimitiveAnchor/test/PrimitiveAnchor.spec.tsx +3 -1
  117. package/src/primitives/PrimitiveButton/src/PrimitiveButton.tsx +8 -1
  118. package/src/primitives/PrimitiveButton/test/PrimitiveButton.spec.tsx +5 -2
  119. package/src/select/Select.tsx +0 -1
  120. package/src/slidingPanel/SlidingPanel.spec.tsx +69 -0
  121. package/build/button/Button.resolver.js +0 -78
  122. package/build/button/Button.resolver.js.map +0 -1
  123. package/build/button/Button.resolver.mjs +0 -76
  124. package/build/button/Button.resolver.mjs.map +0 -1
  125. package/build/button/LegacyButton.js +0 -114
  126. package/build/button/LegacyButton.js.map +0 -1
  127. package/build/button/LegacyButton.mjs +0 -112
  128. package/build/button/LegacyButton.mjs.map +0 -1
  129. package/build/styles/button/Button.vars.css +0 -59
  130. package/build/styles/button/LegacyButton.css +0 -23
  131. package/build/types/button/Button.resolver.d.ts +0 -31
  132. package/build/types/button/Button.resolver.d.ts.map +0 -1
  133. package/build/types/button/Button.types.d.ts +0 -58
  134. package/build/types/button/Button.types.d.ts.map +0 -1
  135. package/build/types/button/LegacyButton.d.ts +0 -30
  136. package/build/types/button/LegacyButton.d.ts.map +0 -1
  137. package/src/button/Button.resolver.tsx +0 -120
  138. package/src/button/Button.types.ts +0 -79
  139. package/src/button/Button.vars.css +0 -59
  140. package/src/button/Button.vars.less +0 -73
  141. package/src/button/LegacyButton.css +0 -23
  142. package/src/button/LegacyButton.less +0 -24
  143. package/src/button/LegacyButton.spec.tsx +0 -245
  144. package/src/button/LegacyButton.story.tsx +0 -224
  145. package/src/button/LegacyButton.tsx +0 -161
  146. package/src/circularButton/_button-label-states.less +0 -34
  147. package/src/definitionList/DefinitionList.spec.js +0 -91
  148. package/src/slidingPanel/SlidingPanel.spec.js +0 -56
@@ -1,224 +0,0 @@
1
- import { Meta, StoryObj } from '@storybook/react';
2
- import { userEvent, within, fn, expect } from '@storybook/test';
3
- import { useState } from 'react';
4
-
5
- import Button from '.';
6
-
7
- const withContainer = (Story: any) => (
8
- <div
9
- style={{
10
- display: 'flex',
11
- flexDirection: 'initial',
12
- justifyContent: 'center',
13
- flexFlow: 'column',
14
- alignItems: 'center',
15
- }}
16
- >
17
- <Story />
18
- </div>
19
- );
20
-
21
- const meta: Meta<typeof Button> = {
22
- component: Button,
23
- title: 'Actions/Button/Legacy',
24
- args: {
25
- children: 'Button text',
26
- loading: false,
27
- type: undefined,
28
- onClick: fn(),
29
- onBlur: fn(),
30
- onFocus: fn(),
31
- href: 'https://example.com',
32
- },
33
- argTypes: {
34
- as: {
35
- control: {
36
- type: 'select',
37
- options: ['button', 'a'],
38
- },
39
- },
40
- type: {
41
- type: {
42
- name: 'enum',
43
- value: ['accent', 'positive', 'negative'],
44
- },
45
- },
46
- size: {
47
- type: {
48
- name: 'enum',
49
- value: ['xs', 'sm', 'md', 'lg'],
50
- },
51
- },
52
- priority: {
53
- type: {
54
- name: 'enum',
55
- value: ['primary', 'secondary', 'tertiary'],
56
- },
57
- },
58
- sentiment: {
59
- table: {
60
- disable: true,
61
- },
62
- },
63
- iconStart: {
64
- table: {
65
- disable: true,
66
- },
67
- },
68
- iconEnd: {
69
- table: {
70
- disable: true,
71
- },
72
- },
73
- avatars: {
74
- table: {
75
- disable: true,
76
- },
77
- },
78
- 'data-testid': {
79
- table: {
80
- disable: true,
81
- },
82
- },
83
- },
84
- tags: ['autodocs'],
85
- decorators: [withContainer],
86
- };
87
-
88
- export default meta;
89
-
90
- type Story = StoryObj<typeof Button>;
91
-
92
- export const Basic: Story = {};
93
-
94
- export const Secondary: Story = {
95
- args: {
96
- type: 'accent',
97
- priority: 'secondary',
98
- },
99
- };
100
-
101
- export const Tertiary: Story = {
102
- args: {
103
- type: 'accent',
104
- priority: 'tertiary',
105
- },
106
- };
107
-
108
- export const Negative: Story = {
109
- args: {
110
- type: 'negative',
111
- priority: 'primary',
112
- },
113
- };
114
-
115
- export const Loading: Story = {
116
- args: {
117
- loading: true,
118
- },
119
- };
120
-
121
- export const Variants: Story = {
122
- render: () => {
123
- return (
124
- <div className="d-flex flex-column p-b-2 align-items-start">
125
- <div className="d-flex flex-row p-b-2" style={{ gap: 'var(--size-16)' }}>
126
- <Button type="accent" priority="primary">
127
- Primary Accent
128
- </Button>
129
- <Button type="accent" priority="secondary">
130
- Secondary Accent
131
- </Button>
132
- <Button type="accent" priority="tertiary">
133
- Tertiary Accent
134
- </Button>
135
- </div>
136
- <div className="d-flex flex-row p-b-2" style={{ gap: 'var(--size-16)' }}>
137
- <Button type="positive" priority="primary">
138
- Primary Positive
139
- </Button>
140
- <Button type="positive" priority="secondary">
141
- Secondary Accent
142
- </Button>
143
- </div>
144
- <div className="d-flex flex-row flex- p-b-2" style={{ gap: 'var(--size-16)' }}>
145
- <Button type="negative" priority="primary">
146
- Primary Negative
147
- </Button>
148
- <Button type="negative" priority="secondary">
149
- Secondary Negative
150
- </Button>
151
- </div>
152
- <div className="d-flex flex-row p-b-1" style={{ gap: 'var(--size-16)' }}>
153
- <Button type="accent" priority="primary" disabled>
154
- Button Disabled
155
- </Button>
156
- <Button type="accent" priority="secondary" disabled>
157
- Button Disabled
158
- </Button>
159
- <Button type="accent" priority="tertiary" disabled>
160
- Button Disabled
161
- </Button>
162
- </div>
163
- </div>
164
- );
165
- },
166
- };
167
-
168
- const wait = async (duration = 500) =>
169
- new Promise<void>((resolve) => {
170
- setTimeout(resolve, duration);
171
- });
172
-
173
- export const Focused: Story = {
174
- play: async ({ canvasElement }: { canvasElement: HTMLElement }) => {
175
- const canvas = within(canvasElement);
176
- const button = canvas.getByRole('button');
177
- await userEvent.tab();
178
- await expect(button).toHaveFocus();
179
- await expect(button).toHaveTextContent('Focused!');
180
- },
181
- render: function Render(args: React.ComponentProps<typeof Button>) {
182
- const [focused, setFocused] = useState(false);
183
-
184
- return (
185
- <Button {...args} onFocus={() => setFocused(true)}>
186
- {focused ? 'Focused!' : 'Button text'}
187
- </Button>
188
- );
189
- },
190
- };
191
-
192
- export const SocialMedia: Story = {
193
- render: () => {
194
- return (
195
- <>
196
- <div className="m-b-2">
197
- <button type="button" className="btn btn-google">
198
- Login with Google
199
- </button>
200
- </div>
201
- <div className="m-b-2">
202
- <button type="button" className="btn btn-facebook">
203
- Login with Facebook
204
- </button>
205
- </div>
206
- <div className="m-b-2">
207
- <button type="button" className="btn btn-lg btn-facebook">
208
- Large Button
209
- </button>
210
- </div>
211
- <div className="m-b-2">
212
- <button type="button" className="btn btn-block btn-facebook">
213
- Block Button
214
- </button>
215
- </div>
216
- <div className="m-b-2">
217
- <button type="button" className="btn btn-lg btn-block btn-facebook">
218
- Large Block Button
219
- </button>
220
- </div>
221
- </>
222
- );
223
- },
224
- };
@@ -1,161 +0,0 @@
1
- import { clsx } from 'clsx';
2
- import { ElementType, forwardRef, MouseEvent } from 'react';
3
- import { useIntl } from 'react-intl';
4
-
5
- import {
6
- Size,
7
- ControlType,
8
- Priority,
9
- ControlTypeAccent,
10
- ControlTypeNegative,
11
- ControlTypePositive,
12
- PriorityPrimary,
13
- PrioritySecondary,
14
- PriorityTertiary,
15
- SizeExtraSmall,
16
- SizeSmall,
17
- SizeMedium,
18
- SizeLarge,
19
- } from '../common';
20
- import ProcessIndicator from '../processIndicator';
21
-
22
- import messages from '../i18n/commonMessages/Button.messages';
23
- import { typeClassMap, priorityClassMap } from './classMap';
24
- import { establishNewPriority, establishNewType, logDeprecationNotices } from './legacyUtils';
25
-
26
- /** @deprecated */
27
- type DeprecatedTypes = 'primary' | 'pay' | 'secondary' | 'danger' | 'link';
28
-
29
- /** @deprecated */
30
- type DeprecatedSizes = SizeExtraSmall;
31
-
32
- type CommonProps = {
33
- block?: boolean;
34
- disabled?: boolean;
35
- loading?: boolean;
36
- /** @deprecated */
37
- type?: ControlTypeAccent | ControlTypeNegative | ControlTypePositive | DeprecatedTypes | null;
38
- priority?: PriorityPrimary | PrioritySecondary | PriorityTertiary | null;
39
- size?: SizeSmall | SizeMedium | SizeLarge | DeprecatedSizes;
40
- htmlType?: 'submit' | 'reset' | 'button';
41
- };
42
-
43
- export type ButtonProps = CommonProps &
44
- Omit<React.ComponentPropsWithRef<'button'>, 'type'> & {
45
- as?: 'button';
46
- };
47
-
48
- export type AnchorProps = CommonProps &
49
- Omit<React.ComponentPropsWithRef<'a'>, 'type'> & {
50
- as?: 'a';
51
- href?: string;
52
- };
53
-
54
- export type LegacyButtonProps = ButtonProps | AnchorProps;
55
-
56
- export type ButtonReferenceType = HTMLButtonElement | HTMLAnchorElement;
57
-
58
- /**
59
- * @deprecated make sure you use new Button component via `<Button v2 .. />` and new props
60
- */
61
- const LegacyButton = forwardRef<ButtonReferenceType, LegacyButtonProps>(
62
- (
63
- {
64
- as: component = 'button',
65
- block = false,
66
- children,
67
- className,
68
- disabled,
69
- loading = false,
70
- priority = Priority.PRIMARY,
71
- size = Size.MEDIUM,
72
- type = ControlType.ACCENT,
73
- onClick,
74
- ...rest
75
- }: LegacyButtonProps,
76
- ref,
77
- ) => {
78
- const intl = useIntl();
79
-
80
- logDeprecationNotices({ size, type });
81
-
82
- const newType = establishNewType(type);
83
- const newPriority = establishNewPriority(priority, type);
84
-
85
- const classes = clsx(
86
- `btn btn-${size}`,
87
- `np-btn np-btn-${size}`,
88
- {
89
- 'btn-loading': loading,
90
- 'btn-block np-btn-block': block,
91
- disabled,
92
- },
93
- // @ts-expect-error fix when refactor `typeClassMap` to TypeScript
94
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
95
- typeClassMap[newType],
96
- // @ts-expect-error fix when refactor `typeClassMap` to TypeScript
97
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
98
- priorityClassMap[newPriority],
99
- className,
100
- );
101
-
102
- function processIndicatorSize() {
103
- return ['sm', 'xs'].includes(size) ? 'xxs' : 'xs';
104
- }
105
-
106
- const Element = (component as ElementType) ?? 'button';
107
- let props;
108
-
109
- if (Element === 'button') {
110
- const { htmlType = 'button', ...restProps } = rest as ButtonProps;
111
- props = {
112
- ...restProps,
113
- disabled,
114
- 'aria-disabled': loading,
115
- type: htmlType,
116
- };
117
- } else {
118
- props = {
119
- ...rest,
120
- 'aria-disabled': loading,
121
- } as AnchorProps;
122
- }
123
-
124
- /**
125
- * Ensures that the button cannot be activated in loading or disabled mode,
126
- * when `aria-disabled` might be used over the `disabled` HTML attribute
127
- */
128
- const handleClick =
129
- (handler: LegacyButtonProps['onClick']) =>
130
- (event: MouseEvent<HTMLButtonElement> & MouseEvent<HTMLAnchorElement>) => {
131
- if (disabled || loading) {
132
- event.preventDefault();
133
- } else if (typeof handler === 'function') {
134
- handler(event);
135
- }
136
- };
137
-
138
- return (
139
- <Element
140
- ref={ref as React.Ref<ButtonReferenceType>}
141
- className={classes}
142
- onClick={handleClick(onClick)}
143
- {...props}
144
- aria-live={loading ? 'polite' : 'off'}
145
- aria-busy={loading}
146
- aria-label={loading ? intl.formatMessage(messages.loadingAriaLabel) : rest['aria-label']}
147
- >
148
- {children}
149
- {loading && (
150
- <ProcessIndicator
151
- size={processIndicatorSize()}
152
- className="btn-loader"
153
- data-testid="ButtonProgressIndicator"
154
- />
155
- )}
156
- </Element>
157
- );
158
- },
159
- );
160
-
161
- export default LegacyButton;
@@ -1,34 +0,0 @@
1
- .button-label-states(@prefix, @type, @normal, @hover, @active, @isModernTheme: false) {
2
- .@{prefix}.@{type} {
3
- .@{prefix}__label {
4
- color: @normal;
5
- }
6
-
7
- &:not(.disabled, :disabled):hover .@{prefix}__label {
8
- color: @hover;
9
- }
10
-
11
- &:active .@{prefix}__label,
12
- input[type="button"]:active ~ .@{prefix}__label {
13
- color: @active;
14
- }
15
-
16
- &.secondary {
17
- .tw-icon {
18
- color: @normal;
19
- }
20
-
21
- &:not(.disabled, :disabled):hover .tw-icon,
22
- input[type="button"]:active + .tw-icon {
23
- color: white;
24
- & when (@isModernTheme = true) {
25
- color: var(--color-interactive-control);
26
- }
27
- }
28
-
29
- &:active input[type="button"] + .tw-icon when (@isModernTheme = true) {
30
- color: var(--color-interactive-control);
31
- }
32
- }
33
- }
34
- }
@@ -1,91 +0,0 @@
1
- import { shallow, mount } from 'enzyme';
2
-
3
- import { DefinitionList } from '..';
4
- import { Layout } from '../common';
5
-
6
- const {
7
- VERTICAL_TWO_COLUMN,
8
- VERTICAL_ONE_COLUMN,
9
- HORIZONTAL_LEFT_ALIGNED,
10
- HORIZONTAL_RIGHT_ALIGNED,
11
- HORIZONTAL_JUSTIFIED,
12
- } = Layout;
13
-
14
- describe('DefinitionList', () => {
15
- const someDefinitions = () => [{ title: 'First', value: 'first value', key: 'first' }, null];
16
-
17
- const withLayout = (layout) =>
18
- shallow(<DefinitionList layout={layout} definitions={someDefinitions()} />);
19
-
20
- const listHasClass = (layout, className) =>
21
- withLayout(layout).find('dl.tw-definition-list').hasClass(className);
22
-
23
- const valueHasClass = (layout, className) =>
24
- withLayout(layout).find('dl.tw-definition-list dd').hasClass(className);
25
-
26
- it('applies correct flex class', () => {
27
- const colClass = 'flex-column';
28
-
29
- expect(listHasClass(VERTICAL_ONE_COLUMN, colClass)).toBe(true);
30
- expect(listHasClass(VERTICAL_TWO_COLUMN, colClass)).toBe(true);
31
- expect(listHasClass(HORIZONTAL_LEFT_ALIGNED, colClass)).toBe(true);
32
- expect(listHasClass(HORIZONTAL_RIGHT_ALIGNED, colClass)).toBe(true);
33
- expect(listHasClass(HORIZONTAL_JUSTIFIED, colClass)).toBe(true);
34
- });
35
-
36
- it('applies correct class for vertical two-column layout', () => {
37
- const colClass = 'tw-definition-list--columns flex-column flex-row--sm';
38
-
39
- expect(listHasClass(VERTICAL_TWO_COLUMN, colClass)).toBe(true);
40
- expect(listHasClass(VERTICAL_ONE_COLUMN, colClass)).toBe(false);
41
- expect(listHasClass(HORIZONTAL_LEFT_ALIGNED, colClass)).toBe(false);
42
- expect(listHasClass(HORIZONTAL_RIGHT_ALIGNED, colClass)).toBe(false);
43
- expect(listHasClass(HORIZONTAL_JUSTIFIED, colClass)).toBe(false);
44
- });
45
-
46
- it('applies correct class for horiztonal layouts', () => {
47
- const rowClass = 'tw-definition-list--horizontal flex-column';
48
-
49
- expect(listHasClass(VERTICAL_TWO_COLUMN, rowClass)).toBe(false);
50
- expect(listHasClass(VERTICAL_ONE_COLUMN, rowClass)).toBe(false);
51
- expect(listHasClass(HORIZONTAL_LEFT_ALIGNED, rowClass)).toBe(true);
52
- expect(listHasClass(HORIZONTAL_RIGHT_ALIGNED, rowClass)).toBe(true);
53
- expect(listHasClass(HORIZONTAL_JUSTIFIED, rowClass)).toBe(true);
54
- });
55
-
56
- it('applies correct class for alignment', () => {
57
- expect(valueHasClass(VERTICAL_TWO_COLUMN, 'd-flex justify-content-between')).toBe(true);
58
- expect(valueHasClass(VERTICAL_ONE_COLUMN, 'd-flex justify-content-between')).toBe(true);
59
- expect(valueHasClass(HORIZONTAL_LEFT_ALIGNED, 'd-flex justify-content-between')).toBe(true);
60
- expect(valueHasClass(HORIZONTAL_RIGHT_ALIGNED, 'text-sm-right')).toBe(true);
61
- expect(valueHasClass(HORIZONTAL_JUSTIFIED, 'text-sm-justify')).toBe(true);
62
- });
63
-
64
- it('has muted text class on title and value when muted flag is passed', () => {
65
- const muted = shallow(<DefinitionList muted definitions={someDefinitions()} />);
66
- const notMuted = shallow(<DefinitionList definitions={someDefinitions()} />);
67
-
68
- expect(muted.find('dl.tw-definition-list').hasClass('text-muted')).toBe(true);
69
- expect(notMuted.find('dl.tw-definition-list').hasClass('text-muted')).toBe(false);
70
- });
71
-
72
- it('shows action button when one is passed in', () => {
73
- const buttonSpy = jest.fn();
74
-
75
- const definitionList = mount(
76
- <DefinitionList
77
- definitions={[
78
- {
79
- title: 'Name',
80
- value: 'Jenkins',
81
- key: '1',
82
- action: { label: 'A button', onClick: buttonSpy },
83
- },
84
- ]}
85
- />,
86
- );
87
-
88
- definitionList.find('button').simulate('click');
89
- expect(buttonSpy).toHaveBeenCalledTimes(1);
90
- });
91
- });
@@ -1,56 +0,0 @@
1
- import { shallow, mount } from 'enzyme';
2
-
3
- import SlidingPanel from './SlidingPanel';
4
-
5
- describe('SlidingPanel', () => {
6
- let component;
7
- const props = {
8
- open: true,
9
- position: 'left',
10
- children: null,
11
- className: undefined,
12
- slidingPanelPositionFixed: false,
13
- showSlidingPanelBorder: false,
14
- testId: undefined,
15
- };
16
-
17
- it('renders with right props', () => {
18
- component = mount(<SlidingPanel {...props} />);
19
- expect(component.find(SlidingPanel)).toHaveLength(1);
20
- expect(component.find(SlidingPanel).props()).toStrictEqual({ ...props });
21
- });
22
-
23
- it('renders CSSTransition with right props', () => {
24
- component = shallow(<SlidingPanel {...props} />);
25
-
26
- expect(cssTransition()).toHaveLength(1);
27
-
28
- expect(cssTransition().props()).toEqual({
29
- className: 'sliding-panel sliding-panel--open-left',
30
- children: null,
31
- });
32
- });
33
-
34
- it('adds fixed class', () => {
35
- component = shallow(<SlidingPanel {...props} slidingPanelPositionFixed />);
36
- expect(cssTransition().prop('className')).toBe(
37
- 'sliding-panel sliding-panel--open-left sliding-panel--fixed',
38
- );
39
- });
40
-
41
- it('adds border classes if showSlidingPanelBorder is set to true', () => {
42
- component = shallow(<SlidingPanel {...props} showSlidingPanelBorder />);
43
- expect(cssTransition().prop('className')).toBe(
44
- 'sliding-panel sliding-panel--open-left sliding-panel--border-left',
45
- );
46
- component = shallow(<SlidingPanel {...props} showSlidingPanelBorder={false} position="left" />);
47
- expect(cssTransition().prop('className')).toBe('sliding-panel sliding-panel--open-left');
48
-
49
- component = shallow(<SlidingPanel {...props} showSlidingPanelBorder position="top" />);
50
- expect(cssTransition().prop('className')).toBe(
51
- 'sliding-panel sliding-panel--open-top sliding-panel--border-top',
52
- );
53
- });
54
-
55
- const cssTransition = () => component.find('div');
56
- });