Skip to content

Commit 7c47922

Browse files
inomdzhonactions-user
authored andcommitted
fix(PanelHeaderButton): consider hoverMode and activeMode by props (#9413)
h1. Описание - Деструктурируем свойства `hoverMode` и `acitveMode` из пропов, чтобы учитывать пользовательские значения. - Дополнительно вынес `activeEffectDelay` в декструтуризацию пропсов и там задаю значение по умолчанию. h1. Release notes h1. Исправления - PanelHeaderButton: `hoverMode={undeined}` и/или `activeMode={undeined}` не перебивают значения по умолчанию
1 parent 3d4d1a2 commit 7c47922

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

packages/vkui/src/components/PanelHeaderButton/PanelHeaderButton.tsx

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ const platformClassNames = {
1616
vkcom: styles.vkcom,
1717
};
1818

19+
const defaultHoverMode = {
20+
ios: 'background',
21+
android: 'background',
22+
vkcom: styles.hover,
23+
};
24+
25+
const defaultActiveMode = {
26+
ios: 'opacity',
27+
android: 'background',
28+
vkcom: styles.active,
29+
};
30+
1931
export interface PanelHeaderButtonProps extends Omit<TappableOmitProps, 'label'> {
2032
/**
2133
* Флаг для обозначения первичной кнопки
@@ -59,29 +71,15 @@ export const PanelHeaderButton = ({
5971
children,
6072
primary = false,
6173
label,
74+
activeEffectDelay = 200,
75+
hoverMode,
76+
activeMode,
6277
...restProps
6378
}: PanelHeaderButtonProps): React.ReactNode => {
6479
const isPrimitive = isPrimitiveReactNode(children);
6580
const isPrimitiveLabel = isPrimitiveReactNode(label);
6681
const platform = usePlatform();
6782

68-
let hoverMode;
69-
let activeMode;
70-
71-
switch (platform) {
72-
case 'ios':
73-
hoverMode = 'background';
74-
activeMode = 'opacity';
75-
break;
76-
case 'vkcom':
77-
hoverMode = styles.hover;
78-
activeMode = styles.active;
79-
break;
80-
default:
81-
hoverMode = 'background';
82-
activeMode = 'background';
83-
}
84-
8583
if (process.env.NODE_ENV === 'development') {
8684
/* istanbul ignore next: проверка в dev mode, тест на hasAccessibleName() есть в lib/accessibility.test.tsx */
8785
const isAccessible = hasAccessibleName({
@@ -100,9 +98,9 @@ export const PanelHeaderButton = ({
10098
return (
10199
<Tappable
102100
Component={restProps.href ? 'a' : 'button'}
103-
hoverMode={hoverMode}
104-
activeEffectDelay={200}
105-
activeMode={activeMode}
101+
activeEffectDelay={activeEffectDelay}
102+
hoverMode={hoverMode ? hoverMode : defaultHoverMode[platform]}
103+
activeMode={activeMode ? activeMode : defaultActiveMode[platform]}
106104
{...restProps}
107105
baseClassName={classNames(
108106
styles.host,

0 commit comments

Comments
 (0)