Skip to content

Commit de09448

Browse files
committed
tech(css modules): rm getViewWidthClassName()
Override Object.hasOwnProperty() in global.d.ts
1 parent 9dfa6f3 commit de09448

5 files changed

Lines changed: 15 additions & 153 deletions

File tree

docs/ADAPTIVITY_GUIDE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
Для удобного получения `className` в зависимости от адаптивности есть такие функции как:
3030

3131
- [`getPlatformClassName()`](../packages/vkui/src/helpers/getPlatformClassName.ts)
32-
- [`getViewWidthClassName()`](../packages/vkui/src/helpers/getViewWidthClassName.ts)
3332

3433
Пример:
3534

packages/vkui/global.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,8 @@ interface MediaQueryList {
2323
options?: boolean | EventListenerOptions,
2424
): void;
2525
}
26+
27+
// см. https://github.com/microsoft/TypeScript/issues/18282
28+
interface Object {
29+
hasOwnProperty<T>(this: T, v: PropertyKey): v is keyof T;
30+
}

packages/vkui/src/components/SplitCol/SplitCol.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import * as React from 'react';
22
import { classNames } from '@vkontakte/vkjs';
3-
import { getViewWidthClassName } from '../../helpers/getViewWidthClassName';
43
import { useAdaptivity } from '../../hooks/useAdaptivity';
54
import { useMediaQueries } from '../../hooks/useMediaQueries';
65
import { useObjectMemo } from '../../hooks/useObjectMemo';
@@ -9,6 +8,14 @@ import { matchMediaListAddListener, matchMediaListRemoveListener } from '../../l
98
import { SplitColContext } from './SplitColContext';
109
import styles from './SplitCol.module.css';
1110

11+
const viewWidthClassNames = {
12+
none: styles['SplitCol--viewWidth-none'],
13+
[ViewWidth.SMALL_MOBILE]: styles['SplitCol--viewWidth-smallMobile'],
14+
[ViewWidth.MOBILE]: styles['SplitCol--viewWidth-mobile'],
15+
[ViewWidth.SMALL_TABLET]: styles['SplitCol--viewWidth-smallTablet'],
16+
[ViewWidth.TABLET]: styles['SplitCol--viewWidth-tabletPlus'],
17+
};
18+
1219
function useTransitionAnimate(animateProp?: boolean) {
1320
const { viewWidth } = useAdaptivity();
1421
const [animate, setAnimate] = React.useState(Boolean(animateProp));
@@ -80,7 +87,7 @@ export const SplitCol = (props: SplitColProps) => {
8087
...restProps
8188
} = props;
8289
const baseRef = React.useRef<HTMLDivElement>(null);
83-
const { viewWidth } = useAdaptivity();
90+
const { viewWidth = 'none' } = useAdaptivity();
8491
const animate = useTransitionAnimate(animateProp);
8592

8693
const contextValue = useObjectMemo({
@@ -100,7 +107,7 @@ export const SplitCol = (props: SplitColProps) => {
100107
ref={baseRef}
101108
className={classNames(
102109
styles['SplitCol'],
103-
getViewWidthClassName(styles['SplitCol'], viewWidth),
110+
viewWidthClassNames.hasOwnProperty(viewWidth) && viewWidthClassNames[viewWidth],
104111
spaced && styles['SplitCol--spaced'],
105112
spaced === undefined && styles['SplitCol--spaced-none'],
106113
autoSpaced && styles['SplitCol--spaced-auto'],

packages/vkui/src/helpers/getViewWidthClassName.test.ts

Lines changed: 0 additions & 88 deletions
This file was deleted.

packages/vkui/src/helpers/getViewWidthClassName.ts

Lines changed: 0 additions & 61 deletions
This file was deleted.

0 commit comments

Comments
 (0)