Skip to content

Commit

Permalink
refactor(Separator): rename mode to appearance (#7687)
Browse files Browse the repository at this point in the history
  • Loading branch information
BlackySoul authored Oct 1, 2024
1 parent 8614595 commit 0017fb8
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 17 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { Separator } from '@vkontakte/vkui';
import React from 'react';

const App = () => {
return (
<React.Fragment>
<Separator mode="primary" />
<Separator mode="primary-alpha" wide />
<Separator mode={"secondary"} />
</React.Fragment>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`separator transforms correctly 1`] = `
"import { Separator } from '@vkontakte/vkui';
import React from 'react';
const App = () => {
return (
(<React.Fragment>
<Separator appearance="primary" />
<Separator appearance="primary-alpha" wide />
<Separator appearance={"secondary"} />
</React.Fragment>)
);
};"
`;
12 changes: 12 additions & 0 deletions packages/codemods/src/transforms/v7/__tests__/separator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
jest.autoMockOff();

import { defineSnapshotTestFromFixture } from '../../../testHelpers/testHelper';

const name = 'separator';
const fixtures = ['basic'] as const;

describe(name, () => {
fixtures.forEach((test) =>
defineSnapshotTestFromFixture(__dirname, name, global.TRANSFORM_OPTIONS, `${name}/${test}`),
);
});
19 changes: 19 additions & 0 deletions packages/codemods/src/transforms/v7/separator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { API, FileInfo } from 'jscodeshift';
import { getImportInfo, renameProp } from '../../codemod-helpers';
import { JSCodeShiftOptions } from '../../types';

export const parser = 'tsx';

const componentName = 'Separator';
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, componentName, alias);

if (localName) {
renameProp(j, source, localName, { mode: 'appearance' });
}

return source.toSource();
}
2 changes: 1 addition & 1 deletion packages/vkui/src/components/Separator/Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<Panel id="separator">
<PanelHeader>Separator</PanelHeader>

<Group header={<Header mode="secondary">Сепаратор</Header>}>
<Group>
<Cell before={<Icon28Notifications />}>Уведомления</Cell>
<Cell before={<Icon28BlockOutline />}>Не беспокоить</Cell>

Expand Down
6 changes: 3 additions & 3 deletions packages/vkui/src/components/Separator/Separator.module.css
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
.modePrimary {
.appearancePrimary {
color: var(--vkui--color_separator_primary);
}

.modeSecondary {
.appearanceSecondary {
color: var(--vkui--color_separator_secondary);
}

.modePrimaryAlpha {
.appearancePrimaryAlpha {
color: var(--vkui--color_separator_primary_alpha);
}

Expand Down
12 changes: 6 additions & 6 deletions packages/vkui/src/components/Separator/Separator.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ describe('Separator', () => {

it('should have separator mode className', () => {
const getSeparator = () => screen.getByTestId('separator');
const { rerender } = render(<Separator mode="primary" data-testid="separator" />);
const { rerender } = render(<Separator appearance="primary" data-testid="separator" />);

expect(getSeparator()).toHaveClass(styles.modePrimary);
expect(getSeparator()).toHaveClass(styles.appearancePrimary);

rerender(<Separator mode="secondary" data-testid="separator" />);
rerender(<Separator appearance="secondary" data-testid="separator" />);

expect(getSeparator()).toHaveClass(styles.modeSecondary);
expect(getSeparator()).toHaveClass(styles.appearanceSecondary);

rerender(<Separator mode="primary-alpha" data-testid="separator" />);
rerender(<Separator appearance="primary-alpha" data-testid="separator" />);

expect(getSeparator()).toHaveClass(styles.modePrimaryAlpha);
expect(getSeparator()).toHaveClass(styles.appearancePrimaryAlpha);
});
});
14 changes: 7 additions & 7 deletions packages/vkui/src/components/Separator/Separator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,30 @@ export interface SeparatorProps extends HTMLAttributesWithRootRef<HTMLDivElement
/**
* Стиль отображения компонента
*/
mode?: 'primary' | 'secondary' | 'primary-alpha';
appearance?: 'primary' | 'secondary' | 'primary-alpha';
/**
* С этим свойством компонент не будет иметь отступы слева и справа
*/
wide?: boolean;
}

const modeClassNames = {
'primary': styles.modePrimary,
'secondary': styles.modeSecondary,
'primary-alpha': styles.modePrimaryAlpha,
const appearanceClassNames = {
'primary': styles.appearancePrimary,
'secondary': styles.appearanceSecondary,
'primary-alpha': styles.appearancePrimaryAlpha,
};

/**
* @see https://vkcom.github.io/VKUI/#/Separator
*/
export const Separator = ({
wide,
mode = 'primary',
appearance = 'primary',
...restProps
}: SeparatorProps): React.ReactNode => (
<RootComponent
{...restProps}
baseClassName={classNames(!wide && styles.padded, modeClassNames[mode])}
baseClassName={classNames(!wide && styles.padded, appearanceClassNames[appearance])}
>
<hr className={styles.in} />
</RootComponent>
Expand Down

0 comments on commit 0017fb8

Please sign in to comment.