Skip to content

Commit 246678e

Browse files
authored
chore: add codemod for S2 Picker selection props (adobe#9900)
* chore: add codemod for S2 Picker selection props * add defaultSelectedKey -> defaultValue
1 parent 5f8ddf3 commit 246678e

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

packages/dev/codemods/src/s1-to-s2/__tests__/__snapshots__/picker.test.ts.snap

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,25 @@ exports[`handles sections 1`] = `
149149
</Picker>"
150150
`;
151151

152+
exports[`renames deprecated selection props 1`] = `
153+
"import { PickerItem, Picker } from "@react-spectrum/s2";
154+
let selectedKey = 'cat';
155+
<div>
156+
<Picker label="Pets" onChange={console.log} value="dog">
157+
<PickerItem id="dog">Dog</PickerItem>
158+
<PickerItem id="cat">Cat</PickerItem>
159+
</Picker>
160+
<Picker label="Pets" onChange={(key) => console.log(key)} value={selectedKey}>
161+
<PickerItem id="dog">Dog</PickerItem>
162+
<PickerItem id="cat">Cat</PickerItem>
163+
</Picker>
164+
<Picker label="Pets" defaultValue="cat">
165+
<PickerItem id="dog">Dog</PickerItem>
166+
<PickerItem id="cat">Cat</PickerItem>
167+
</Picker>
168+
</div>"
169+
`;
170+
152171
exports[`replaces isLoading with loadingState and keeps onLoadMore 1`] = `
153172
"import { PickerItem, Picker } from "@react-spectrum/s2";
154173
<>

packages/dev/codemods/src/s1-to-s2/__tests__/picker.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,3 +162,22 @@ test('replaces isLoading with loadingState and keeps onLoadMore', `
162162
</Picker>
163163
</>
164164
`);
165+
166+
test('renames deprecated selection props', `
167+
import {Picker, Item} from '@adobe/react-spectrum';
168+
let selectedKey = 'cat';
169+
<div>
170+
<Picker label="Pets" onSelectionChange={console.log} selectedKey="dog">
171+
<Item key="dog">Dog</Item>
172+
<Item key="cat">Cat</Item>
173+
</Picker>
174+
<Picker label="Pets" onSelectionChange={(key) => console.log(key)} selectedKey={selectedKey}>
175+
<Item key="dog">Dog</Item>
176+
<Item key="cat">Cat</Item>
177+
</Picker>
178+
<Picker label="Pets" defaultSelectedKey="cat">
179+
<Item key="dog">Dog</Item>
180+
<Item key="cat">Cat</Item>
181+
</Picker>
182+
</div>
183+
`);

packages/dev/codemods/src/s1-to-s2/src/codemods/components/Picker/transform.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import * as t from '@babel/types';
1414
* - Change validationState="invalid" to isInvalid.
1515
* - Remove validationState="valid" (it is no longer supported in Spectrum 2).
1616
* - Replace isLoading with loadingState.
17+
* - Rename onSelectionChange to onChange.
18+
* - Rename selectedKey to value.
19+
* - Rename defaultSelectedKey to defaultValue.
1720
*/
1821
export default function transformPicker(path: NodePath<t.JSXElement>): void {
1922
// Change menuWidth value from a DimensionValue to a pixel value
@@ -39,4 +42,22 @@ export default function transformPicker(path: NodePath<t.JSXElement>): void {
3942
newPropName: 'loadingState',
4043
comment: 'Replace boolean passed to isLoading with appropriate loadingState.'
4144
});
45+
46+
// Rename onSelectionChange to onChange
47+
updatePropName(path, {
48+
oldPropName: 'onSelectionChange',
49+
newPropName: 'onChange'
50+
});
51+
52+
// Rename selectedKey to value
53+
updatePropName(path, {
54+
oldPropName: 'selectedKey',
55+
newPropName: 'value'
56+
});
57+
58+
// Rename defaultSelectedKey to defaultValue
59+
updatePropName(path, {
60+
oldPropName: 'defaultSelectedKey',
61+
newPropName: 'defaultValue'
62+
});
4263
}

0 commit comments

Comments
 (0)