@atlaskit/modal-dialog 12.0.2
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/CHANGELOG.md +2111 -0
- package/LICENSE +13 -0
- package/README.md +13 -0
- package/__perf__/default.tsx +42 -0
- package/__perf__/interactions.tsx +136 -0
- package/__perf__/scroll.tsx +98 -0
- package/codemods/12.0.0-lite-mode.ts +51 -0
- package/codemods/__tests__/12.0.0-lite-mode.test.ts +493 -0
- package/codemods/__tests__/handle-prop-spread.tsx +276 -0
- package/codemods/__tests__/inline-WidthNames-declaration.test.ts +260 -0
- package/codemods/__tests__/map-actions-prop.tsx +436 -0
- package/codemods/__tests__/map-body-from-props.test.ts +645 -0
- package/codemods/__tests__/map-container-from-props.test.ts +323 -0
- package/codemods/__tests__/map-footer-from-props.test.ts +544 -0
- package/codemods/__tests__/map-header-from-props.test.ts +559 -0
- package/codemods/__tests__/map-heading-prop.tsx +438 -0
- package/codemods/__tests__/remove-appearance-prop.test.ts +79 -0
- package/codemods/__tests__/remove-component-override-props.test.ts +153 -0
- package/codemods/__tests__/remove-is-chromeless.tsx +182 -0
- package/codemods/__tests__/rename-appearance-type.test.ts +52 -0
- package/codemods/__tests__/rename-inner-component-prop-types.test.ts +82 -0
- package/codemods/__tests__/rename-scrollBehavior-to-shouldScrollInViewport.test.ts +237 -0
- package/codemods/internal/constants.tsx +41 -0
- package/codemods/internal/utils.tsx +223 -0
- package/codemods/migrations/handle-prop-spread.tsx +51 -0
- package/codemods/migrations/inline-WidthNames-declaration.ts +92 -0
- package/codemods/migrations/map-actions-prop.tsx +430 -0
- package/codemods/migrations/map-body-from-props.ts +147 -0
- package/codemods/migrations/map-container-from-props.ts +72 -0
- package/codemods/migrations/map-footer-from-props.ts +107 -0
- package/codemods/migrations/map-header-from-props.ts +101 -0
- package/codemods/migrations/map-heading-prop.tsx +193 -0
- package/codemods/migrations/remove-appearance-prop.ts +27 -0
- package/codemods/migrations/remove-component-override-props.ts +84 -0
- package/codemods/migrations/remove-is-chromeless.tsx +42 -0
- package/codemods/migrations/rename-appearance-type.ts +9 -0
- package/codemods/migrations/rename-inner-component-prop-types.ts +28 -0
- package/codemods/migrations/rename-scrollBehavior-to-shouldScrollInViewport.ts +82 -0
- package/dist/cjs/hooks.js +22 -0
- package/dist/cjs/index.js +63 -0
- package/dist/cjs/internal/components/modal-dialog.js +155 -0
- package/dist/cjs/internal/components/positioner.js +89 -0
- package/dist/cjs/internal/components/scroll-container.js +138 -0
- package/dist/cjs/internal/constants.js +48 -0
- package/dist/cjs/internal/context.js +13 -0
- package/dist/cjs/internal/hooks/use-modal-stack.js +110 -0
- package/dist/cjs/internal/hooks/use-on-motion-finish.js +24 -0
- package/dist/cjs/internal/hooks/use-prevent-programmatic-scroll.js +55 -0
- package/dist/cjs/internal/hooks/use-scroll.js +20 -0
- package/dist/cjs/internal/utils.js +35 -0
- package/dist/cjs/modal-body.js +66 -0
- package/dist/cjs/modal-footer.js +40 -0
- package/dist/cjs/modal-header.js +43 -0
- package/dist/cjs/modal-title.js +108 -0
- package/dist/cjs/modal-transition.js +21 -0
- package/dist/cjs/modal-wrapper.js +126 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/version.json +5 -0
- package/dist/es2019/hooks.js +11 -0
- package/dist/es2019/index.js +7 -0
- package/dist/es2019/internal/components/modal-dialog.js +120 -0
- package/dist/es2019/internal/components/positioner.js +78 -0
- package/dist/es2019/internal/components/scroll-container.js +97 -0
- package/dist/es2019/internal/constants.js +27 -0
- package/dist/es2019/internal/context.js +3 -0
- package/dist/es2019/internal/hooks/use-modal-stack.js +85 -0
- package/dist/es2019/internal/hooks/use-on-motion-finish.js +17 -0
- package/dist/es2019/internal/hooks/use-prevent-programmatic-scroll.js +39 -0
- package/dist/es2019/internal/hooks/use-scroll.js +11 -0
- package/dist/es2019/internal/utils.js +22 -0
- package/dist/es2019/modal-body.js +50 -0
- package/dist/es2019/modal-footer.js +30 -0
- package/dist/es2019/modal-header.js +30 -0
- package/dist/es2019/modal-title.js +94 -0
- package/dist/es2019/modal-transition.js +10 -0
- package/dist/es2019/modal-wrapper.js +88 -0
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/version.json +5 -0
- package/dist/esm/hooks.js +11 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/internal/components/modal-dialog.js +131 -0
- package/dist/esm/internal/components/positioner.js +76 -0
- package/dist/esm/internal/components/scroll-container.js +114 -0
- package/dist/esm/internal/constants.js +27 -0
- package/dist/esm/internal/context.js +3 -0
- package/dist/esm/internal/hooks/use-modal-stack.js +96 -0
- package/dist/esm/internal/hooks/use-on-motion-finish.js +16 -0
- package/dist/esm/internal/hooks/use-prevent-programmatic-scroll.js +44 -0
- package/dist/esm/internal/hooks/use-scroll.js +11 -0
- package/dist/esm/internal/utils.js +22 -0
- package/dist/esm/modal-body.js +49 -0
- package/dist/esm/modal-footer.js +29 -0
- package/dist/esm/modal-header.js +29 -0
- package/dist/esm/modal-title.js +93 -0
- package/dist/esm/modal-transition.js +10 -0
- package/dist/esm/modal-wrapper.js +96 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/version.json +5 -0
- package/dist/types/hooks.d.ts +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/internal/components/modal-dialog.d.ts +3 -0
- package/dist/types/internal/components/positioner.d.ts +10 -0
- package/dist/types/internal/components/scroll-container.d.ts +20 -0
- package/dist/types/internal/constants.d.ts +25 -0
- package/dist/types/internal/context.d.ts +20 -0
- package/dist/types/internal/hooks/use-modal-stack.d.ts +13 -0
- package/dist/types/internal/hooks/use-on-motion-finish.d.ts +4 -0
- package/dist/types/internal/hooks/use-prevent-programmatic-scroll.d.ts +7 -0
- package/dist/types/internal/hooks/use-scroll.d.ts +1 -0
- package/dist/types/internal/utils.d.ts +3 -0
- package/dist/types/modal-body.d.ts +16 -0
- package/dist/types/modal-footer.d.ts +16 -0
- package/dist/types/modal-header.d.ts +16 -0
- package/dist/types/modal-title.d.ts +26 -0
- package/dist/types/modal-transition.d.ts +3 -0
- package/dist/types/modal-wrapper.d.ts +5 -0
- package/dist/types/types.d.ts +90 -0
- package/extract-react-types/modal-attributes.tsx +5 -0
- package/hooks/package.json +7 -0
- package/modal-body/package.json +7 -0
- package/modal-dialog/package.json +7 -0
- package/modal-footer/package.json +7 -0
- package/modal-header/package.json +7 -0
- package/modal-title/package.json +7 -0
- package/modal-transition/package.json +7 -0
- package/package.json +113 -0
- package/types/package.json +7 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import { createTransformer } from '@atlaskit/codemod-utils';
|
|
2
|
+
|
|
3
|
+
import { mapHeadingPropToModalTitle } from '../migrations/map-heading-prop';
|
|
4
|
+
|
|
5
|
+
const transformer = createTransformer([mapHeadingPropToModalTitle]);
|
|
6
|
+
|
|
7
|
+
const defineInlineTest = require('jscodeshift/dist/testUtils').defineInlineTest;
|
|
8
|
+
|
|
9
|
+
describe('Modal heading prop to ModalTitle mapping codemods', () => {
|
|
10
|
+
['tsx', 'babylon'].forEach((parser) => {
|
|
11
|
+
describe(`parser: ${parser}`, () => {
|
|
12
|
+
defineInlineTest(
|
|
13
|
+
{ default: transformer, parser },
|
|
14
|
+
{},
|
|
15
|
+
`
|
|
16
|
+
import React from 'react';
|
|
17
|
+
import Modal, { ModalTransition } from '@atlaskit/modal-dialog';
|
|
18
|
+
|
|
19
|
+
const App = () => {
|
|
20
|
+
return <Modal heading="some heading" testId="modal" isBlanketHidden />;
|
|
21
|
+
}
|
|
22
|
+
`,
|
|
23
|
+
`
|
|
24
|
+
import React from 'react';
|
|
25
|
+
import Modal, { ModalTransition, ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
26
|
+
|
|
27
|
+
const App = () => {
|
|
28
|
+
return (
|
|
29
|
+
<Modal testId="modal" isBlanketHidden>
|
|
30
|
+
<ModalHeader>
|
|
31
|
+
<ModalTitle>
|
|
32
|
+
some heading
|
|
33
|
+
</ModalTitle>
|
|
34
|
+
</ModalHeader>
|
|
35
|
+
</Modal>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
`,
|
|
39
|
+
`should map the "heading" prop to ModalTitle when heading prop value is a string`,
|
|
40
|
+
);
|
|
41
|
+
defineInlineTest(
|
|
42
|
+
{ default: transformer, parser },
|
|
43
|
+
{},
|
|
44
|
+
`
|
|
45
|
+
import React from 'react';
|
|
46
|
+
import Modal, { ModalTransition } from '@atlaskit/modal-dialog';
|
|
47
|
+
|
|
48
|
+
const App = () => {
|
|
49
|
+
return <Modal testId="modal" isBlanketHidden><p>Modal Body</p></Modal>;
|
|
50
|
+
}
|
|
51
|
+
`,
|
|
52
|
+
`
|
|
53
|
+
import React from 'react';
|
|
54
|
+
import Modal, { ModalTransition } from '@atlaskit/modal-dialog';
|
|
55
|
+
|
|
56
|
+
const App = () => {
|
|
57
|
+
return <Modal testId="modal" isBlanketHidden><p>Modal Body</p></Modal>;
|
|
58
|
+
}
|
|
59
|
+
`,
|
|
60
|
+
`should leave other prop as it is when there is no "heading" prop provided`,
|
|
61
|
+
);
|
|
62
|
+
defineInlineTest(
|
|
63
|
+
{ default: transformer, parser },
|
|
64
|
+
{},
|
|
65
|
+
`
|
|
66
|
+
import React from 'react';
|
|
67
|
+
import Modal from '@atlaskit/modal-dialog';
|
|
68
|
+
|
|
69
|
+
const App = () => {
|
|
70
|
+
return <Modal heading={"some heading"} testId="modal" isBlanketHidden />;
|
|
71
|
+
}
|
|
72
|
+
`,
|
|
73
|
+
`
|
|
74
|
+
import React from 'react';
|
|
75
|
+
import Modal, { ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
76
|
+
|
|
77
|
+
const App = () => {
|
|
78
|
+
return (
|
|
79
|
+
<Modal testId="modal" isBlanketHidden>
|
|
80
|
+
<ModalHeader>
|
|
81
|
+
<ModalTitle>
|
|
82
|
+
{"some heading"}
|
|
83
|
+
</ModalTitle>
|
|
84
|
+
</ModalHeader>
|
|
85
|
+
</Modal>
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
`,
|
|
89
|
+
`should map the "heading" prop to ModalTitle when heading prop value is an expression`,
|
|
90
|
+
);
|
|
91
|
+
defineInlineTest(
|
|
92
|
+
{ default: transformer, parser },
|
|
93
|
+
{},
|
|
94
|
+
`
|
|
95
|
+
import React from 'react';
|
|
96
|
+
import Modal from '@atlaskit/modal-dialog';
|
|
97
|
+
const x = true;
|
|
98
|
+
const heading = "some-heading"
|
|
99
|
+
const App = () => {
|
|
100
|
+
return <Modal heading={x && heading} testId="modal" isBlanketHidden />;
|
|
101
|
+
}
|
|
102
|
+
`,
|
|
103
|
+
`
|
|
104
|
+
import React from 'react';
|
|
105
|
+
import Modal, { ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
106
|
+
const x = true;
|
|
107
|
+
const heading = "some-heading"
|
|
108
|
+
const App = () => {
|
|
109
|
+
return (
|
|
110
|
+
<Modal testId="modal" isBlanketHidden>
|
|
111
|
+
<ModalHeader>
|
|
112
|
+
<ModalTitle>
|
|
113
|
+
{x && heading}
|
|
114
|
+
</ModalTitle>
|
|
115
|
+
</ModalHeader>
|
|
116
|
+
</Modal>
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
`,
|
|
120
|
+
`should map the "heading" prop to ModalTitle when heading prop value is a complex expression`,
|
|
121
|
+
);
|
|
122
|
+
defineInlineTest(
|
|
123
|
+
{ default: transformer, parser },
|
|
124
|
+
{},
|
|
125
|
+
`
|
|
126
|
+
import React from 'react';
|
|
127
|
+
import ModalHeader, { ModalTransition as ModalTitle} from '@atlaskit/modal-dialog';
|
|
128
|
+
|
|
129
|
+
const App = () => {
|
|
130
|
+
return <ModalHeader heading={<p><span>my heading</span></p>} testId="modal" isBlanketHidden />;
|
|
131
|
+
}
|
|
132
|
+
`,
|
|
133
|
+
`
|
|
134
|
+
import React from 'react';
|
|
135
|
+
import ModalHeader, {
|
|
136
|
+
ModalTransition as ModalTitle,
|
|
137
|
+
ModalTitle as AKModalTitle,
|
|
138
|
+
ModalHeader as AKModalHeader,
|
|
139
|
+
} from "@atlaskit/modal-dialog";
|
|
140
|
+
|
|
141
|
+
const App = () => {
|
|
142
|
+
return (
|
|
143
|
+
<ModalHeader testId="modal" isBlanketHidden>
|
|
144
|
+
<AKModalHeader>
|
|
145
|
+
<AKModalTitle>
|
|
146
|
+
{<p><span>my heading</span></p>}
|
|
147
|
+
</AKModalTitle>
|
|
148
|
+
</AKModalHeader>
|
|
149
|
+
</ModalHeader>
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
`,
|
|
153
|
+
`should map the "heading" prop to ModalTitle when heading prop value is a JSX and alias the import when variable with same name exists in scope `,
|
|
154
|
+
);
|
|
155
|
+
defineInlineTest(
|
|
156
|
+
{ default: transformer, parser },
|
|
157
|
+
{},
|
|
158
|
+
`
|
|
159
|
+
import React from 'react';
|
|
160
|
+
import Modal from '@atlaskit/modal-dialog';
|
|
161
|
+
const props = {}
|
|
162
|
+
const App = () => {
|
|
163
|
+
return <Modal heading="some-heading" {...props} />;
|
|
164
|
+
}
|
|
165
|
+
`,
|
|
166
|
+
`
|
|
167
|
+
import React from 'react';
|
|
168
|
+
import Modal, { ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
169
|
+
const props = {}
|
|
170
|
+
const App = () => {
|
|
171
|
+
return (
|
|
172
|
+
<Modal {...props}>
|
|
173
|
+
<ModalHeader>
|
|
174
|
+
<ModalTitle>
|
|
175
|
+
some-heading
|
|
176
|
+
</ModalTitle>
|
|
177
|
+
</ModalHeader>
|
|
178
|
+
</Modal>
|
|
179
|
+
);
|
|
180
|
+
}
|
|
181
|
+
`,
|
|
182
|
+
`should map "heading" prop when props are being spread over but "heading" prop is present separately`,
|
|
183
|
+
);
|
|
184
|
+
defineInlineTest(
|
|
185
|
+
{ default: transformer, parser },
|
|
186
|
+
{},
|
|
187
|
+
`
|
|
188
|
+
import React from 'react';
|
|
189
|
+
const AKModalDialog = lazy(() => import('@atlaskit/modal-dialog'));
|
|
190
|
+
const AKModalTransition = lazy(() =>
|
|
191
|
+
import('@atlaskit/modal-dialog').then((module) => ({
|
|
192
|
+
default: module.ModalTransition,
|
|
193
|
+
})),
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
const App = () => {
|
|
197
|
+
return (
|
|
198
|
+
<AKModalTransition>
|
|
199
|
+
<AKModalDialog heading="Configuration">
|
|
200
|
+
<div>modal body</div>
|
|
201
|
+
</AKModalDialog>
|
|
202
|
+
</AKModalTransition>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
`,
|
|
206
|
+
`
|
|
207
|
+
import React from 'react';
|
|
208
|
+
const AKModalDialog = lazy(() => import('@atlaskit/modal-dialog'));
|
|
209
|
+
|
|
210
|
+
/* TODO: (from codemod) We have added "React.lazy" here. Feel free to change it to "lazy" or other named import depending upon how you imported. */
|
|
211
|
+
const ModalTitle = React.lazy(() => import("@atlaskit/modal-dialog/modal-title"));
|
|
212
|
+
|
|
213
|
+
/* TODO: (from codemod) We have added "React.lazy" here. Feel free to change it to "lazy" or other named import depending upon how you imported. */
|
|
214
|
+
const ModalHeader = React.lazy(() => import("@atlaskit/modal-dialog/modal-header"));
|
|
215
|
+
|
|
216
|
+
const AKModalTransition = lazy(() =>
|
|
217
|
+
import('@atlaskit/modal-dialog').then((module) => ({
|
|
218
|
+
default: module.ModalTransition,
|
|
219
|
+
})),
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
const App = () => {
|
|
223
|
+
return (
|
|
224
|
+
<AKModalTransition>
|
|
225
|
+
<AKModalDialog>
|
|
226
|
+
<ModalHeader>
|
|
227
|
+
<ModalTitle>
|
|
228
|
+
Configuration
|
|
229
|
+
</ModalTitle>
|
|
230
|
+
</ModalHeader>
|
|
231
|
+
|
|
232
|
+
<div>modal body</div>
|
|
233
|
+
</AKModalDialog>
|
|
234
|
+
</AKModalTransition>
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
`,
|
|
238
|
+
`should map the "heading" prop to ModalTitle when modal is dynamically imported and heading prop value is a string`,
|
|
239
|
+
);
|
|
240
|
+
defineInlineTest(
|
|
241
|
+
{ default: transformer, parser },
|
|
242
|
+
{},
|
|
243
|
+
`
|
|
244
|
+
import React from 'react';
|
|
245
|
+
const ModalTitle = 42;
|
|
246
|
+
const AKModalDialog = lazy(() => import('@atlaskit/modal-dialog'));
|
|
247
|
+
const ModalHeader = 'header';
|
|
248
|
+
|
|
249
|
+
const App = () => {
|
|
250
|
+
return (
|
|
251
|
+
<AKModalDialog heading={<div>my modal heading</div>}>
|
|
252
|
+
<div>modal body</div>
|
|
253
|
+
</AKModalDialog>
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
`,
|
|
257
|
+
`
|
|
258
|
+
import React from 'react';
|
|
259
|
+
const ModalTitle = 42;
|
|
260
|
+
const AKModalDialog = lazy(() => import('@atlaskit/modal-dialog'));
|
|
261
|
+
|
|
262
|
+
/* TODO: (from codemod) We have added "React.lazy" here. Feel free to change it to "lazy" or other named import depending upon how you imported. */
|
|
263
|
+
const AKModalTitle = React.lazy(() => import("@atlaskit/modal-dialog/modal-title"));
|
|
264
|
+
|
|
265
|
+
/* TODO: (from codemod) We have added "React.lazy" here. Feel free to change it to "lazy" or other named import depending upon how you imported. */
|
|
266
|
+
const AKModalHeader = React.lazy(() => import("@atlaskit/modal-dialog/modal-header"));
|
|
267
|
+
|
|
268
|
+
const ModalHeader = 'header';
|
|
269
|
+
|
|
270
|
+
const App = () => {
|
|
271
|
+
return (
|
|
272
|
+
(<AKModalDialog>
|
|
273
|
+
<AKModalHeader>
|
|
274
|
+
<AKModalTitle>
|
|
275
|
+
{<div>my modal heading</div>}
|
|
276
|
+
</AKModalTitle>
|
|
277
|
+
</AKModalHeader>
|
|
278
|
+
|
|
279
|
+
<div>modal body</div>
|
|
280
|
+
</AKModalDialog>)
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
`,
|
|
284
|
+
`should map the "heading" prop to ModalTitle when modal is dynamically imported and heading prop value is an expression and alias the import the when variable with same name exist in scope`,
|
|
285
|
+
);
|
|
286
|
+
|
|
287
|
+
defineInlineTest(
|
|
288
|
+
{ default: transformer, parser },
|
|
289
|
+
{},
|
|
290
|
+
`
|
|
291
|
+
import React from 'react';
|
|
292
|
+
import Modal, { ModalTransition } from '@atlaskit/modal-dialog';
|
|
293
|
+
|
|
294
|
+
const App = () => {
|
|
295
|
+
return <Modal heading="some heading" appearance="warning" testId="modal" isBlanketHidden />;
|
|
296
|
+
}
|
|
297
|
+
`,
|
|
298
|
+
`
|
|
299
|
+
import React from 'react';
|
|
300
|
+
import Modal, { ModalTransition, ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
301
|
+
|
|
302
|
+
const App = () => {
|
|
303
|
+
return (
|
|
304
|
+
<Modal appearance="warning" testId="modal" isBlanketHidden>
|
|
305
|
+
<ModalHeader>
|
|
306
|
+
<ModalTitle appearance="warning">
|
|
307
|
+
some heading
|
|
308
|
+
</ModalTitle>
|
|
309
|
+
</ModalHeader>
|
|
310
|
+
</Modal>
|
|
311
|
+
);
|
|
312
|
+
}
|
|
313
|
+
`,
|
|
314
|
+
`should map appearance prop declared as string to ModalTitle if exists`,
|
|
315
|
+
);
|
|
316
|
+
|
|
317
|
+
defineInlineTest(
|
|
318
|
+
{ default: transformer, parser },
|
|
319
|
+
{},
|
|
320
|
+
`
|
|
321
|
+
import React from 'react';
|
|
322
|
+
import Modal, { ModalTransition } from '@atlaskit/modal-dialog';
|
|
323
|
+
|
|
324
|
+
const App = (props) => {
|
|
325
|
+
return <Modal heading="some heading" appearance={props.appearance} testId="modal" isBlanketHidden />;
|
|
326
|
+
}
|
|
327
|
+
`,
|
|
328
|
+
`
|
|
329
|
+
import React from 'react';
|
|
330
|
+
import Modal, { ModalTransition, ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
331
|
+
|
|
332
|
+
const App = (props) => {
|
|
333
|
+
return (
|
|
334
|
+
<Modal appearance={props.appearance} testId="modal" isBlanketHidden>
|
|
335
|
+
<ModalHeader>
|
|
336
|
+
<ModalTitle appearance={props.appearance}>
|
|
337
|
+
some heading
|
|
338
|
+
</ModalTitle>
|
|
339
|
+
</ModalHeader>
|
|
340
|
+
</Modal>
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
`,
|
|
344
|
+
`should map appearance prop declared as variable to ModalTitle if exists`,
|
|
345
|
+
);
|
|
346
|
+
|
|
347
|
+
defineInlineTest(
|
|
348
|
+
{ default: transformer, parser },
|
|
349
|
+
{},
|
|
350
|
+
`
|
|
351
|
+
import React from 'react';
|
|
352
|
+
import Modal, { ModalTransition } from '@atlaskit/modal-dialog';
|
|
353
|
+
|
|
354
|
+
const App = () => {
|
|
355
|
+
return <Modal heading="some heading" isHeadingMultiline={true} testId="modal" isBlanketHidden />;
|
|
356
|
+
}
|
|
357
|
+
`,
|
|
358
|
+
`
|
|
359
|
+
import React from 'react';
|
|
360
|
+
import Modal, { ModalTransition, ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
361
|
+
|
|
362
|
+
const App = () => {
|
|
363
|
+
return (
|
|
364
|
+
<Modal testId="modal" isBlanketHidden>
|
|
365
|
+
<ModalHeader>
|
|
366
|
+
<ModalTitle isMultiline={true}>
|
|
367
|
+
some heading
|
|
368
|
+
</ModalTitle>
|
|
369
|
+
</ModalHeader>
|
|
370
|
+
</Modal>
|
|
371
|
+
);
|
|
372
|
+
}
|
|
373
|
+
`,
|
|
374
|
+
`should map isHeadingMultiline prop declared as boolean to ModalTitle and removes it from ModalDialog`,
|
|
375
|
+
);
|
|
376
|
+
|
|
377
|
+
defineInlineTest(
|
|
378
|
+
{ default: transformer, parser },
|
|
379
|
+
{},
|
|
380
|
+
`
|
|
381
|
+
import React from 'react';
|
|
382
|
+
import Modal, { ModalTransition } from '@atlaskit/modal-dialog';
|
|
383
|
+
|
|
384
|
+
const App = () => {
|
|
385
|
+
return <Modal heading="some heading" isHeadingMultiline testId="modal" isBlanketHidden />;
|
|
386
|
+
}
|
|
387
|
+
`,
|
|
388
|
+
`
|
|
389
|
+
import React from 'react';
|
|
390
|
+
import Modal, { ModalTransition, ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
391
|
+
|
|
392
|
+
const App = () => {
|
|
393
|
+
return (
|
|
394
|
+
<Modal testId="modal" isBlanketHidden>
|
|
395
|
+
<ModalHeader>
|
|
396
|
+
<ModalTitle isMultiline>
|
|
397
|
+
some heading
|
|
398
|
+
</ModalTitle>
|
|
399
|
+
</ModalHeader>
|
|
400
|
+
</Modal>
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
`,
|
|
404
|
+
`should map isHeadingMultiline prop declared without value to ModalTitle and removes it from ModalDialog`,
|
|
405
|
+
);
|
|
406
|
+
|
|
407
|
+
defineInlineTest(
|
|
408
|
+
{ default: transformer, parser },
|
|
409
|
+
{},
|
|
410
|
+
`
|
|
411
|
+
import React from 'react';
|
|
412
|
+
import Modal, { ModalTransition } from '@atlaskit/modal-dialog';
|
|
413
|
+
|
|
414
|
+
const App = (props) => {
|
|
415
|
+
return <Modal heading="some heading" isHeadingMultiline={props.isMultiline} testId="modal" isBlanketHidden />;
|
|
416
|
+
}
|
|
417
|
+
`,
|
|
418
|
+
`
|
|
419
|
+
import React from 'react';
|
|
420
|
+
import Modal, { ModalTransition, ModalTitle, ModalHeader } from "@atlaskit/modal-dialog";
|
|
421
|
+
|
|
422
|
+
const App = (props) => {
|
|
423
|
+
return (
|
|
424
|
+
<Modal testId="modal" isBlanketHidden>
|
|
425
|
+
<ModalHeader>
|
|
426
|
+
<ModalTitle isMultiline={props.isMultiline}>
|
|
427
|
+
some heading
|
|
428
|
+
</ModalTitle>
|
|
429
|
+
</ModalHeader>
|
|
430
|
+
</Modal>
|
|
431
|
+
);
|
|
432
|
+
}
|
|
433
|
+
`,
|
|
434
|
+
`should map isHeadingMultiline prop declared as variable to ModalTitle and removes it from ModalDialog`,
|
|
435
|
+
);
|
|
436
|
+
});
|
|
437
|
+
});
|
|
438
|
+
});
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { createTransformer } from '@atlaskit/codemod-utils';
|
|
2
|
+
|
|
3
|
+
import { removeAppearanceProp } from '../migrations/remove-appearance-prop';
|
|
4
|
+
|
|
5
|
+
const transformer = createTransformer([removeAppearanceProp]);
|
|
6
|
+
|
|
7
|
+
const defineInlineTest = require('jscodeshift/dist/testUtils').defineInlineTest;
|
|
8
|
+
|
|
9
|
+
describe('remove appearance prop', () => {
|
|
10
|
+
['tsx', 'babylon'].forEach((parser) => {
|
|
11
|
+
describe(`parser: ${parser}`, () => {
|
|
12
|
+
defineInlineTest(
|
|
13
|
+
{ default: transformer, parser },
|
|
14
|
+
{},
|
|
15
|
+
`
|
|
16
|
+
import React from 'react';
|
|
17
|
+
import ModalDialog from '@atlaskit/modal-dialog';
|
|
18
|
+
|
|
19
|
+
export default function modalDialog() {
|
|
20
|
+
return (
|
|
21
|
+
<ModalDialog
|
|
22
|
+
isBlanketHidden
|
|
23
|
+
isHeadingMultiline
|
|
24
|
+
appearance="warning"
|
|
25
|
+
>
|
|
26
|
+
<div>Content</div>
|
|
27
|
+
</ModalDialog>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
`,
|
|
31
|
+
`
|
|
32
|
+
import React from 'react';
|
|
33
|
+
import ModalDialog from '@atlaskit/modal-dialog';
|
|
34
|
+
|
|
35
|
+
export default function modalDialog() {
|
|
36
|
+
return (
|
|
37
|
+
<ModalDialog isBlanketHidden isHeadingMultiline>
|
|
38
|
+
<div>Content</div>
|
|
39
|
+
</ModalDialog>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
`,
|
|
43
|
+
'should remove appearance prop from ModalDialog component',
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
defineInlineTest(
|
|
47
|
+
{ default: transformer, parser },
|
|
48
|
+
{},
|
|
49
|
+
`
|
|
50
|
+
import React from 'react';
|
|
51
|
+
import ModalDialog from '@atlaskit/modal-dialog';
|
|
52
|
+
|
|
53
|
+
export default function modalDialog(props) {
|
|
54
|
+
return (
|
|
55
|
+
<>
|
|
56
|
+
<ModalDialog heading={props.heading} appearance="warning" isHeadingMultiline />
|
|
57
|
+
<ModalDialog heading={props.heading} />
|
|
58
|
+
<ModalDialog heading={props.heading} appearance={props.appearance} isBlanketHidden />
|
|
59
|
+
</>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
`,
|
|
63
|
+
`
|
|
64
|
+
import React from 'react';
|
|
65
|
+
import ModalDialog from '@atlaskit/modal-dialog';
|
|
66
|
+
|
|
67
|
+
export default function modalDialog(props) {
|
|
68
|
+
return <>
|
|
69
|
+
<ModalDialog heading={props.heading} isHeadingMultiline />
|
|
70
|
+
<ModalDialog heading={props.heading} />
|
|
71
|
+
<ModalDialog heading={props.heading} isBlanketHidden />
|
|
72
|
+
</>;
|
|
73
|
+
}
|
|
74
|
+
`,
|
|
75
|
+
'should remove appearance props from ALL ModalDialog components if there are multiple',
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|