diff --git a/packages/codemods/src/codemod-helpers.ts b/packages/codemods/src/codemod-helpers.ts index 7bb059ca89..3e99db0e5c 100644 --- a/packages/codemods/src/codemod-helpers.ts +++ b/packages/codemods/src/codemod-helpers.ts @@ -105,6 +105,23 @@ export function renameProp( }); } +export function renameSubComponent( + j: JSCodeshift, + source: Collection, + componentName: string, + prevSubcomponentName: string, + newSubcomponentName: string, +) { + source + .find(j.MemberExpression, { + object: { name: componentName }, + property: { name: prevSubcomponentName }, + }) + .replaceWith( + j.memberExpression(j.identifier(componentName), j.identifier(newSubcomponentName)), + ); +} + export function swapBooleanValue( api: API, source: Collection, diff --git a/packages/codemods/src/transforms/v7/__testfixtures__/placeholder/basic.input.tsx b/packages/codemods/src/transforms/v7/__testfixtures__/placeholder/basic.input.tsx new file mode 100644 index 0000000000..3c5206757d --- /dev/null +++ b/packages/codemods/src/transforms/v7/__testfixtures__/placeholder/basic.input.tsx @@ -0,0 +1,38 @@ +import { Button,ButtonGroup, Icon56UserAddOutline, Icon56UsersOutline, Placeholder } from '@vkontakte/vkui'; +import React from 'react'; + +const App = () => { + return ( + + {/* Проверяем переименование свойства header */} + } + header={} + > + Подключите сообщества, от которых Вы хотите получать уведомления + + + {/* Проверяем переименование подкомпонента Header */} + + Find friends + + + {/* Проверяем переименование подкомпонента Header и Text */} + + + + + Find friends + The people you add as your friends will be displayed here + + + + + + + + + ); +}; diff --git a/packages/codemods/src/transforms/v7/__tests__/__snapshots__/placeholder.ts.snap b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/placeholder.ts.snap new file mode 100644 index 0000000000..2aa230f59f --- /dev/null +++ b/packages/codemods/src/transforms/v7/__tests__/__snapshots__/placeholder.ts.snap @@ -0,0 +1,40 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`placeholder transforms correctly 1`] = ` +"import { Button,ButtonGroup, Icon56UserAddOutline, Icon56UsersOutline, Placeholder } from '@vkontakte/vkui'; +import React from 'react'; + +const App = () => { + return ( + ( + {/* Проверяем переименование свойства header */} + } + title={} + > + Подключите сообщества, от которых Вы хотите получать уведомления + + {/* Проверяем переименование подкомпонента Header */} + + Find friends + + {/* Проверяем переименование подкомпонента Header и Text */} + + + + + Find friends + The people you add as your friends will be displayed here + + + + + + + + ) + ); +};" +`; diff --git a/packages/codemods/src/transforms/v7/__tests__/placeholder.ts b/packages/codemods/src/transforms/v7/__tests__/placeholder.ts new file mode 100644 index 0000000000..260830abe4 --- /dev/null +++ b/packages/codemods/src/transforms/v7/__tests__/placeholder.ts @@ -0,0 +1,12 @@ +jest.autoMockOff(); + +import { defineSnapshotTestFromFixture } from '../../../testHelpers/testHelper'; + +const name = 'placeholder'; +const fixtures = ['basic'] as const; + +describe(name, () => { + fixtures.forEach((test) => + defineSnapshotTestFromFixture(__dirname, name, global.TRANSFORM_OPTIONS, `${name}/${test}`), + ); +}); diff --git a/packages/codemods/src/transforms/v7/placeholder.ts b/packages/codemods/src/transforms/v7/placeholder.ts new file mode 100644 index 0000000000..9ece8c564d --- /dev/null +++ b/packages/codemods/src/transforms/v7/placeholder.ts @@ -0,0 +1,23 @@ +import { API, FileInfo } from 'jscodeshift'; +import { getImportInfo, renameProp, renameSubComponent } from '../../codemod-helpers'; +import { JSCodeShiftOptions } from '../../types'; + +export const parser = 'tsx'; + +export default function transformer(file: FileInfo, api: API, options: JSCodeShiftOptions) { + const { alias } = options; + const j = api.jscodeshift; + const source = j(file.source); + const { localName } = getImportInfo(j, file, 'Placeholder', alias); + + if (!localName) { + return source.toSource(); + } + + renameProp(j, source, localName, { header: 'title' }); + + renameSubComponent(j, source, localName, 'Header', 'Title'); + renameSubComponent(j, source, localName, 'Text', 'Description'); + + return source.toSource(); +} diff --git a/packages/vkui/src/components/DropZone/DropZone.e2e-playground.tsx b/packages/vkui/src/components/DropZone/DropZone.e2e-playground.tsx index fea1c31831..bcf47902ca 100644 --- a/packages/vkui/src/components/DropZone/DropZone.e2e-playground.tsx +++ b/packages/vkui/src/components/DropZone/DropZone.e2e-playground.tsx @@ -11,10 +11,10 @@ export const DropZonePlayground = (props: ComponentPlaygroundProps) => ( - Быстрая отправка - + Быстрая отправка + Перенесите файл сюда для быстрой отправки. В таком случае изображения будут сжаты. - + )} diff --git a/packages/vkui/src/components/DropZone/DropZone.stories.tsx b/packages/vkui/src/components/DropZone/DropZone.stories.tsx index a28c2f6fa7..0571ea4e68 100644 --- a/packages/vkui/src/components/DropZone/DropZone.stories.tsx +++ b/packages/vkui/src/components/DropZone/DropZone.stories.tsx @@ -22,10 +22,10 @@ export const Playground: Story = { - Быстрая отправка - + Быстрая отправка + Перенесите файл сюда для быстрой отправки. В таком случае изображения будут сжаты. - + ), diff --git a/packages/vkui/src/components/DropZone/Readme.md b/packages/vkui/src/components/DropZone/Readme.md index d8c54224c9..ffb9a739f2 100644 --- a/packages/vkui/src/components/DropZone/Readme.md +++ b/packages/vkui/src/components/DropZone/Readme.md @@ -4,10 +4,10 @@ const Item = ({ active }) => ( - Быстрая отправка - + Быстрая отправка + Перенесите файл сюда для быстрой отправки. В таком случае изображения будут сжаты. - + ); @@ -40,10 +40,10 @@ const Item = ({ active }) => ( - Быстрая отправка - + Быстрая отправка + Перенесите файл сюда для быстрой отправки. В таком случае изображения будут сжаты. - + ); diff --git a/packages/vkui/src/components/DropZone/components/DropZoneGrid.e2e-playground.tsx b/packages/vkui/src/components/DropZone/components/DropZoneGrid.e2e-playground.tsx index 0cbb66647a..f86a5441a9 100644 --- a/packages/vkui/src/components/DropZone/components/DropZoneGrid.e2e-playground.tsx +++ b/packages/vkui/src/components/DropZone/components/DropZoneGrid.e2e-playground.tsx @@ -10,10 +10,10 @@ const Item = () => ( - Быстрая отправка - + Быстрая отправка + Перенесите файл сюда для быстрой отправки. В таком случае изображения будут сжаты. - + ); diff --git a/packages/vkui/src/components/Gradient/Readme.md b/packages/vkui/src/components/Gradient/Readme.md index 01b37acbe5..3660f706ce 100644 --- a/packages/vkui/src/components/Gradient/Readme.md +++ b/packages/vkui/src/components/Gradient/Readme.md @@ -15,7 +15,7 @@ const Example = () => { } - header="Алексей Мазелюк" + title="Алексей Мазелюк" action={