@pagopa/io-app-design-system 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/alert/Alert.js +10 -31
- package/lib/commonjs/components/alert/Alert.js.map +1 -1
- package/lib/commonjs/components/alert/AlertEdgeToEdge.js +9 -29
- package/lib/commonjs/components/alert/AlertEdgeToEdge.js.map +1 -1
- package/lib/commonjs/components/banner/Banner.js +10 -34
- package/lib/commonjs/components/banner/Banner.js.map +1 -1
- package/lib/commonjs/components/banner/__test__/__snapshots__/banner.test.tsx.snap +1 -1
- package/lib/commonjs/components/buttons/ButtonLink.js +20 -53
- package/lib/commonjs/components/buttons/ButtonLink.js.map +1 -1
- package/lib/commonjs/components/buttons/ButtonOutline.js +24 -44
- package/lib/commonjs/components/buttons/ButtonOutline.js.map +1 -1
- package/lib/commonjs/components/buttons/ButtonSolid.js +14 -39
- package/lib/commonjs/components/buttons/ButtonSolid.js.map +1 -1
- package/lib/commonjs/components/buttons/IconButton.js +13 -32
- package/lib/commonjs/components/buttons/IconButton.js.map +1 -1
- package/lib/commonjs/components/buttons/IconButtonContained.js +19 -42
- package/lib/commonjs/components/buttons/IconButtonContained.js.map +1 -1
- package/lib/commonjs/components/buttons/IconButtonSolid.js +15 -31
- package/lib/commonjs/components/buttons/IconButtonSolid.js.map +1 -1
- package/lib/commonjs/components/buttons/__test__/__snapshots__/button.test.tsx.snap +34 -10
- package/lib/commonjs/components/layout/index.js +0 -11
- package/lib/commonjs/components/layout/index.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemAction.js +16 -41
- package/lib/commonjs/components/listitems/ListItemAction.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemCheckbox.js +13 -41
- package/lib/commonjs/components/listitems/ListItemCheckbox.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemHeader.js +2 -2
- package/lib/commonjs/components/listitems/ListItemHeader.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemInfoCopy.js +15 -43
- package/lib/commonjs/components/listitems/ListItemInfoCopy.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemNav.js +17 -48
- package/lib/commonjs/components/listitems/ListItemNav.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemNavAlert.js +19 -50
- package/lib/commonjs/components/listitems/ListItemNavAlert.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemRadio.js +20 -50
- package/lib/commonjs/components/listitems/ListItemRadio.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemRadioWithAmount.js +13 -25
- package/lib/commonjs/components/listitems/ListItemRadioWithAmount.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemTransaction.js +4 -5
- package/lib/commonjs/components/listitems/ListItemTransaction.js.map +1 -1
- package/lib/commonjs/components/listitems/{PressableListItemsBase.js → PressableListItemBase.js} +7 -7
- package/lib/commonjs/components/listitems/PressableListItemBase.js.map +1 -0
- package/lib/commonjs/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +45 -81
- package/lib/commonjs/components/listitems/__test__/listitem.test.js +3 -3
- package/lib/commonjs/components/listitems/__test__/listitem.test.js.map +1 -1
- package/lib/commonjs/components/listitems/index.js +11 -11
- package/lib/commonjs/components/listitems/index.js.map +1 -1
- package/lib/commonjs/components/modules/ModuleCredential.js +35 -28
- package/lib/commonjs/components/modules/ModuleCredential.js.map +1 -1
- package/lib/commonjs/components/modules/PressableModuleBase.js +17 -11
- package/lib/commonjs/components/modules/PressableModuleBase.js.map +1 -1
- package/lib/commonjs/components/modules/index.js +8 -8
- package/lib/commonjs/components/modules/index.js.map +1 -1
- package/lib/commonjs/components/numberpad/NumberButton.js +12 -28
- package/lib/commonjs/components/numberpad/NumberButton.js.map +1 -1
- package/lib/commonjs/components/numberpad/__test__/__snapshots__/NumberPad.test.tsx.snap +20 -0
- package/lib/commonjs/components/stack/Stack.js +4 -3
- package/lib/commonjs/components/stack/Stack.js.map +1 -1
- package/lib/commonjs/components/tabs/TabItem.js +15 -21
- package/lib/commonjs/components/tabs/TabItem.js.map +1 -1
- package/lib/commonjs/components/typography/H6.js +1 -1
- package/lib/commonjs/components/typography/__test__/__snapshots__/typography.test.tsx.snap +1 -1
- package/lib/commonjs/core/IOAnimations.js +6 -12
- package/lib/commonjs/core/IOAnimations.js.map +1 -1
- package/lib/commonjs/hooks/index.js +28 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useListItemAnimation.js +40 -0
- package/lib/commonjs/hooks/useListItemAnimation.js.map +1 -0
- package/lib/commonjs/hooks/useScaleAnimation.js +36 -0
- package/lib/commonjs/hooks/useScaleAnimation.js.map +1 -0
- package/lib/commonjs/index.js +11 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/fonts.js +1 -1
- package/lib/commonjs/utils/hooks/index.js +28 -0
- package/lib/commonjs/utils/hooks/index.js.map +1 -0
- package/lib/commonjs/utils/hooks/useSpringPressProgressValue.js +5 -7
- package/lib/commonjs/utils/hooks/useSpringPressProgressValue.js.map +1 -1
- package/lib/module/components/alert/Alert.js +10 -32
- package/lib/module/components/alert/Alert.js.map +1 -1
- package/lib/module/components/alert/AlertEdgeToEdge.js +10 -31
- package/lib/module/components/alert/AlertEdgeToEdge.js.map +1 -1
- package/lib/module/components/banner/Banner.js +10 -33
- package/lib/module/components/banner/Banner.js.map +1 -1
- package/lib/module/components/banner/__test__/__snapshots__/banner.test.tsx.snap +1 -1
- package/lib/module/components/buttons/ButtonLink.js +23 -56
- package/lib/module/components/buttons/ButtonLink.js.map +1 -1
- package/lib/module/components/buttons/ButtonOutline.js +27 -47
- package/lib/module/components/buttons/ButtonOutline.js.map +1 -1
- package/lib/module/components/buttons/ButtonSolid.js +17 -42
- package/lib/module/components/buttons/ButtonSolid.js.map +1 -1
- package/lib/module/components/buttons/IconButton.js +16 -35
- package/lib/module/components/buttons/IconButton.js.map +1 -1
- package/lib/module/components/buttons/IconButtonContained.js +21 -45
- package/lib/module/components/buttons/IconButtonContained.js.map +1 -1
- package/lib/module/components/buttons/IconButtonSolid.js +17 -34
- package/lib/module/components/buttons/IconButtonSolid.js.map +1 -1
- package/lib/module/components/buttons/__test__/__snapshots__/button.test.tsx.snap +34 -10
- package/lib/module/components/layout/index.js +0 -1
- package/lib/module/components/layout/index.js.map +1 -1
- package/lib/module/components/listitems/ListItemAction.js +17 -43
- package/lib/module/components/listitems/ListItemAction.js.map +1 -1
- package/lib/module/components/listitems/ListItemCheckbox.js +15 -43
- package/lib/module/components/listitems/ListItemCheckbox.js.map +1 -1
- package/lib/module/components/listitems/ListItemHeader.js +2 -2
- package/lib/module/components/listitems/ListItemHeader.js.map +1 -1
- package/lib/module/components/listitems/ListItemInfoCopy.js +16 -45
- package/lib/module/components/listitems/ListItemInfoCopy.js.map +1 -1
- package/lib/module/components/listitems/ListItemNav.js +17 -47
- package/lib/module/components/listitems/ListItemNav.js.map +1 -1
- package/lib/module/components/listitems/ListItemNavAlert.js +19 -49
- package/lib/module/components/listitems/ListItemNavAlert.js.map +1 -1
- package/lib/module/components/listitems/ListItemRadio.js +22 -52
- package/lib/module/components/listitems/ListItemRadio.js.map +1 -1
- package/lib/module/components/listitems/ListItemRadioWithAmount.js +14 -26
- package/lib/module/components/listitems/ListItemRadioWithAmount.js.map +1 -1
- package/lib/module/components/listitems/ListItemTransaction.js +3 -4
- package/lib/module/components/listitems/ListItemTransaction.js.map +1 -1
- package/lib/module/components/listitems/{PressableListItemsBase.js → PressableListItemBase.js} +7 -7
- package/lib/module/components/listitems/PressableListItemBase.js.map +1 -0
- package/lib/module/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +45 -81
- package/lib/module/components/listitems/__test__/listitem.test.js +1 -1
- package/lib/module/components/listitems/__test__/listitem.test.js.map +1 -1
- package/lib/module/components/listitems/index.js +1 -1
- package/lib/module/components/listitems/index.js.map +1 -1
- package/lib/module/components/modules/ModuleCredential.js +36 -29
- package/lib/module/components/modules/ModuleCredential.js.map +1 -1
- package/lib/module/components/modules/PressableModuleBase.js +17 -10
- package/lib/module/components/modules/PressableModuleBase.js.map +1 -1
- package/lib/module/components/modules/index.js +1 -1
- package/lib/module/components/modules/index.js.map +1 -1
- package/lib/module/components/numberpad/NumberButton.js +14 -30
- package/lib/module/components/numberpad/NumberButton.js.map +1 -1
- package/lib/module/components/numberpad/__test__/__snapshots__/NumberPad.test.tsx.snap +20 -0
- package/lib/module/components/stack/Stack.js +4 -3
- package/lib/module/components/stack/Stack.js.map +1 -1
- package/lib/module/components/tabs/TabItem.js +18 -24
- package/lib/module/components/tabs/TabItem.js.map +1 -1
- package/lib/module/components/typography/H6.js +1 -1
- package/lib/module/components/typography/__test__/__snapshots__/typography.test.tsx.snap +1 -1
- package/lib/module/core/IOAnimations.js +4 -10
- package/lib/module/core/IOAnimations.js.map +1 -1
- package/lib/module/hooks/index.js +3 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useListItemAnimation.js +33 -0
- package/lib/module/hooks/useListItemAnimation.js.map +1 -0
- package/lib/module/hooks/useScaleAnimation.js +29 -0
- package/lib/module/hooks/useScaleAnimation.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/fonts.js +1 -1
- package/lib/module/utils/hooks/index.js +3 -0
- package/lib/module/utils/hooks/index.js.map +1 -0
- package/lib/module/utils/hooks/useSpringPressProgressValue.js +5 -5
- package/lib/module/utils/hooks/useSpringPressProgressValue.js.map +1 -1
- package/lib/typescript/components/alert/Alert.d.ts.map +1 -1
- package/lib/typescript/components/alert/AlertEdgeToEdge.d.ts.map +1 -1
- package/lib/typescript/components/banner/Banner.d.ts.map +1 -1
- package/lib/typescript/components/buttons/ButtonLink.d.ts.map +1 -1
- package/lib/typescript/components/buttons/ButtonOutline.d.ts.map +1 -1
- package/lib/typescript/components/buttons/ButtonSolid.d.ts.map +1 -1
- package/lib/typescript/components/buttons/IconButton.d.ts.map +1 -1
- package/lib/typescript/components/buttons/IconButtonContained.d.ts.map +1 -1
- package/lib/typescript/components/buttons/IconButtonSolid.d.ts.map +1 -1
- package/lib/typescript/components/layout/index.d.ts +0 -1
- package/lib/typescript/components/layout/index.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemAction.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemCheckbox.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemInfoCopy.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemNav.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemNavAlert.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemRadio.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemRadioWithAmount.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemTransaction.d.ts +1 -1
- package/lib/typescript/components/listitems/ListItemTransaction.d.ts.map +1 -1
- package/lib/typescript/components/listitems/{PressableListItemsBase.d.ts → PressableListItemBase.d.ts} +3 -2
- package/lib/typescript/components/listitems/PressableListItemBase.d.ts.map +1 -0
- package/lib/typescript/components/listitems/index.d.ts +1 -1
- package/lib/typescript/components/listitems/index.d.ts.map +1 -1
- package/lib/typescript/components/modules/ModuleCredential.d.ts +2 -2
- package/lib/typescript/components/modules/ModuleCredential.d.ts.map +1 -1
- package/lib/typescript/components/modules/PressableModuleBase.d.ts.map +1 -1
- package/lib/typescript/components/modules/index.d.ts +1 -1
- package/lib/typescript/components/modules/index.d.ts.map +1 -1
- package/lib/typescript/components/numberpad/NumberButton.d.ts.map +1 -1
- package/lib/typescript/components/stack/Stack.d.ts +4 -3
- package/lib/typescript/components/stack/Stack.d.ts.map +1 -1
- package/lib/typescript/components/tabs/TabItem.d.ts.map +1 -1
- package/lib/typescript/core/IOAnimations.d.ts +6 -10
- package/lib/typescript/core/IOAnimations.d.ts.map +1 -1
- package/lib/typescript/hooks/index.d.ts +3 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -0
- package/lib/typescript/hooks/useListItemAnimation.d.ts +10 -0
- package/lib/typescript/hooks/useListItemAnimation.d.ts.map +1 -0
- package/lib/typescript/hooks/useScaleAnimation.d.ts +10 -0
- package/lib/typescript/hooks/useScaleAnimation.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/fonts.d.ts +1 -1
- package/lib/typescript/utils/hooks/index.d.ts +3 -0
- package/lib/typescript/utils/hooks/index.d.ts.map +1 -0
- package/lib/typescript/utils/hooks/useSpringPressProgressValue.d.ts +7 -8
- package/lib/typescript/utils/hooks/useSpringPressProgressValue.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/alert/Alert.tsx +7 -46
- package/src/components/alert/AlertEdgeToEdge.tsx +6 -46
- package/src/components/banner/Banner.tsx +6 -52
- package/src/components/banner/__test__/__snapshots__/banner.test.tsx.snap +1 -1
- package/src/components/buttons/ButtonLink.tsx +32 -89
- package/src/components/buttons/ButtonOutline.tsx +26 -60
- package/src/components/buttons/ButtonSolid.tsx +11 -58
- package/src/components/buttons/IconButton.tsx +10 -47
- package/src/components/buttons/IconButtonContained.tsx +21 -57
- package/src/components/buttons/IconButtonSolid.tsx +15 -46
- package/src/components/buttons/__test__/__snapshots__/button.test.tsx.snap +34 -10
- package/src/components/layout/index.tsx +0 -1
- package/src/components/listitems/ListItemAction.tsx +11 -67
- package/src/components/listitems/ListItemCheckbox.tsx +10 -68
- package/src/components/listitems/ListItemHeader.tsx +2 -2
- package/src/components/listitems/ListItemInfoCopy.tsx +11 -71
- package/src/components/listitems/ListItemNav.tsx +13 -74
- package/src/components/listitems/ListItemNavAlert.tsx +18 -92
- package/src/components/listitems/ListItemRadio.tsx +14 -75
- package/src/components/listitems/ListItemRadioWithAmount.tsx +16 -31
- package/src/components/listitems/ListItemTransaction.tsx +3 -7
- package/src/components/listitems/{PressableListItemsBase.tsx → PressableListItemBase.tsx} +7 -6
- package/src/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +45 -81
- package/src/components/listitems/__test__/listitem.test.tsx +1 -1
- package/src/components/listitems/index.tsx +1 -1
- package/src/components/modules/ModuleCredential.tsx +49 -39
- package/src/components/modules/PressableModuleBase.tsx +15 -8
- package/src/components/modules/index.tsx +1 -1
- package/src/components/numberpad/NumberButton.tsx +12 -43
- package/src/components/numberpad/__test__/__snapshots__/NumberPad.test.tsx.snap +20 -0
- package/src/components/stack/Stack.tsx +11 -3
- package/src/components/tabs/TabItem.tsx +15 -29
- package/src/components/typography/H6.tsx +1 -1
- package/src/components/typography/__test__/__snapshots__/typography.test.tsx.snap +1 -1
- package/src/core/IOAnimations.ts +8 -10
- package/src/hooks/index.tsx +2 -0
- package/src/hooks/useListItemAnimation.tsx +59 -0
- package/src/hooks/useScaleAnimation.tsx +41 -0
- package/src/index.tsx +1 -0
- package/src/utils/fonts.ts +1 -1
- package/src/utils/hooks/index.tsx +2 -0
- package/src/utils/hooks/useSpringPressProgressValue.ts +14 -8
- package/lib/commonjs/components/layout/FooterWithButtons.js +0 -84
- package/lib/commonjs/components/layout/FooterWithButtons.js.map +0 -1
- package/lib/commonjs/components/listitems/PressableListItemsBase.js.map +0 -1
- package/lib/commonjs/components/listitems/hooks/useListItemSpringAnimation.js +0 -56
- package/lib/commonjs/components/listitems/hooks/useListItemSpringAnimation.js.map +0 -1
- package/lib/commonjs/components/modules/hooks/useModuleSpringAnimation.js +0 -41
- package/lib/commonjs/components/modules/hooks/useModuleSpringAnimation.js.map +0 -1
- package/lib/module/components/layout/FooterWithButtons.js +0 -75
- package/lib/module/components/layout/FooterWithButtons.js.map +0 -1
- package/lib/module/components/listitems/PressableListItemsBase.js.map +0 -1
- package/lib/module/components/listitems/hooks/useListItemSpringAnimation.js +0 -47
- package/lib/module/components/listitems/hooks/useListItemSpringAnimation.js.map +0 -1
- package/lib/module/components/modules/hooks/useModuleSpringAnimation.js +0 -34
- package/lib/module/components/modules/hooks/useModuleSpringAnimation.js.map +0 -1
- package/lib/typescript/components/layout/FooterWithButtons.d.ts +0 -16
- package/lib/typescript/components/layout/FooterWithButtons.d.ts.map +0 -1
- package/lib/typescript/components/listitems/PressableListItemsBase.d.ts.map +0 -1
- package/lib/typescript/components/listitems/hooks/useListItemSpringAnimation.d.ts +0 -13
- package/lib/typescript/components/listitems/hooks/useListItemSpringAnimation.d.ts.map +0 -1
- package/lib/typescript/components/modules/hooks/useModuleSpringAnimation.d.ts +0 -10
- package/lib/typescript/components/modules/hooks/useModuleSpringAnimation.d.ts.map +0 -1
- package/src/components/layout/FooterWithButtons.tsx +0 -90
- package/src/components/listitems/hooks/useListItemSpringAnimation.ts +0 -72
- package/src/components/modules/hooks/useModuleSpringAnimation.ts +0 -49
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useMemo } from "react";
|
|
2
2
|
import { GestureResponderEvent, Pressable } from "react-native";
|
|
3
3
|
import Animated, {
|
|
4
|
-
Extrapolate,
|
|
5
|
-
interpolate,
|
|
6
4
|
interpolateColor,
|
|
7
5
|
useAnimatedProps,
|
|
8
|
-
|
|
9
|
-
useDerivedValue,
|
|
10
|
-
useSharedValue,
|
|
11
|
-
withSpring
|
|
6
|
+
useReducedMotion
|
|
12
7
|
} from "react-native-reanimated";
|
|
13
8
|
import {
|
|
14
9
|
IOColors,
|
|
15
10
|
IOIconButtonStyles,
|
|
16
|
-
IOScaleValues,
|
|
17
|
-
IOSpringValues,
|
|
18
11
|
IOStyles,
|
|
19
12
|
hexToRgba,
|
|
20
13
|
useIOExperimentalDesign
|
|
21
14
|
} from "../../core";
|
|
15
|
+
import { useScaleAnimation } from "../../hooks";
|
|
22
16
|
import { WithTestID } from "../../utils/types";
|
|
23
17
|
import {
|
|
24
18
|
AnimatedIcon,
|
|
@@ -116,7 +110,9 @@ export const IconButton = ({
|
|
|
116
110
|
accessibilityHint,
|
|
117
111
|
testID
|
|
118
112
|
}: IconButton) => {
|
|
119
|
-
const
|
|
113
|
+
const { progress, onPressIn, onPressOut, scaleAnimatedStyle } =
|
|
114
|
+
useScaleAnimation("exaggerated");
|
|
115
|
+
const reducedMotion = useReducedMotion();
|
|
120
116
|
|
|
121
117
|
const { isExperimental } = useIOExperimentalDesign();
|
|
122
118
|
|
|
@@ -125,56 +121,23 @@ export const IconButton = ({
|
|
|
125
121
|
[isExperimental]
|
|
126
122
|
);
|
|
127
123
|
|
|
128
|
-
// Scaling transformation applied when the button is pressed
|
|
129
|
-
const animationScaleValue = IOScaleValues?.exaggeratedButton?.pressedState;
|
|
130
|
-
|
|
131
|
-
// Using a spring-based animation for our interpolations
|
|
132
|
-
const progressPressed = useDerivedValue(() =>
|
|
133
|
-
withSpring(isPressed.value, IOSpringValues.button)
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
// Interpolate animation values from `isPressed` values
|
|
137
|
-
|
|
138
|
-
const pressedAnimationStyle = useAnimatedStyle(() => {
|
|
139
|
-
// Scale down button slightly when pressed
|
|
140
|
-
const scale = interpolate(
|
|
141
|
-
progressPressed.value,
|
|
142
|
-
[0, 1],
|
|
143
|
-
[1, animationScaleValue],
|
|
144
|
-
Extrapolate.CLAMP
|
|
145
|
-
);
|
|
146
|
-
|
|
147
|
-
return {
|
|
148
|
-
transform: [{ scale }]
|
|
149
|
-
};
|
|
150
|
-
});
|
|
151
|
-
|
|
152
124
|
// Animate the <Icon> color prop
|
|
153
125
|
const animatedColor = useAnimatedProps(() => {
|
|
154
126
|
const iconColor = interpolateColor(
|
|
155
|
-
|
|
127
|
+
progress.value,
|
|
156
128
|
[0, 1],
|
|
157
129
|
[colorMap[color].icon.default, colorMap[color].icon.pressed]
|
|
158
130
|
);
|
|
159
131
|
return { color: iconColor };
|
|
160
132
|
});
|
|
161
133
|
|
|
162
|
-
const handlePressIn = useCallback(() => {
|
|
163
|
-
// eslint-disable-next-line functional/immutable-data
|
|
164
|
-
isPressed.value = 1;
|
|
165
|
-
}, [isPressed]);
|
|
166
|
-
const handlePressOut = useCallback(() => {
|
|
167
|
-
// eslint-disable-next-line functional/immutable-data
|
|
168
|
-
isPressed.value = 0;
|
|
169
|
-
}, [isPressed]);
|
|
170
|
-
|
|
171
134
|
return (
|
|
172
135
|
<Pressable
|
|
173
136
|
disabled={disabled}
|
|
174
137
|
// Events
|
|
175
138
|
onPress={onPress}
|
|
176
|
-
onPressIn={
|
|
177
|
-
onPressOut={
|
|
139
|
+
onPressIn={onPressIn}
|
|
140
|
+
onPressOut={onPressOut}
|
|
178
141
|
// Accessibility
|
|
179
142
|
accessible={true}
|
|
180
143
|
accessibilityRole={"button"}
|
|
@@ -192,7 +155,7 @@ export const IconButton = ({
|
|
|
192
155
|
IOIconButtonStyles.buttonSizeSmall,
|
|
193
156
|
IOStyles.alignCenter,
|
|
194
157
|
IOStyles.centerJustified,
|
|
195
|
-
!disabled &&
|
|
158
|
+
!disabled && !reducedMotion && scaleAnimatedStyle
|
|
196
159
|
]}
|
|
197
160
|
>
|
|
198
161
|
{!disabled ? (
|
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { useCallback } from "react";
|
|
3
2
|
import { GestureResponderEvent, Pressable } from "react-native";
|
|
4
3
|
import Animated, {
|
|
5
|
-
Extrapolate,
|
|
6
|
-
interpolate,
|
|
7
4
|
interpolateColor,
|
|
8
5
|
useAnimatedProps,
|
|
9
6
|
useAnimatedStyle,
|
|
10
|
-
|
|
11
|
-
useSharedValue,
|
|
12
|
-
withSpring
|
|
7
|
+
useReducedMotion
|
|
13
8
|
} from "react-native-reanimated";
|
|
14
9
|
import {
|
|
15
10
|
AnimatedIcon,
|
|
@@ -20,11 +15,10 @@ import {
|
|
|
20
15
|
IOButtonStyles,
|
|
21
16
|
IOColors,
|
|
22
17
|
IOIconButtonStyles,
|
|
23
|
-
IOScaleValues,
|
|
24
|
-
IOSpringValues,
|
|
25
18
|
hexToRgba,
|
|
26
19
|
useIOExperimentalDesign
|
|
27
20
|
} from "../../core";
|
|
21
|
+
import { useScaleAnimation } from "../../hooks";
|
|
28
22
|
import { WithTestID } from "../../utils/types";
|
|
29
23
|
|
|
30
24
|
export type IconButtonContained = WithTestID<{
|
|
@@ -151,64 +145,33 @@ export const IconButtonContained = ({
|
|
|
151
145
|
accessibilityHint,
|
|
152
146
|
testID
|
|
153
147
|
}: IconButtonContained) => {
|
|
154
|
-
const isPressed = useSharedValue(0);
|
|
155
148
|
const { isExperimental } = useIOExperimentalDesign();
|
|
156
149
|
|
|
150
|
+
const { progress, onPressIn, onPressOut, scaleAnimatedStyle } =
|
|
151
|
+
useScaleAnimation("exaggerated");
|
|
152
|
+
const reducedMotion = useReducedMotion();
|
|
153
|
+
|
|
157
154
|
const colorMap = React.useMemo(
|
|
158
155
|
() => (isExperimental ? mapColorStates : mapLegacyColorStates),
|
|
159
156
|
[isExperimental]
|
|
160
157
|
);
|
|
161
158
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
// Using a spring-based animation for our interpolations
|
|
166
|
-
const progressPressed = useDerivedValue(() =>
|
|
167
|
-
withSpring(isPressed.value, IOSpringValues.button)
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
// Interpolate animation values from `isPressed` values
|
|
171
|
-
|
|
172
|
-
const pressedAnimationStyle = useAnimatedStyle(() => {
|
|
173
|
-
// Link color states to the pressed states
|
|
174
|
-
const backgroundColor = interpolateColor(
|
|
175
|
-
progressPressed.value,
|
|
159
|
+
const backgroundColorAnimationStyle = useAnimatedStyle(() => ({
|
|
160
|
+
backgroundColor: interpolateColor(
|
|
161
|
+
progress.value,
|
|
176
162
|
[0, 1],
|
|
177
163
|
[colorMap[color].background.default, colorMap[color].background.pressed]
|
|
178
|
-
)
|
|
179
|
-
|
|
180
|
-
// Scale down button slightly when pressed
|
|
181
|
-
const scale = interpolate(
|
|
182
|
-
progressPressed.value,
|
|
183
|
-
[0, 1],
|
|
184
|
-
[1, animationScaleValue],
|
|
185
|
-
Extrapolate.CLAMP
|
|
186
|
-
);
|
|
187
|
-
|
|
188
|
-
return {
|
|
189
|
-
backgroundColor,
|
|
190
|
-
transform: [{ scale }]
|
|
191
|
-
};
|
|
192
|
-
});
|
|
164
|
+
)
|
|
165
|
+
}));
|
|
193
166
|
|
|
194
167
|
// Animate the <Icon> color prop
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
168
|
+
const iconColorAnimationStyle = useAnimatedProps(() => ({
|
|
169
|
+
color: interpolateColor(
|
|
170
|
+
progress.value,
|
|
198
171
|
[0, 1],
|
|
199
172
|
[colorMap[color].icon.default, colorMap[color].icon.pressed]
|
|
200
|
-
)
|
|
201
|
-
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
const handlePressIn = useCallback(() => {
|
|
205
|
-
// eslint-disable-next-line functional/immutable-data
|
|
206
|
-
isPressed.value = 1;
|
|
207
|
-
}, [isPressed]);
|
|
208
|
-
const handlePressOut = useCallback(() => {
|
|
209
|
-
// eslint-disable-next-line functional/immutable-data
|
|
210
|
-
isPressed.value = 0;
|
|
211
|
-
}, [isPressed]);
|
|
173
|
+
)
|
|
174
|
+
}));
|
|
212
175
|
|
|
213
176
|
return (
|
|
214
177
|
<Pressable
|
|
@@ -218,8 +181,8 @@ export const IconButtonContained = ({
|
|
|
218
181
|
accessibilityState={{ disabled }}
|
|
219
182
|
testID={testID}
|
|
220
183
|
onPress={onPress}
|
|
221
|
-
onPressIn={
|
|
222
|
-
onPressOut={
|
|
184
|
+
onPressIn={onPressIn}
|
|
185
|
+
onPressOut={onPressOut}
|
|
223
186
|
accessible={true}
|
|
224
187
|
disabled={disabled}
|
|
225
188
|
style={IOButtonStyles.dimensionsDefault}
|
|
@@ -228,13 +191,14 @@ export const IconButtonContained = ({
|
|
|
228
191
|
style={[
|
|
229
192
|
IOIconButtonStyles.button,
|
|
230
193
|
IOIconButtonStyles.buttonSizeDefault,
|
|
231
|
-
!disabled &&
|
|
194
|
+
!disabled && !reducedMotion && scaleAnimatedStyle,
|
|
195
|
+
!disabled && backgroundColorAnimationStyle
|
|
232
196
|
]}
|
|
233
197
|
>
|
|
234
198
|
{!disabled ? (
|
|
235
199
|
<AnimatedIconClassComponent
|
|
236
200
|
name={icon}
|
|
237
|
-
animatedProps={
|
|
201
|
+
animatedProps={iconColorAnimationStyle}
|
|
238
202
|
color={colorMap[color]?.icon?.default}
|
|
239
203
|
/>
|
|
240
204
|
) : (
|
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import { useCallback } from "react";
|
|
3
2
|
import { GestureResponderEvent, Pressable } from "react-native";
|
|
4
3
|
import Animated, {
|
|
5
|
-
Extrapolate,
|
|
6
|
-
interpolate,
|
|
7
4
|
interpolateColor,
|
|
8
5
|
useAnimatedStyle,
|
|
9
|
-
|
|
10
|
-
useSharedValue,
|
|
11
|
-
withSpring
|
|
6
|
+
useReducedMotion
|
|
12
7
|
} from "react-native-reanimated";
|
|
13
8
|
import {
|
|
14
9
|
IOButtonStyles,
|
|
15
10
|
IOIconButtonStyles,
|
|
16
|
-
IOScaleValues,
|
|
17
|
-
IOSpringValues,
|
|
18
11
|
useIOExperimentalDesign
|
|
19
12
|
} from "../../core";
|
|
20
13
|
import { IOColors, hexToRgba } from "../../core/IOColors";
|
|
14
|
+
import { useScaleAnimation } from "../../hooks";
|
|
21
15
|
import { WithTestID } from "../../utils/types";
|
|
22
16
|
import { AnimatedIcon, IOIcons } from "../icons";
|
|
23
17
|
|
|
@@ -110,50 +104,24 @@ export const IconButtonSolid = ({
|
|
|
110
104
|
accessibilityHint,
|
|
111
105
|
testID
|
|
112
106
|
}: IconButtonSolid) => {
|
|
113
|
-
const isPressed = useSharedValue(0);
|
|
114
107
|
const { isExperimental } = useIOExperimentalDesign();
|
|
115
|
-
// Scaling transformation applied when the button is pressed
|
|
116
|
-
const animationScaleValue = IOScaleValues?.exaggeratedButton?.pressedState;
|
|
117
108
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
);
|
|
109
|
+
const { progress, onPressIn, onPressOut, scaleAnimatedStyle } =
|
|
110
|
+
useScaleAnimation("exaggerated");
|
|
111
|
+
const reducedMotion = useReducedMotion();
|
|
122
112
|
|
|
123
113
|
const colorMap = React.useMemo(
|
|
124
114
|
() => (isExperimental ? mapColorStates : mapLegacyColorStates),
|
|
125
115
|
[isExperimental]
|
|
126
116
|
);
|
|
127
|
-
// Interpolate animation values from `isPressed` values
|
|
128
|
-
const pressedAnimationStyle = useAnimatedStyle(() => {
|
|
129
|
-
const backgroundColor = interpolateColor(
|
|
130
|
-
progressPressed.value,
|
|
131
|
-
[0, 1],
|
|
132
|
-
[colorMap[color].background.default, colorMap[color].background.pressed]
|
|
133
|
-
);
|
|
134
117
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
118
|
+
const backgroundColorAnimationStyle = useAnimatedStyle(() => ({
|
|
119
|
+
backgroundColor: interpolateColor(
|
|
120
|
+
progress.value,
|
|
138
121
|
[0, 1],
|
|
139
|
-
[
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return {
|
|
144
|
-
backgroundColor,
|
|
145
|
-
transform: [{ scale }]
|
|
146
|
-
};
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
const handlePressIn = useCallback(() => {
|
|
150
|
-
// eslint-disable-next-line functional/immutable-data
|
|
151
|
-
isPressed.value = 1;
|
|
152
|
-
}, [isPressed]);
|
|
153
|
-
const handlePressOut = useCallback(() => {
|
|
154
|
-
// eslint-disable-next-line functional/immutable-data
|
|
155
|
-
isPressed.value = 0;
|
|
156
|
-
}, [isPressed]);
|
|
122
|
+
[colorMap[color].background.default, colorMap[color].background.pressed]
|
|
123
|
+
)
|
|
124
|
+
}));
|
|
157
125
|
|
|
158
126
|
return (
|
|
159
127
|
<Pressable
|
|
@@ -163,8 +131,8 @@ export const IconButtonSolid = ({
|
|
|
163
131
|
accessibilityState={{ disabled }}
|
|
164
132
|
testID={testID}
|
|
165
133
|
onPress={onPress}
|
|
166
|
-
onPressIn={
|
|
167
|
-
onPressOut={
|
|
134
|
+
onPressIn={onPressIn}
|
|
135
|
+
onPressOut={onPressOut}
|
|
168
136
|
accessible={true}
|
|
169
137
|
disabled={disabled}
|
|
170
138
|
style={IOButtonStyles.dimensionsDefault}
|
|
@@ -173,7 +141,8 @@ export const IconButtonSolid = ({
|
|
|
173
141
|
style={[
|
|
174
142
|
IOIconButtonStyles.button,
|
|
175
143
|
IOIconButtonStyles.buttonSizeLarge,
|
|
176
|
-
!disabled &&
|
|
144
|
+
!disabled && !reducedMotion && scaleAnimatedStyle,
|
|
145
|
+
!disabled && backgroundColorAnimationStyle,
|
|
177
146
|
disabled
|
|
178
147
|
? {
|
|
179
148
|
backgroundColor: colorMap[color]?.background?.disabled
|
|
@@ -59,6 +59,9 @@ exports[`Test Buttons Components - Experimental Enabled ButtonLink Snapshot 1`]
|
|
|
59
59
|
"textAlignVertical": "center",
|
|
60
60
|
},
|
|
61
61
|
false,
|
|
62
|
+
{
|
|
63
|
+
"columnGap": 8,
|
|
64
|
+
},
|
|
62
65
|
{},
|
|
63
66
|
{
|
|
64
67
|
"transform": [
|
|
@@ -166,14 +169,16 @@ exports[`Test Buttons Components - Experimental Enabled ButtonOutline Snapshot 1
|
|
|
166
169
|
"borderColor": "#0B3EE3",
|
|
167
170
|
},
|
|
168
171
|
{
|
|
169
|
-
"backgroundColor": undefined,
|
|
170
|
-
"borderColor": undefined,
|
|
171
172
|
"transform": [
|
|
172
173
|
{
|
|
173
174
|
"scale": undefined,
|
|
174
175
|
},
|
|
175
176
|
],
|
|
176
177
|
},
|
|
178
|
+
{
|
|
179
|
+
"backgroundColor": undefined,
|
|
180
|
+
"borderColor": undefined,
|
|
181
|
+
},
|
|
177
182
|
]
|
|
178
183
|
}
|
|
179
184
|
>
|
|
@@ -276,17 +281,20 @@ exports[`Test Buttons Components - Experimental Enabled ButtonSolid Snapshot 1`]
|
|
|
276
281
|
"backgroundColor": "#0B3EE3",
|
|
277
282
|
},
|
|
278
283
|
{
|
|
279
|
-
"backgroundColor": undefined,
|
|
280
284
|
"transform": [
|
|
281
285
|
{
|
|
282
286
|
"scale": undefined,
|
|
283
287
|
},
|
|
284
288
|
],
|
|
285
289
|
},
|
|
290
|
+
{
|
|
291
|
+
"backgroundColor": undefined,
|
|
292
|
+
},
|
|
286
293
|
]
|
|
287
294
|
}
|
|
288
295
|
>
|
|
289
296
|
<View
|
|
297
|
+
entering={[Function]}
|
|
290
298
|
style={
|
|
291
299
|
[
|
|
292
300
|
{
|
|
@@ -510,13 +518,15 @@ exports[`Test Buttons Components - Experimental Enabled IconButtonContained Snap
|
|
|
510
518
|
"width": 48,
|
|
511
519
|
},
|
|
512
520
|
{
|
|
513
|
-
"backgroundColor": undefined,
|
|
514
521
|
"transform": [
|
|
515
522
|
{
|
|
516
523
|
"scale": undefined,
|
|
517
524
|
},
|
|
518
525
|
],
|
|
519
526
|
},
|
|
527
|
+
{
|
|
528
|
+
"backgroundColor": undefined,
|
|
529
|
+
},
|
|
520
530
|
]
|
|
521
531
|
}
|
|
522
532
|
>
|
|
@@ -642,13 +652,15 @@ exports[`Test Buttons Components - Experimental Enabled IconButtonSolid Snapshot
|
|
|
642
652
|
"width": 56,
|
|
643
653
|
},
|
|
644
654
|
{
|
|
645
|
-
"backgroundColor": undefined,
|
|
646
655
|
"transform": [
|
|
647
656
|
{
|
|
648
657
|
"scale": undefined,
|
|
649
658
|
},
|
|
650
659
|
],
|
|
651
660
|
},
|
|
661
|
+
{
|
|
662
|
+
"backgroundColor": undefined,
|
|
663
|
+
},
|
|
652
664
|
{
|
|
653
665
|
"backgroundColor": "#0B3EE3",
|
|
654
666
|
},
|
|
@@ -778,6 +790,9 @@ exports[`Test Buttons Components ButtonLink Snapshot 1`] = `
|
|
|
778
790
|
"textAlignVertical": "center",
|
|
779
791
|
},
|
|
780
792
|
false,
|
|
793
|
+
{
|
|
794
|
+
"columnGap": 8,
|
|
795
|
+
},
|
|
781
796
|
{},
|
|
782
797
|
{
|
|
783
798
|
"transform": [
|
|
@@ -884,14 +899,16 @@ exports[`Test Buttons Components ButtonOutline Snapshot 1`] = `
|
|
|
884
899
|
"borderColor": "#0073E6",
|
|
885
900
|
},
|
|
886
901
|
{
|
|
887
|
-
"backgroundColor": undefined,
|
|
888
|
-
"borderColor": undefined,
|
|
889
902
|
"transform": [
|
|
890
903
|
{
|
|
891
904
|
"scale": undefined,
|
|
892
905
|
},
|
|
893
906
|
],
|
|
894
907
|
},
|
|
908
|
+
{
|
|
909
|
+
"backgroundColor": undefined,
|
|
910
|
+
"borderColor": undefined,
|
|
911
|
+
},
|
|
895
912
|
]
|
|
896
913
|
}
|
|
897
914
|
>
|
|
@@ -993,17 +1010,20 @@ exports[`Test Buttons Components ButtonSolid Snapshot 1`] = `
|
|
|
993
1010
|
"backgroundColor": "#0073E6",
|
|
994
1011
|
},
|
|
995
1012
|
{
|
|
996
|
-
"backgroundColor": undefined,
|
|
997
1013
|
"transform": [
|
|
998
1014
|
{
|
|
999
1015
|
"scale": undefined,
|
|
1000
1016
|
},
|
|
1001
1017
|
],
|
|
1002
1018
|
},
|
|
1019
|
+
{
|
|
1020
|
+
"backgroundColor": undefined,
|
|
1021
|
+
},
|
|
1003
1022
|
]
|
|
1004
1023
|
}
|
|
1005
1024
|
>
|
|
1006
1025
|
<View
|
|
1026
|
+
entering={[Function]}
|
|
1007
1027
|
style={
|
|
1008
1028
|
[
|
|
1009
1029
|
{
|
|
@@ -1227,13 +1247,15 @@ exports[`Test Buttons Components IconButtonContained Snapshot 1`] = `
|
|
|
1227
1247
|
"width": 48,
|
|
1228
1248
|
},
|
|
1229
1249
|
{
|
|
1230
|
-
"backgroundColor": undefined,
|
|
1231
1250
|
"transform": [
|
|
1232
1251
|
{
|
|
1233
1252
|
"scale": undefined,
|
|
1234
1253
|
},
|
|
1235
1254
|
],
|
|
1236
1255
|
},
|
|
1256
|
+
{
|
|
1257
|
+
"backgroundColor": undefined,
|
|
1258
|
+
},
|
|
1237
1259
|
]
|
|
1238
1260
|
}
|
|
1239
1261
|
>
|
|
@@ -1359,13 +1381,15 @@ exports[`Test Buttons Components IconButtonSolid Snapshot 1`] = `
|
|
|
1359
1381
|
"width": 56,
|
|
1360
1382
|
},
|
|
1361
1383
|
{
|
|
1362
|
-
"backgroundColor": undefined,
|
|
1363
1384
|
"transform": [
|
|
1364
1385
|
{
|
|
1365
1386
|
"scale": undefined,
|
|
1366
1387
|
},
|
|
1367
1388
|
],
|
|
1368
1389
|
},
|
|
1390
|
+
{
|
|
1391
|
+
"backgroundColor": undefined,
|
|
1392
|
+
},
|
|
1369
1393
|
{
|
|
1370
1394
|
"backgroundColor": "#0073E6",
|
|
1371
1395
|
},
|
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
import React, { ComponentProps,
|
|
1
|
+
import React, { ComponentProps, useMemo } from "react";
|
|
2
2
|
import { GestureResponderEvent, Pressable, View } from "react-native";
|
|
3
|
-
import Animated
|
|
4
|
-
Extrapolate,
|
|
5
|
-
interpolate,
|
|
6
|
-
interpolateColor,
|
|
7
|
-
useAnimatedStyle,
|
|
8
|
-
useDerivedValue,
|
|
9
|
-
useSharedValue,
|
|
10
|
-
withSpring
|
|
11
|
-
} from "react-native-reanimated";
|
|
3
|
+
import Animated from "react-native-reanimated";
|
|
12
4
|
import {
|
|
13
5
|
IOColors,
|
|
14
6
|
IOListItemStyles,
|
|
15
7
|
IOListItemVisualParams,
|
|
16
|
-
IOScaleValues,
|
|
17
|
-
IOSpringValues,
|
|
18
|
-
hexToRgba,
|
|
19
8
|
useIOTheme
|
|
20
9
|
} from "../../core";
|
|
10
|
+
import { useListItemAnimation } from "../../hooks";
|
|
21
11
|
import { WithTestID } from "../../utils/types";
|
|
22
12
|
import { AnimatedIcon, IOIcons } from "../icons";
|
|
23
13
|
import { ButtonText } from "../typography/ButtonText";
|
|
@@ -42,7 +32,8 @@ export const ListItemAction = ({
|
|
|
42
32
|
accessibilityHint,
|
|
43
33
|
testID
|
|
44
34
|
}: ListItemAction) => {
|
|
45
|
-
const
|
|
35
|
+
const { onPressIn, onPressOut, scaleAnimatedStyle, backgroundAnimatedStyle } =
|
|
36
|
+
useListItemAnimation();
|
|
46
37
|
|
|
47
38
|
const theme = useIOTheme();
|
|
48
39
|
|
|
@@ -51,11 +42,6 @@ export const ListItemAction = ({
|
|
|
51
42
|
[label, accessibilityLabel]
|
|
52
43
|
);
|
|
53
44
|
|
|
54
|
-
const mapBackgroundStates: Record<string, string> = {
|
|
55
|
-
default: hexToRgba(IOColors[theme["listItem-pressed"]], 0),
|
|
56
|
-
pressed: IOColors[theme["listItem-pressed"]]
|
|
57
|
-
};
|
|
58
|
-
|
|
59
45
|
const mapForegroundColor: Record<
|
|
60
46
|
NonNullable<ListItemAction["variant"]>,
|
|
61
47
|
IOColors
|
|
@@ -64,54 +50,12 @@ export const ListItemAction = ({
|
|
|
64
50
|
danger: theme.errorText
|
|
65
51
|
};
|
|
66
52
|
|
|
67
|
-
// Scaling transformation applied when the button is pressed
|
|
68
|
-
const animationScaleValue = IOScaleValues?.basicButton?.pressedState;
|
|
69
|
-
|
|
70
|
-
const progressPressed = useDerivedValue(() =>
|
|
71
|
-
withSpring(isPressed.value, IOSpringValues.button)
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
// Interpolate animation values from `isPressed` values
|
|
75
|
-
const animatedScaleStyle = useAnimatedStyle(() => {
|
|
76
|
-
const scale = interpolate(
|
|
77
|
-
progressPressed.value,
|
|
78
|
-
[0, 1],
|
|
79
|
-
[1, animationScaleValue],
|
|
80
|
-
Extrapolate.CLAMP
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
return {
|
|
84
|
-
transform: [{ scale }]
|
|
85
|
-
};
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
const animatedBackgroundStyle = useAnimatedStyle(() => {
|
|
89
|
-
const backgroundColor = interpolateColor(
|
|
90
|
-
progressPressed.value,
|
|
91
|
-
[0, 1],
|
|
92
|
-
[mapBackgroundStates.default, mapBackgroundStates.pressed]
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
return {
|
|
96
|
-
backgroundColor
|
|
97
|
-
};
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
const handlePressIn = useCallback(() => {
|
|
101
|
-
// eslint-disable-next-line functional/immutable-data
|
|
102
|
-
isPressed.value = 1;
|
|
103
|
-
}, [isPressed]);
|
|
104
|
-
const handlePressOut = useCallback(() => {
|
|
105
|
-
// eslint-disable-next-line functional/immutable-data
|
|
106
|
-
isPressed.value = 0;
|
|
107
|
-
}, [isPressed]);
|
|
108
|
-
|
|
109
53
|
return (
|
|
110
54
|
<Pressable
|
|
111
55
|
onPress={onPress}
|
|
112
|
-
onPressIn={
|
|
113
|
-
onPressOut={
|
|
114
|
-
onTouchEnd={
|
|
56
|
+
onPressIn={onPressIn}
|
|
57
|
+
onPressOut={onPressOut}
|
|
58
|
+
onTouchEnd={onPressOut}
|
|
115
59
|
accessible={true}
|
|
116
60
|
accessibilityLabel={listItemAccessibilityLabel}
|
|
117
61
|
accessibilityHint={accessibilityHint}
|
|
@@ -119,12 +63,12 @@ export const ListItemAction = ({
|
|
|
119
63
|
testID={testID}
|
|
120
64
|
>
|
|
121
65
|
<Animated.View
|
|
122
|
-
style={[IOListItemStyles.listItem,
|
|
66
|
+
style={[IOListItemStyles.listItem, backgroundAnimatedStyle]}
|
|
123
67
|
importantForAccessibility="no-hide-descendants"
|
|
124
68
|
accessibilityElementsHidden
|
|
125
69
|
>
|
|
126
70
|
<Animated.View
|
|
127
|
-
style={[IOListItemStyles.listItemInner,
|
|
71
|
+
style={[IOListItemStyles.listItemInner, scaleAnimatedStyle]}
|
|
128
72
|
>
|
|
129
73
|
{icon && (
|
|
130
74
|
<View style={{ marginRight: IOListItemVisualParams.iconMargin }}>
|
|
@@ -135,7 +79,7 @@ export const ListItemAction = ({
|
|
|
135
79
|
/>
|
|
136
80
|
</View>
|
|
137
81
|
)}
|
|
138
|
-
<View style={{ flexGrow: 1 }}>
|
|
82
|
+
<View style={{ flexGrow: 1, flexShrink: 1 }}>
|
|
139
83
|
<ButtonText color={mapForegroundColor[variant]}>{label}</ButtonText>
|
|
140
84
|
</View>
|
|
141
85
|
</Animated.View>
|