@pagopa/io-app-design-system 4.5.1 → 4.5.2
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/accordion/AccordionItem.js +1 -1
- package/lib/commonjs/components/accordion/AccordionItem.js.map +1 -1
- package/lib/commonjs/components/buttons/ButtonLink.js +25 -25
- package/lib/commonjs/components/buttons/ButtonLink.js.map +1 -1
- package/lib/commonjs/components/buttons/ButtonOutline.js +41 -97
- package/lib/commonjs/components/buttons/ButtonOutline.js.map +1 -1
- package/lib/commonjs/components/buttons/ButtonSolid.js +70 -63
- package/lib/commonjs/components/buttons/ButtonSolid.js.map +1 -1
- package/lib/commonjs/components/buttons/IconButton.js +28 -27
- package/lib/commonjs/components/buttons/IconButton.js.map +1 -1
- package/lib/commonjs/components/buttons/IconButtonSolid.js +27 -27
- package/lib/commonjs/components/buttons/IconButtonSolid.js.map +1 -1
- package/lib/commonjs/components/buttons/__test__/__snapshots__/button.test.tsx.snap +5 -7
- package/lib/commonjs/components/icons/svg/IconProductIOAppBlueBg.js +8 -20
- package/lib/commonjs/components/icons/svg/IconProductIOAppBlueBg.js.map +1 -1
- package/lib/commonjs/components/icons/svg/originals/IconProductIOAppBlueBg.svg +12 -9
- package/lib/commonjs/components/layout/HeaderFirstLevel.js +2 -2
- package/lib/commonjs/components/layout/HeaderFirstLevel.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemInfo.js +1 -1
- package/lib/commonjs/components/listitems/ListItemInfo.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemInfoCopy.js +1 -1
- package/lib/commonjs/components/listitems/ListItemInfoCopy.js.map +1 -1
- package/lib/commonjs/components/listitems/ListItemNav.js +4 -3
- package/lib/commonjs/components/listitems/ListItemNav.js.map +1 -1
- package/lib/commonjs/core/IOColors.js +16 -2
- package/lib/commonjs/core/IOColors.js.map +1 -1
- package/lib/module/components/accordion/AccordionItem.js +1 -1
- package/lib/module/components/accordion/AccordionItem.js.map +1 -1
- package/lib/module/components/buttons/ButtonLink.js +26 -26
- package/lib/module/components/buttons/ButtonLink.js.map +1 -1
- package/lib/module/components/buttons/ButtonOutline.js +42 -98
- package/lib/module/components/buttons/ButtonOutline.js.map +1 -1
- package/lib/module/components/buttons/ButtonSolid.js +73 -66
- package/lib/module/components/buttons/ButtonSolid.js.map +1 -1
- package/lib/module/components/buttons/IconButton.js +29 -28
- package/lib/module/components/buttons/IconButton.js.map +1 -1
- package/lib/module/components/buttons/IconButtonSolid.js +28 -28
- package/lib/module/components/buttons/IconButtonSolid.js.map +1 -1
- package/lib/module/components/buttons/__test__/__snapshots__/button.test.tsx.snap +5 -7
- package/lib/module/components/icons/svg/IconProductIOAppBlueBg.js +9 -21
- package/lib/module/components/icons/svg/IconProductIOAppBlueBg.js.map +1 -1
- package/lib/module/components/icons/svg/originals/IconProductIOAppBlueBg.svg +12 -9
- package/lib/module/components/layout/HeaderFirstLevel.js +2 -2
- package/lib/module/components/layout/HeaderFirstLevel.js.map +1 -1
- package/lib/module/components/listitems/ListItemInfo.js +1 -1
- package/lib/module/components/listitems/ListItemInfo.js.map +1 -1
- package/lib/module/components/listitems/ListItemInfoCopy.js +1 -1
- package/lib/module/components/listitems/ListItemInfoCopy.js.map +1 -1
- package/lib/module/components/listitems/ListItemNav.js +4 -3
- package/lib/module/components/listitems/ListItemNav.js.map +1 -1
- package/lib/module/core/IOColors.js +16 -2
- package/lib/module/core/IOColors.js.map +1 -1
- package/lib/typescript/components/buttons/ButtonLink.d.ts +1 -1
- package/lib/typescript/components/buttons/ButtonLink.d.ts.map +1 -1
- package/lib/typescript/components/buttons/ButtonOutline.d.ts +2 -2
- package/lib/typescript/components/buttons/ButtonOutline.d.ts.map +1 -1
- package/lib/typescript/components/buttons/ButtonSolid.d.ts +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/IconButtonSolid.d.ts.map +1 -1
- package/lib/typescript/components/icons/svg/IconProductIOAppBlueBg.d.ts.map +1 -1
- package/lib/typescript/components/layout/HeaderFirstLevel.d.ts +2 -2
- package/lib/typescript/components/layout/HeaderFirstLevel.d.ts.map +1 -1
- package/lib/typescript/components/listitems/ListItemNav.d.ts.map +1 -1
- package/lib/typescript/core/IOColors.d.ts +1 -1
- package/lib/typescript/core/IOColors.d.ts.map +1 -1
- package/lib/typescript/core/IOStyles.d.ts +2 -2
- package/lib/typescript/utils/fonts.d.ts +1 -1
- package/package.json +1 -1
- package/src/components/accordion/AccordionItem.tsx +1 -1
- package/src/components/buttons/ButtonLink.tsx +37 -30
- package/src/components/buttons/ButtonOutline.tsx +51 -108
- package/src/components/buttons/ButtonSolid.tsx +94 -78
- package/src/components/buttons/IconButton.tsx +36 -29
- package/src/components/buttons/IconButtonSolid.tsx +35 -31
- package/src/components/buttons/__test__/__snapshots__/button.test.tsx.snap +5 -7
- package/src/components/icons/svg/IconProductIOAppBlueBg.tsx +12 -13
- package/src/components/icons/svg/originals/IconProductIOAppBlueBg.svg +12 -9
- package/src/components/layout/HeaderFirstLevel.tsx +4 -4
- package/src/components/listitems/ListItemInfo.tsx +1 -1
- package/src/components/listitems/ListItemInfoCopy.tsx +1 -1
- package/src/components/listitems/ListItemNav.tsx +5 -4
- package/src/core/IOColors.ts +24 -3
- package/lib/commonjs/components/layout/BlockButtons.js +0 -85
- package/lib/commonjs/components/layout/BlockButtons.js.map +0 -1
- package/lib/module/components/layout/BlockButtons.js +0 -76
- package/lib/module/components/layout/BlockButtons.js.map +0 -1
- package/lib/typescript/components/layout/BlockButtons.d.ts +0 -54
- package/lib/typescript/components/layout/BlockButtons.d.ts.map +0 -1
- package/src/components/layout/BlockButtons.tsx +0 -143
|
@@ -1,90 +1,28 @@
|
|
|
1
1
|
import React, { forwardRef } from "react";
|
|
2
2
|
import { Pressable, StyleSheet } from "react-native";
|
|
3
3
|
import Animated, { interpolateColor, useAnimatedProps, useAnimatedStyle, useReducedMotion } from "react-native-reanimated";
|
|
4
|
-
import { IOButtonLegacyStyles, IOButtonStyles, IOColors, hexToRgba, useIOExperimentalDesign } from "../../core/";
|
|
4
|
+
import { IOButtonLegacyStyles, IOButtonStyles, IOColors, hexToRgba, useIOExperimentalDesign, useIOTheme } from "../../core/";
|
|
5
5
|
import { useScaleAnimation } from "../../hooks";
|
|
6
6
|
import { AnimatedIcon, IconClassComponent } from "../icons";
|
|
7
7
|
import { IOText, buttonTextFontSize } from "../typography";
|
|
8
|
-
const mapColorStates = {
|
|
9
|
-
// Primary button
|
|
10
|
-
primary: {
|
|
11
|
-
border: {
|
|
12
|
-
default: IOColors["blueIO-500"],
|
|
13
|
-
pressed: IOColors["blueIO-600"],
|
|
14
|
-
disabled: IOColors["grey-200"]
|
|
15
|
-
},
|
|
16
|
-
background: {
|
|
17
|
-
default: hexToRgba(IOColors["blueIO-50"], 0),
|
|
18
|
-
pressed: hexToRgba(IOColors["blueIO-50"], 1),
|
|
19
|
-
disabled: "transparent"
|
|
20
|
-
},
|
|
21
|
-
label: {
|
|
22
|
-
default: IOColors["blueIO-500"],
|
|
23
|
-
pressed: IOColors["blueIO-600"],
|
|
24
|
-
disabled: IOColors["grey-700"]
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
// Contrast button
|
|
28
|
-
contrast: {
|
|
29
|
-
border: {
|
|
30
|
-
default: IOColors.white,
|
|
31
|
-
pressed: IOColors.white,
|
|
32
|
-
disabled: IOColors["blueIO-200"]
|
|
33
|
-
},
|
|
34
|
-
background: {
|
|
35
|
-
default: hexToRgba(IOColors["blueIO-600"], 0),
|
|
36
|
-
pressed: IOColors["blueIO-600"],
|
|
37
|
-
disabled: "transparent"
|
|
38
|
-
},
|
|
39
|
-
label: {
|
|
40
|
-
default: IOColors.white,
|
|
41
|
-
pressed: IOColors.white,
|
|
42
|
-
disabled: IOColors["blueIO-200"]
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
// Danger button
|
|
46
|
-
danger: {
|
|
47
|
-
border: {
|
|
48
|
-
default: IOColors["error-600"],
|
|
49
|
-
pressed: IOColors["error-600"],
|
|
50
|
-
disabled: IOColors["grey-200"]
|
|
51
|
-
},
|
|
52
|
-
background: {
|
|
53
|
-
default: hexToRgba(IOColors["error-600"], 0),
|
|
54
|
-
pressed: hexToRgba(IOColors["error-600"], 0.15),
|
|
55
|
-
disabled: "transparent"
|
|
56
|
-
},
|
|
57
|
-
label: {
|
|
58
|
-
default: IOColors["error-600"],
|
|
59
|
-
pressed: IOColors["error-600"],
|
|
60
|
-
disabled: IOColors["grey-450"]
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
8
|
// TODO: Remove this when legacy look is deprecated https://pagopa.atlassian.net/browse/IOPLT-153
|
|
66
9
|
const mapLegacyColorStates = {
|
|
67
10
|
// Primary button
|
|
68
11
|
primary: {
|
|
69
|
-
|
|
12
|
+
foreground: {
|
|
70
13
|
default: IOColors["blue-500"],
|
|
71
14
|
pressed: IOColors["blue-500"],
|
|
72
|
-
disabled: IOColors["grey-
|
|
15
|
+
disabled: IOColors["grey-450"]
|
|
73
16
|
},
|
|
74
17
|
background: {
|
|
75
18
|
default: hexToRgba(IOColors["blue-500"], 0),
|
|
76
19
|
pressed: hexToRgba(IOColors["blue-500"], 0.15),
|
|
77
20
|
disabled: "transparent"
|
|
78
|
-
},
|
|
79
|
-
label: {
|
|
80
|
-
default: IOColors["blue-500"],
|
|
81
|
-
pressed: IOColors["blue-500"],
|
|
82
|
-
disabled: IOColors["grey-450"]
|
|
83
21
|
}
|
|
84
22
|
},
|
|
85
23
|
// Contrast button
|
|
86
24
|
contrast: {
|
|
87
|
-
|
|
25
|
+
foreground: {
|
|
88
26
|
default: IOColors.white,
|
|
89
27
|
pressed: IOColors.white,
|
|
90
28
|
disabled: hexToRgba(IOColors.white, 0.5)
|
|
@@ -93,29 +31,6 @@ const mapLegacyColorStates = {
|
|
|
93
31
|
default: hexToRgba(IOColors.white, 0),
|
|
94
32
|
pressed: hexToRgba(IOColors.white, 0.2),
|
|
95
33
|
disabled: "transparent"
|
|
96
|
-
},
|
|
97
|
-
label: {
|
|
98
|
-
default: IOColors.white,
|
|
99
|
-
pressed: IOColors.white,
|
|
100
|
-
disabled: hexToRgba(IOColors.white, 0.5)
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
// Danger button
|
|
104
|
-
danger: {
|
|
105
|
-
border: {
|
|
106
|
-
default: IOColors["error-600"],
|
|
107
|
-
pressed: IOColors["error-600"],
|
|
108
|
-
disabled: IOColors["grey-200"]
|
|
109
|
-
},
|
|
110
|
-
background: {
|
|
111
|
-
default: hexToRgba(IOColors["error-600"], 0),
|
|
112
|
-
pressed: hexToRgba(IOColors["error-600"], 0.15),
|
|
113
|
-
disabled: "transparent"
|
|
114
|
-
},
|
|
115
|
-
label: {
|
|
116
|
-
default: IOColors["error-600"],
|
|
117
|
-
pressed: IOColors["error-600"],
|
|
118
|
-
disabled: IOColors["grey-450"]
|
|
119
34
|
}
|
|
120
35
|
}
|
|
121
36
|
};
|
|
@@ -149,6 +64,7 @@ export const ButtonOutline = /*#__PURE__*/forwardRef(({
|
|
|
149
64
|
testID
|
|
150
65
|
}, ref) => {
|
|
151
66
|
var _colorMap$color, _colorMap$color2, _colorMap$color3, _colorMap$color4, _colorMap$color5, _colorMap$color6, _colorMap$color7;
|
|
67
|
+
const theme = useIOTheme();
|
|
152
68
|
const {
|
|
153
69
|
isExperimental
|
|
154
70
|
} = useIOExperimentalDesign();
|
|
@@ -160,7 +76,35 @@ export const ButtonOutline = /*#__PURE__*/forwardRef(({
|
|
|
160
76
|
} = useScaleAnimation();
|
|
161
77
|
const reducedMotion = useReducedMotion();
|
|
162
78
|
const AnimatedIOText = Animated.createAnimatedComponent(IOText);
|
|
163
|
-
const
|
|
79
|
+
const mapColorStates = React.useMemo(() => ({
|
|
80
|
+
// Primary button
|
|
81
|
+
primary: {
|
|
82
|
+
foreground: {
|
|
83
|
+
default: IOColors[theme["interactiveElem-default"]],
|
|
84
|
+
pressed: IOColors[theme["interactiveElem-pressed"]],
|
|
85
|
+
disabled: IOColors[theme["interactiveOutline-disabled"]]
|
|
86
|
+
},
|
|
87
|
+
background: {
|
|
88
|
+
default: hexToRgba(IOColors[theme["interactiveElem-pressed"]], 0),
|
|
89
|
+
pressed: hexToRgba(IOColors[theme["interactiveElem-pressed"]], 0.1),
|
|
90
|
+
disabled: "transparent"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
// Contrast button
|
|
94
|
+
contrast: {
|
|
95
|
+
foreground: {
|
|
96
|
+
default: IOColors.white,
|
|
97
|
+
pressed: IOColors.white,
|
|
98
|
+
disabled: IOColors["blueIO-200"]
|
|
99
|
+
},
|
|
100
|
+
background: {
|
|
101
|
+
default: hexToRgba(IOColors["blueIO-600"], 0),
|
|
102
|
+
pressed: hexToRgba(IOColors["blueIO-600"], 0.5),
|
|
103
|
+
disabled: "transparent"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}), [theme]);
|
|
107
|
+
const colorMap = React.useMemo(() => isExperimental ? mapColorStates : mapLegacyColorStates, [isExperimental, mapColorStates]);
|
|
164
108
|
const buttonStyles = React.useMemo(() => isExperimental ? IOButtonStyles : IOButtonLegacyStyles, [isExperimental]);
|
|
165
109
|
const buttonStylesLocal = React.useMemo(() => isExperimental ? IOButtonStylesLocal : IOButtonLegacyStylesLocal, [isExperimental]);
|
|
166
110
|
|
|
@@ -168,19 +112,19 @@ export const ButtonOutline = /*#__PURE__*/forwardRef(({
|
|
|
168
112
|
const pressedAnimationStyle = useAnimatedStyle(() => {
|
|
169
113
|
// Link color states to the pressed states
|
|
170
114
|
const backgroundColor = interpolateColor(progress.value, [0, 1], [colorMap[color].background.default, colorMap[color].background.pressed]);
|
|
171
|
-
const borderColor = interpolateColor(progress.value, [0, 1], [colorMap[color].
|
|
115
|
+
const borderColor = interpolateColor(progress.value, [0, 1], [colorMap[color].foreground.default, colorMap[color].foreground.pressed]);
|
|
172
116
|
return {
|
|
173
117
|
borderColor,
|
|
174
118
|
backgroundColor
|
|
175
119
|
};
|
|
176
120
|
});
|
|
177
121
|
const pressedColorLabelAnimationStyle = useAnimatedStyle(() => ({
|
|
178
|
-
color: interpolateColor(progress.value, [0, 1], [colorMap[color].
|
|
122
|
+
color: interpolateColor(progress.value, [0, 1], [colorMap[color].foreground.default, colorMap[color].foreground.pressed])
|
|
179
123
|
}));
|
|
180
124
|
|
|
181
125
|
// Animate the <Icon> color prop
|
|
182
126
|
const pressedColorIconAnimationStyle = useAnimatedProps(() => ({
|
|
183
|
-
color: interpolateColor(progress.value, [0, 1], [colorMap[color].
|
|
127
|
+
color: interpolateColor(progress.value, [0, 1], [colorMap[color].foreground.default, colorMap[color].foreground.pressed])
|
|
184
128
|
}));
|
|
185
129
|
const AnimatedIconClassComponent = Animated.createAnimatedComponent(IconClassComponent);
|
|
186
130
|
return /*#__PURE__*/React.createElement(Pressable, {
|
|
@@ -207,11 +151,11 @@ export const ButtonOutline = /*#__PURE__*/forwardRef(({
|
|
|
207
151
|
flexDirection: "row-reverse"
|
|
208
152
|
}, disabled ? {
|
|
209
153
|
backgroundColor: (_colorMap$color = colorMap[color]) === null || _colorMap$color === void 0 || (_colorMap$color = _colorMap$color.background) === null || _colorMap$color === void 0 ? void 0 : _colorMap$color.disabled,
|
|
210
|
-
borderColor: (_colorMap$color2 = colorMap[color]) === null || _colorMap$color2 === void 0 || (_colorMap$color2 = _colorMap$color2.
|
|
154
|
+
borderColor: (_colorMap$color2 = colorMap[color]) === null || _colorMap$color2 === void 0 || (_colorMap$color2 = _colorMap$color2.foreground) === null || _colorMap$color2 === void 0 ? void 0 : _colorMap$color2.disabled,
|
|
211
155
|
opacity: DISABLED_OPACITY
|
|
212
156
|
} : {
|
|
213
157
|
backgroundColor: (_colorMap$color3 = colorMap[color]) === null || _colorMap$color3 === void 0 || (_colorMap$color3 = _colorMap$color3.background) === null || _colorMap$color3 === void 0 ? void 0 : _colorMap$color3.default,
|
|
214
|
-
borderColor: (_colorMap$color4 = colorMap[color]) === null || _colorMap$color4 === void 0 ? void 0 : _colorMap$color4.
|
|
158
|
+
borderColor: (_colorMap$color4 = colorMap[color]) === null || _colorMap$color4 === void 0 ? void 0 : _colorMap$color4.foreground.default
|
|
215
159
|
},
|
|
216
160
|
/* Prevent Reanimated from overriding background colors
|
|
217
161
|
if button is disabled */
|
|
@@ -220,12 +164,12 @@ export const ButtonOutline = /*#__PURE__*/forwardRef(({
|
|
|
220
164
|
allowFontScaling: true,
|
|
221
165
|
name: icon,
|
|
222
166
|
animatedProps: pressedColorIconAnimationStyle,
|
|
223
|
-
color: (_colorMap$color5 = colorMap[color]) === null || _colorMap$color5 === void 0 || (_colorMap$color5 = _colorMap$color5.
|
|
167
|
+
color: (_colorMap$color5 = colorMap[color]) === null || _colorMap$color5 === void 0 || (_colorMap$color5 = _colorMap$color5.foreground) === null || _colorMap$color5 === void 0 ? void 0 : _colorMap$color5.default,
|
|
224
168
|
size: iconSize
|
|
225
169
|
}) : /*#__PURE__*/React.createElement(AnimatedIcon, {
|
|
226
170
|
allowFontScaling: true,
|
|
227
171
|
name: icon,
|
|
228
|
-
color: (_colorMap$color6 = colorMap[color]) === null || _colorMap$color6 === void 0 || (_colorMap$color6 = _colorMap$color6.
|
|
172
|
+
color: (_colorMap$color6 = colorMap[color]) === null || _colorMap$color6 === void 0 || (_colorMap$color6 = _colorMap$color6.foreground) === null || _colorMap$color6 === void 0 ? void 0 : _colorMap$color6.disabled,
|
|
229
173
|
size: iconSize
|
|
230
174
|
})), /*#__PURE__*/React.createElement(AnimatedIOText, {
|
|
231
175
|
font: isExperimental ? "Titillio" : "TitilliumSansPro",
|
|
@@ -237,7 +181,7 @@ export const ButtonOutline = /*#__PURE__*/forwardRef(({
|
|
|
237
181
|
numberOfLines: 1,
|
|
238
182
|
ellipsizeMode: "tail",
|
|
239
183
|
style: [buttonStyles.label, disabled ? {
|
|
240
|
-
color: (_colorMap$color7 = colorMap[color]) === null || _colorMap$color7 === void 0 || (_colorMap$color7 = _colorMap$color7.
|
|
184
|
+
color: (_colorMap$color7 = colorMap[color]) === null || _colorMap$color7 === void 0 || (_colorMap$color7 = _colorMap$color7.foreground) === null || _colorMap$color7 === void 0 ? void 0 : _colorMap$color7.disabled
|
|
241
185
|
} : {
|
|
242
186
|
...pressedColorLabelAnimationStyle
|
|
243
187
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","forwardRef","Pressable","StyleSheet","Animated","interpolateColor","useAnimatedProps","useAnimatedStyle","useReducedMotion","IOButtonLegacyStyles","IOButtonStyles","IOColors","hexToRgba","useIOExperimentalDesign","useScaleAnimation","AnimatedIcon","IconClassComponent","IOText","buttonTextFontSize","
|
|
1
|
+
{"version":3,"names":["React","forwardRef","Pressable","StyleSheet","Animated","interpolateColor","useAnimatedProps","useAnimatedStyle","useReducedMotion","IOButtonLegacyStyles","IOButtonStyles","IOColors","hexToRgba","useIOExperimentalDesign","useIOTheme","useScaleAnimation","AnimatedIcon","IconClassComponent","IOText","buttonTextFontSize","mapLegacyColorStates","primary","foreground","default","pressed","disabled","background","contrast","white","IOButtonLegacyStylesLocal","create","buttonWithBorder","borderWidth","iconSize","DISABLED_OPACITY","ICON_MARGIN","IOButtonStylesLocal","ButtonOutline","color","label","fullWidth","icon","iconPosition","onPress","accessibilityLabel","accessibilityHint","testID","ref","_colorMap$color","_colorMap$color2","_colorMap$color3","_colorMap$color4","_colorMap$color5","_colorMap$color6","_colorMap$color7","theme","isExperimental","progress","onPressIn","onPressOut","scaleAnimatedStyle","reducedMotion","AnimatedIOText","createAnimatedComponent","mapColorStates","useMemo","colorMap","buttonStyles","buttonStylesLocal","pressedAnimationStyle","backgroundColor","value","borderColor","pressedColorLabelAnimationStyle","pressedColorIconAnimationStyle","AnimatedIconClassComponent","createElement","accessibilityRole","accessibilityState","accessible","style","dimensionsDefault","View","button","paddingHorizontal","buttonSizeDefault","columnGap","flexDirection","opacity","allowFontScaling","name","animatedProps","size","font","weight","accessibilityElementsHidden","importantForAccessibility","numberOfLines","ellipsizeMode"],"sourceRoot":"../../../../src","sources":["components/buttons/ButtonOutline.tsx"],"mappings":"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"}
|
|
@@ -1,93 +1,57 @@
|
|
|
1
|
-
import React, { useCallback, useEffect, useRef } from "react";
|
|
2
|
-
import { Pressable
|
|
1
|
+
import React, { forwardRef, useCallback, useEffect, useMemo, useRef } from "react";
|
|
2
|
+
import { Pressable } from "react-native";
|
|
3
3
|
import ReactNativeHapticFeedback from "react-native-haptic-feedback";
|
|
4
4
|
import Animated, { interpolateColor, useAnimatedStyle, useReducedMotion } from "react-native-reanimated";
|
|
5
|
-
import { IOButtonLegacyStyles, IOButtonStyles, IOColors, enterTransitionInnerContent, enterTransitionInnerContentSmall, exitTransitionInnerContent, useIOExperimentalDesign } from "../../core";
|
|
5
|
+
import { IOButtonLegacyStyles, IOButtonStyles, IOColors, enterTransitionInnerContent, enterTransitionInnerContentSmall, exitTransitionInnerContent, useIOExperimentalDesign, useIOTheme } from "../../core";
|
|
6
6
|
import { useScaleAnimation } from "../../hooks";
|
|
7
7
|
import { Icon } from "../icons";
|
|
8
8
|
import { LoadingSpinner } from "../loadingSpinner";
|
|
9
9
|
import { ButtonText } from "../typography/ButtonText";
|
|
10
|
-
// Disabled state
|
|
11
|
-
// TODO: Remove this when legacy look is deprecated https://pagopa.atlassian.net/browse/IOPLT-153
|
|
12
|
-
const colorPrimaryLegacyButtonDisabled = "grey-200";
|
|
13
|
-
const legacyStyles = StyleSheet.create({
|
|
14
|
-
backgroundDisabled: {
|
|
15
|
-
backgroundColor: IOColors[colorPrimaryLegacyButtonDisabled]
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
const colorPrimaryButtonDisabled = "grey-200";
|
|
19
10
|
const ICON_MARGIN = 8;
|
|
20
11
|
const DISABLED_OPACITY = 0.5;
|
|
21
12
|
|
|
22
13
|
// Icon size
|
|
23
14
|
const iconSize = 20;
|
|
24
|
-
const styles = StyleSheet.create({
|
|
25
|
-
backgroundDisabled: {
|
|
26
|
-
backgroundColor: IOColors[colorPrimaryButtonDisabled],
|
|
27
|
-
opacity: DISABLED_OPACITY
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
const mapColorStates = {
|
|
31
|
-
// Primary button
|
|
32
|
-
primary: {
|
|
33
|
-
default: IOColors["blueIO-500"],
|
|
34
|
-
pressed: IOColors["blueIO-600"],
|
|
35
|
-
label: {
|
|
36
|
-
default: "white",
|
|
37
|
-
disabled: "grey-700"
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
// Danger button
|
|
41
|
-
danger: {
|
|
42
|
-
default: IOColors["error-600"],
|
|
43
|
-
pressed: IOColors["error-500"],
|
|
44
|
-
label: {
|
|
45
|
-
default: "white",
|
|
46
|
-
disabled: "grey-700"
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
// Contrast button
|
|
50
|
-
contrast: {
|
|
51
|
-
default: IOColors.white,
|
|
52
|
-
pressed: IOColors["blueIO-50"],
|
|
53
|
-
label: {
|
|
54
|
-
default: "blueIO-500",
|
|
55
|
-
disabled: "grey-700"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
15
|
// TODO: Remove this when legacy look is deprecated https://pagopa.atlassian.net/browse/IOPLT-153
|
|
61
16
|
const mapLegacyColorStates = {
|
|
62
17
|
// Primary button
|
|
63
18
|
primary: {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
19
|
+
background: {
|
|
20
|
+
default: IOColors["blue-500"],
|
|
21
|
+
pressed: IOColors["blue-600"],
|
|
22
|
+
disabled: IOColors["grey-200"]
|
|
23
|
+
},
|
|
24
|
+
foreground: {
|
|
67
25
|
default: "white",
|
|
68
26
|
disabled: "white"
|
|
69
27
|
}
|
|
70
28
|
},
|
|
71
29
|
// Danger button
|
|
72
30
|
danger: {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
31
|
+
background: {
|
|
32
|
+
default: IOColors["error-600"],
|
|
33
|
+
pressed: IOColors["error-500"],
|
|
34
|
+
disabled: IOColors["grey-200"]
|
|
35
|
+
},
|
|
36
|
+
foreground: {
|
|
76
37
|
default: "white",
|
|
77
38
|
disabled: "white"
|
|
78
39
|
}
|
|
79
40
|
},
|
|
80
41
|
// Contrast button
|
|
81
42
|
contrast: {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
43
|
+
background: {
|
|
44
|
+
default: IOColors.white,
|
|
45
|
+
pressed: IOColors["blue-50"],
|
|
46
|
+
disabled: IOColors["grey-200"]
|
|
47
|
+
},
|
|
48
|
+
foreground: {
|
|
85
49
|
default: "blue-500",
|
|
86
50
|
disabled: "white"
|
|
87
51
|
}
|
|
88
52
|
}
|
|
89
53
|
};
|
|
90
|
-
export const ButtonSolid = /*#__PURE__*/
|
|
54
|
+
export const ButtonSolid = /*#__PURE__*/forwardRef(({
|
|
91
55
|
color = "primary",
|
|
92
56
|
label,
|
|
93
57
|
fullWidth = false,
|
|
@@ -100,7 +64,8 @@ export const ButtonSolid = /*#__PURE__*/React.forwardRef(({
|
|
|
100
64
|
accessibilityHint,
|
|
101
65
|
testID
|
|
102
66
|
}, ref) => {
|
|
103
|
-
var _colorMap$color, _colorMap$color2, _colorMap$color3;
|
|
67
|
+
var _colorMap$color, _colorMap$color2, _colorMap$color3, _colorMap$color4;
|
|
68
|
+
const theme = useIOTheme();
|
|
104
69
|
const {
|
|
105
70
|
isExperimental
|
|
106
71
|
} = useIOExperimentalDesign();
|
|
@@ -111,8 +76,46 @@ export const ButtonSolid = /*#__PURE__*/React.forwardRef(({
|
|
|
111
76
|
scaleAnimatedStyle
|
|
112
77
|
} = useScaleAnimation();
|
|
113
78
|
const reducedMotion = useReducedMotion();
|
|
114
|
-
const
|
|
115
|
-
|
|
79
|
+
const mapColorStates = useMemo(() => ({
|
|
80
|
+
// Primary button
|
|
81
|
+
primary: {
|
|
82
|
+
background: {
|
|
83
|
+
default: IOColors[theme["interactiveElem-default"]],
|
|
84
|
+
pressed: IOColors[theme["interactiveElem-pressed"]],
|
|
85
|
+
disabled: IOColors[theme["interactiveElem-disabled"]]
|
|
86
|
+
},
|
|
87
|
+
foreground: {
|
|
88
|
+
default: theme["buttonText-default"],
|
|
89
|
+
disabled: theme["buttonText-disabled"]
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
// Danger button
|
|
93
|
+
danger: {
|
|
94
|
+
background: {
|
|
95
|
+
default: IOColors["error-600"],
|
|
96
|
+
pressed: IOColors["error-500"],
|
|
97
|
+
disabled: IOColors[theme["interactiveElem-disabled"]]
|
|
98
|
+
},
|
|
99
|
+
foreground: {
|
|
100
|
+
default: theme["buttonText-default"],
|
|
101
|
+
disabled: theme["buttonText-disabled"]
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
// Contrast button
|
|
105
|
+
contrast: {
|
|
106
|
+
background: {
|
|
107
|
+
default: IOColors.white,
|
|
108
|
+
pressed: IOColors["blueIO-50"],
|
|
109
|
+
disabled: IOColors["blueIO-50"]
|
|
110
|
+
},
|
|
111
|
+
foreground: {
|
|
112
|
+
default: "blueIO-500",
|
|
113
|
+
disabled: "blueIO-500"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}), [theme]);
|
|
117
|
+
const colorMap = useMemo(() => isExperimental ? mapColorStates : mapLegacyColorStates, [isExperimental, mapColorStates]);
|
|
118
|
+
const buttonStyles = useMemo(() => isExperimental ? IOButtonStyles : IOButtonLegacyStyles, [isExperimental]);
|
|
116
119
|
|
|
117
120
|
/* Prevent the component from triggering the `isEntering' transition
|
|
118
121
|
on the on the first render. Solution from this discussion:
|
|
@@ -127,7 +130,7 @@ export const ButtonSolid = /*#__PURE__*/React.forwardRef(({
|
|
|
127
130
|
// Interpolate animation values from `isPressed` values
|
|
128
131
|
const pressedAnimationStyle = useAnimatedStyle(() => {
|
|
129
132
|
// Link color states to the pressed states
|
|
130
|
-
const backgroundColor = interpolateColor(progress.value, [0, 1], [colorMap[color].default, colorMap[color].pressed]);
|
|
133
|
+
const backgroundColor = interpolateColor(progress.value, [0, 1], [colorMap[color].background.default, colorMap[color].background.pressed]);
|
|
131
134
|
return {
|
|
132
135
|
backgroundColor
|
|
133
136
|
};
|
|
@@ -142,8 +145,11 @@ export const ButtonSolid = /*#__PURE__*/React.forwardRef(({
|
|
|
142
145
|
onPress(event);
|
|
143
146
|
}, [loading, onPress]);
|
|
144
147
|
|
|
148
|
+
// Background
|
|
149
|
+
const backgroundColor = disabled ? (_colorMap$color = colorMap[color]) === null || _colorMap$color === void 0 || (_colorMap$color = _colorMap$color.background) === null || _colorMap$color === void 0 ? void 0 : _colorMap$color.disabled : (_colorMap$color2 = colorMap[color]) === null || _colorMap$color2 === void 0 || (_colorMap$color2 = _colorMap$color2.background) === null || _colorMap$color2 === void 0 ? void 0 : _colorMap$color2.default;
|
|
150
|
+
|
|
145
151
|
// Label & Icons colors
|
|
146
|
-
const foregroundColor = disabled ? (_colorMap$
|
|
152
|
+
const foregroundColor = disabled ? (_colorMap$color3 = colorMap[color]) === null || _colorMap$color3 === void 0 || (_colorMap$color3 = _colorMap$color3.foreground) === null || _colorMap$color3 === void 0 ? void 0 : _colorMap$color3.disabled : (_colorMap$color4 = colorMap[color]) === null || _colorMap$color4 === void 0 || (_colorMap$color4 = _colorMap$color4.foreground) === null || _colorMap$color4 === void 0 ? void 0 : _colorMap$color4.default;
|
|
147
153
|
return /*#__PURE__*/React.createElement(Pressable, {
|
|
148
154
|
testID: testID,
|
|
149
155
|
ref: ref,
|
|
@@ -164,12 +170,13 @@ export const ButtonSolid = /*#__PURE__*/React.forwardRef(({
|
|
|
164
170
|
style: !fullWidth ? IOButtonStyles.dimensionsDefault : {}
|
|
165
171
|
}, /*#__PURE__*/React.createElement(Animated.View, {
|
|
166
172
|
style: [buttonStyles.button, {
|
|
173
|
+
backgroundColor,
|
|
167
174
|
overflow: "hidden"
|
|
168
175
|
}, isExperimental && fullWidth && {
|
|
169
176
|
paddingHorizontal: 16
|
|
170
|
-
}, buttonStyles.buttonSizeDefault, disabled ?
|
|
171
|
-
|
|
172
|
-
},
|
|
177
|
+
}, buttonStyles.buttonSizeDefault, disabled ? {
|
|
178
|
+
opacity: DISABLED_OPACITY
|
|
179
|
+
} : {},
|
|
173
180
|
/* Prevent Reanimated from overriding background colors
|
|
174
181
|
if button is disabled */
|
|
175
182
|
!disabled && !reducedMotion && scaleAnimatedStyle, !disabled && pressedAnimationStyle]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","
|
|
1
|
+
{"version":3,"names":["React","forwardRef","useCallback","useEffect","useMemo","useRef","Pressable","ReactNativeHapticFeedback","Animated","interpolateColor","useAnimatedStyle","useReducedMotion","IOButtonLegacyStyles","IOButtonStyles","IOColors","enterTransitionInnerContent","enterTransitionInnerContentSmall","exitTransitionInnerContent","useIOExperimentalDesign","useIOTheme","useScaleAnimation","Icon","LoadingSpinner","ButtonText","ICON_MARGIN","DISABLED_OPACITY","iconSize","mapLegacyColorStates","primary","background","default","pressed","disabled","foreground","danger","contrast","white","ButtonSolid","color","label","fullWidth","loading","icon","iconPosition","onPress","accessibilityLabel","accessibilityHint","testID","ref","_colorMap$color","_colorMap$color2","_colorMap$color3","_colorMap$color4","theme","isExperimental","progress","onPressIn","onPressOut","scaleAnimatedStyle","reducedMotion","mapColorStates","colorMap","buttonStyles","isMounted","current","pressedAnimationStyle","backgroundColor","value","handleOnPress","event","trigger","foregroundColor","createElement","accessible","accessibilityState","busy","accessibilityRole","style","dimensionsDefault","View","button","overflow","paddingHorizontal","buttonSizeDefault","opacity","buttonInner","entering","undefined","exiting","columnGap","flexDirection","allowFontScaling","name","size","numberOfLines","ellipsizeMode","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"../../../../src","sources":["components/buttons/ButtonSolid.tsx"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from "react";
|
|
2
2
|
import { Pressable } from "react-native";
|
|
3
3
|
import Animated, { interpolateColor, useAnimatedProps, useReducedMotion } from "react-native-reanimated";
|
|
4
|
-
import { IOColors, IOIconButtonStyles, IOStyles, hexToRgba, useIOExperimentalDesign } from "../../core";
|
|
4
|
+
import { IOColors, IOIconButtonStyles, IOStyles, hexToRgba, useIOExperimentalDesign, useIOTheme } from "../../core";
|
|
5
5
|
import { useScaleAnimation } from "../../hooks";
|
|
6
6
|
import { AnimatedIcon, IconClassComponent } from "../icons";
|
|
7
7
|
// TODO: Remove this when legacy look is deprecated https://pagopa.atlassian.net/browse/IOPLT-153
|
|
@@ -31,32 +31,6 @@ const mapLegacyColorStates = {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
|
-
const mapColorStates = {
|
|
35
|
-
// Primary button
|
|
36
|
-
primary: {
|
|
37
|
-
icon: {
|
|
38
|
-
default: IOColors["blueIO-500"],
|
|
39
|
-
pressed: IOColors["blueIO-600"],
|
|
40
|
-
disabled: hexToRgba(IOColors["blueIO-500"], 0.25)
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
// Neutral button
|
|
44
|
-
neutral: {
|
|
45
|
-
icon: {
|
|
46
|
-
default: IOColors.black,
|
|
47
|
-
pressed: IOColors["grey-850"],
|
|
48
|
-
disabled: IOColors["grey-450"]
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
// Contrast button
|
|
52
|
-
contrast: {
|
|
53
|
-
icon: {
|
|
54
|
-
default: IOColors.white,
|
|
55
|
-
pressed: hexToRgba(IOColors.white, 0.85),
|
|
56
|
-
disabled: hexToRgba(IOColors.white, 0.25)
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
34
|
const AnimatedIconClassComponent = Animated.createAnimatedComponent(IconClassComponent);
|
|
61
35
|
export const IconButton = ({
|
|
62
36
|
color = "primary",
|
|
@@ -69,6 +43,7 @@ export const IconButton = ({
|
|
|
69
43
|
testID
|
|
70
44
|
}) => {
|
|
71
45
|
var _colorMap$color, _colorMap$color2;
|
|
46
|
+
const theme = useIOTheme();
|
|
72
47
|
const {
|
|
73
48
|
progress,
|
|
74
49
|
onPressIn,
|
|
@@ -79,7 +54,33 @@ export const IconButton = ({
|
|
|
79
54
|
const {
|
|
80
55
|
isExperimental
|
|
81
56
|
} = useIOExperimentalDesign();
|
|
82
|
-
const
|
|
57
|
+
const mapColorStates = useMemo(() => ({
|
|
58
|
+
// Primary button
|
|
59
|
+
primary: {
|
|
60
|
+
icon: {
|
|
61
|
+
default: IOColors[theme["interactiveElem-default"]],
|
|
62
|
+
pressed: IOColors[theme["interactiveElem-pressed"]],
|
|
63
|
+
disabled: IOColors[theme["interactiveElem-disabled"]]
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
// Neutral button
|
|
67
|
+
neutral: {
|
|
68
|
+
icon: {
|
|
69
|
+
default: IOColors[theme["neutralButton-default"]],
|
|
70
|
+
pressed: IOColors[theme["neutralButton-pressed"]],
|
|
71
|
+
disabled: IOColors[theme["neutralButton-disabled"]]
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
// Contrast button
|
|
75
|
+
contrast: {
|
|
76
|
+
icon: {
|
|
77
|
+
default: IOColors.white,
|
|
78
|
+
pressed: hexToRgba(IOColors.white, 0.85),
|
|
79
|
+
disabled: hexToRgba(IOColors.white, 0.25)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}), [theme]);
|
|
83
|
+
const colorMap = useMemo(() => isExperimental ? mapColorStates : mapLegacyColorStates, [isExperimental, mapColorStates]);
|
|
83
84
|
|
|
84
85
|
// Animate the <Icon> color prop
|
|
85
86
|
const animatedColor = useAnimatedProps(() => {
|