@pagopa/io-app-design-system 1.18.0 → 1.19.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.
Files changed (193) hide show
  1. package/lib/commonjs/components/Advice/__test__/__snapshots__/advice.test.tsx.snap +110 -0
  2. package/lib/commonjs/components/Advice/__test__/advice.test.js +9 -0
  3. package/lib/commonjs/components/Advice/__test__/advice.test.js.map +1 -1
  4. package/lib/commonjs/components/accordion/AccordionItem.js +25 -9
  5. package/lib/commonjs/components/accordion/AccordionItem.js.map +1 -1
  6. package/lib/commonjs/components/avatar/__test__/__snapshots__/avatar.test.tsx.snap +37 -0
  7. package/lib/commonjs/components/avatar/__test__/avatar.test.js +13 -0
  8. package/lib/commonjs/components/avatar/__test__/avatar.test.js.map +1 -1
  9. package/lib/commonjs/components/badge/__test__/__snapshots__/badge.test.tsx.snap +46 -0
  10. package/lib/commonjs/components/badge/__test__/badge.test.js +10 -0
  11. package/lib/commonjs/components/badge/__test__/badge.test.js.map +1 -1
  12. package/lib/commonjs/components/banner/__test__/__snapshots__/banner.test.tsx.snap +315 -0
  13. package/lib/commonjs/components/banner/__test__/banner.test.js +15 -0
  14. package/lib/commonjs/components/banner/__test__/banner.test.js.map +1 -1
  15. package/lib/commonjs/components/buttons/__test__/__snapshots__/button.test.tsx.snap +862 -0
  16. package/lib/commonjs/components/buttons/__test__/button.test.js +57 -0
  17. package/lib/commonjs/components/buttons/__test__/button.test.js.map +1 -1
  18. package/lib/commonjs/components/endOfPage/EndOfPage.js +36 -0
  19. package/lib/commonjs/components/endOfPage/EndOfPage.js.map +1 -0
  20. package/lib/commonjs/components/endOfPage/index.js +17 -0
  21. package/lib/commonjs/components/endOfPage/index.js.map +1 -0
  22. package/lib/commonjs/components/icons/Icon.js +15 -3
  23. package/lib/commonjs/components/icons/Icon.js.map +1 -1
  24. package/lib/commonjs/components/icons/svg/IconSystemLocationiOS.js +34 -0
  25. package/lib/commonjs/components/icons/svg/IconSystemLocationiOS.js.map +1 -0
  26. package/lib/commonjs/components/icons/svg/IconSystemNotificationsInstructions.js +1 -0
  27. package/lib/commonjs/components/icons/svg/IconSystemNotificationsInstructions.js.map +1 -1
  28. package/lib/commonjs/components/icons/svg/IconSystemPhotosiOS.js +105 -0
  29. package/lib/commonjs/components/icons/svg/IconSystemPhotosiOS.js.map +1 -0
  30. package/lib/commonjs/components/icons/svg/IconSystemPrivacyiOS.js +34 -0
  31. package/lib/commonjs/components/icons/svg/IconSystemPrivacyiOS.js.map +1 -0
  32. package/lib/commonjs/components/icons/svg/originals/IconSystemLocationiOS.svg +7 -0
  33. package/lib/commonjs/components/icons/svg/originals/IconSystemNotificationsInstructions.svg +22 -0
  34. package/lib/commonjs/components/icons/svg/originals/IconSystemPhotosiOS.svg +99 -0
  35. package/lib/commonjs/components/icons/svg/originals/IconSystemPrivacyiOS.svg +14 -0
  36. package/lib/commonjs/components/image/Image.js +47 -0
  37. package/lib/commonjs/components/image/Image.js.map +1 -0
  38. package/lib/commonjs/components/image/index.js +17 -0
  39. package/lib/commonjs/components/image/index.js.map +1 -0
  40. package/lib/commonjs/components/index.js +22 -0
  41. package/lib/commonjs/components/index.js.map +1 -1
  42. package/lib/commonjs/components/layout/HeaderSecondLevel.js +9 -3
  43. package/lib/commonjs/components/layout/HeaderSecondLevel.js.map +1 -1
  44. package/lib/commonjs/components/listitems/ListItemHeader.js +4 -3
  45. package/lib/commonjs/components/listitems/ListItemHeader.js.map +1 -1
  46. package/lib/commonjs/components/listitems/ListItemRadioWithAmount.js +4 -1
  47. package/lib/commonjs/components/listitems/ListItemRadioWithAmount.js.map +1 -1
  48. package/lib/commonjs/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +1729 -0
  49. package/lib/commonjs/components/listitems/__test__/listitem.test.js +83 -3
  50. package/lib/commonjs/components/listitems/__test__/listitem.test.js.map +1 -1
  51. package/lib/commonjs/components/radio/RadioGroup.js +25 -21
  52. package/lib/commonjs/components/radio/RadioGroup.js.map +1 -1
  53. package/lib/commonjs/components/tabs/TabItem.js +13 -6
  54. package/lib/commonjs/components/tabs/TabItem.js.map +1 -1
  55. package/lib/commonjs/components/typography/LabelHeader.js +6 -4
  56. package/lib/commonjs/components/typography/LabelHeader.js.map +1 -1
  57. package/lib/commonjs/core/IODSExperimentalContextProvider.js +9 -9
  58. package/lib/commonjs/core/IODSExperimentalContextProvider.js.map +1 -1
  59. package/lib/commonjs/utils/testing.js +15 -0
  60. package/lib/commonjs/utils/testing.js.map +1 -0
  61. package/lib/module/components/Advice/__test__/__snapshots__/advice.test.tsx.snap +110 -0
  62. package/lib/module/components/Advice/__test__/advice.test.js +9 -0
  63. package/lib/module/components/Advice/__test__/advice.test.js.map +1 -1
  64. package/lib/module/components/accordion/AccordionItem.js +27 -11
  65. package/lib/module/components/accordion/AccordionItem.js.map +1 -1
  66. package/lib/module/components/avatar/__test__/__snapshots__/avatar.test.tsx.snap +37 -0
  67. package/lib/module/components/avatar/__test__/avatar.test.js +13 -0
  68. package/lib/module/components/avatar/__test__/avatar.test.js.map +1 -1
  69. package/lib/module/components/badge/__test__/__snapshots__/badge.test.tsx.snap +46 -0
  70. package/lib/module/components/badge/__test__/badge.test.js +10 -0
  71. package/lib/module/components/badge/__test__/badge.test.js.map +1 -1
  72. package/lib/module/components/banner/__test__/__snapshots__/banner.test.tsx.snap +315 -0
  73. package/lib/module/components/banner/__test__/banner.test.js +15 -0
  74. package/lib/module/components/banner/__test__/banner.test.js.map +1 -1
  75. package/lib/module/components/buttons/__test__/__snapshots__/button.test.tsx.snap +862 -0
  76. package/lib/module/components/buttons/__test__/button.test.js +57 -0
  77. package/lib/module/components/buttons/__test__/button.test.js.map +1 -1
  78. package/lib/module/components/endOfPage/EndOfPage.js +28 -0
  79. package/lib/module/components/endOfPage/EndOfPage.js.map +1 -0
  80. package/lib/module/components/endOfPage/index.js +2 -0
  81. package/lib/module/components/endOfPage/index.js.map +1 -0
  82. package/lib/module/components/icons/Icon.js +15 -3
  83. package/lib/module/components/icons/Icon.js.map +1 -1
  84. package/lib/module/components/icons/svg/IconSystemLocationiOS.js +26 -0
  85. package/lib/module/components/icons/svg/IconSystemLocationiOS.js.map +1 -0
  86. package/lib/module/components/icons/svg/IconSystemNotificationsInstructions.js +2 -1
  87. package/lib/module/components/icons/svg/IconSystemNotificationsInstructions.js.map +1 -1
  88. package/lib/module/components/icons/svg/IconSystemPhotosiOS.js +97 -0
  89. package/lib/module/components/icons/svg/IconSystemPhotosiOS.js.map +1 -0
  90. package/lib/module/components/icons/svg/IconSystemPrivacyiOS.js +26 -0
  91. package/lib/module/components/icons/svg/IconSystemPrivacyiOS.js.map +1 -0
  92. package/lib/module/components/icons/svg/originals/IconSystemLocationiOS.svg +7 -0
  93. package/lib/module/components/icons/svg/originals/IconSystemNotificationsInstructions.svg +22 -0
  94. package/lib/module/components/icons/svg/originals/IconSystemPhotosiOS.svg +99 -0
  95. package/lib/module/components/icons/svg/originals/IconSystemPrivacyiOS.svg +14 -0
  96. package/lib/module/components/image/Image.js +39 -0
  97. package/lib/module/components/image/Image.js.map +1 -0
  98. package/lib/module/components/image/index.js +2 -0
  99. package/lib/module/components/image/index.js.map +1 -0
  100. package/lib/module/components/index.js +2 -0
  101. package/lib/module/components/index.js.map +1 -1
  102. package/lib/module/components/layout/HeaderSecondLevel.js +9 -3
  103. package/lib/module/components/layout/HeaderSecondLevel.js.map +1 -1
  104. package/lib/module/components/listitems/ListItemHeader.js +4 -3
  105. package/lib/module/components/listitems/ListItemHeader.js.map +1 -1
  106. package/lib/module/components/listitems/ListItemRadioWithAmount.js +4 -1
  107. package/lib/module/components/listitems/ListItemRadioWithAmount.js.map +1 -1
  108. package/lib/module/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +1729 -0
  109. package/lib/module/components/listitems/__test__/listitem.test.js +83 -3
  110. package/lib/module/components/listitems/__test__/listitem.test.js.map +1 -1
  111. package/lib/module/components/radio/RadioGroup.js +25 -21
  112. package/lib/module/components/radio/RadioGroup.js.map +1 -1
  113. package/lib/module/components/tabs/TabItem.js +13 -6
  114. package/lib/module/components/tabs/TabItem.js.map +1 -1
  115. package/lib/module/components/typography/LabelHeader.js +6 -4
  116. package/lib/module/components/typography/LabelHeader.js.map +1 -1
  117. package/lib/module/core/IODSExperimentalContextProvider.js +3 -3
  118. package/lib/module/core/IODSExperimentalContextProvider.js.map +1 -1
  119. package/lib/module/utils/testing.js +7 -0
  120. package/lib/module/utils/testing.js.map +1 -0
  121. package/lib/typescript/components/accordion/AccordionItem.d.ts +3 -1
  122. package/lib/typescript/components/accordion/AccordionItem.d.ts.map +1 -1
  123. package/lib/typescript/components/endOfPage/EndOfPage.d.ts +23 -0
  124. package/lib/typescript/components/endOfPage/EndOfPage.d.ts.map +1 -0
  125. package/lib/typescript/components/endOfPage/index.d.ts +2 -0
  126. package/lib/typescript/components/endOfPage/index.d.ts.map +1 -0
  127. package/lib/typescript/components/icons/Icon.d.ts +6 -0
  128. package/lib/typescript/components/icons/Icon.d.ts.map +1 -1
  129. package/lib/typescript/components/icons/svg/IconSystemLocationiOS.d.ts +5 -0
  130. package/lib/typescript/components/icons/svg/IconSystemLocationiOS.d.ts.map +1 -0
  131. package/lib/typescript/components/icons/svg/IconSystemNotificationsInstructions.d.ts.map +1 -1
  132. package/lib/typescript/components/icons/svg/IconSystemPhotosiOS.d.ts +5 -0
  133. package/lib/typescript/components/icons/svg/IconSystemPhotosiOS.d.ts.map +1 -0
  134. package/lib/typescript/components/icons/svg/IconSystemPrivacyiOS.d.ts +5 -0
  135. package/lib/typescript/components/icons/svg/IconSystemPrivacyiOS.d.ts.map +1 -0
  136. package/lib/typescript/components/image/Image.d.ts +17 -0
  137. package/lib/typescript/components/image/Image.d.ts.map +1 -0
  138. package/lib/typescript/components/image/index.d.ts +2 -0
  139. package/lib/typescript/components/image/index.d.ts.map +1 -0
  140. package/lib/typescript/components/index.d.ts +2 -0
  141. package/lib/typescript/components/index.d.ts.map +1 -1
  142. package/lib/typescript/components/layout/HeaderSecondLevel.d.ts +10 -4
  143. package/lib/typescript/components/layout/HeaderSecondLevel.d.ts.map +1 -1
  144. package/lib/typescript/components/listitems/ListItemHeader.d.ts +2 -2
  145. package/lib/typescript/components/listitems/ListItemHeader.d.ts.map +1 -1
  146. package/lib/typescript/components/listitems/ListItemRadioWithAmount.d.ts +1 -0
  147. package/lib/typescript/components/listitems/ListItemRadioWithAmount.d.ts.map +1 -1
  148. package/lib/typescript/components/radio/RadioGroup.d.ts +22 -9
  149. package/lib/typescript/components/radio/RadioGroup.d.ts.map +1 -1
  150. package/lib/typescript/components/tabs/TabItem.d.ts +2 -1
  151. package/lib/typescript/components/tabs/TabItem.d.ts.map +1 -1
  152. package/lib/typescript/components/typography/LabelHeader.d.ts +1 -1
  153. package/lib/typescript/components/typography/LabelHeader.d.ts.map +1 -1
  154. package/lib/typescript/core/IODSExperimentalContextProvider.d.ts +5 -1
  155. package/lib/typescript/core/IODSExperimentalContextProvider.d.ts.map +1 -1
  156. package/lib/typescript/utils/testing.d.ts +4 -0
  157. package/lib/typescript/utils/testing.d.ts.map +1 -0
  158. package/package.json +1 -1
  159. package/src/components/Advice/__test__/__snapshots__/advice.test.tsx.snap +110 -0
  160. package/src/components/Advice/__test__/advice.test.tsx +10 -0
  161. package/src/components/accordion/AccordionItem.tsx +33 -13
  162. package/src/components/avatar/__test__/__snapshots__/avatar.test.tsx.snap +37 -0
  163. package/src/components/avatar/__test__/avatar.test.tsx +10 -0
  164. package/src/components/badge/__test__/__snapshots__/badge.test.tsx.snap +46 -0
  165. package/src/components/badge/__test__/badge.test.tsx +10 -0
  166. package/src/components/banner/__test__/__snapshots__/banner.test.tsx.snap +315 -0
  167. package/src/components/banner/__test__/banner.test.tsx +18 -0
  168. package/src/components/buttons/__test__/__snapshots__/button.test.tsx.snap +862 -0
  169. package/src/components/buttons/__test__/button.test.tsx +77 -1
  170. package/src/components/endOfPage/EndOfPage.tsx +55 -0
  171. package/src/components/endOfPage/index.tsx +1 -0
  172. package/src/components/icons/Icon.tsx +15 -3
  173. package/src/components/icons/svg/IconSystemLocationiOS.tsx +15 -0
  174. package/src/components/icons/svg/IconSystemNotificationsInstructions.tsx +2 -1
  175. package/src/components/icons/svg/IconSystemPhotosiOS.tsx +114 -0
  176. package/src/components/icons/svg/IconSystemPrivacyiOS.tsx +15 -0
  177. package/src/components/icons/svg/originals/IconSystemLocationiOS.svg +7 -0
  178. package/src/components/icons/svg/originals/IconSystemNotificationsInstructions.svg +22 -0
  179. package/src/components/icons/svg/originals/IconSystemPhotosiOS.svg +99 -0
  180. package/src/components/icons/svg/originals/IconSystemPrivacyiOS.svg +14 -0
  181. package/src/components/image/Image.tsx +49 -0
  182. package/src/components/image/index.tsx +1 -0
  183. package/src/components/index.tsx +2 -0
  184. package/src/components/layout/HeaderSecondLevel.tsx +28 -10
  185. package/src/components/listitems/ListItemHeader.tsx +6 -3
  186. package/src/components/listitems/ListItemRadioWithAmount.tsx +5 -1
  187. package/src/components/listitems/__test__/__snapshots__/listitem.test.tsx.snap +1729 -0
  188. package/src/components/listitems/__test__/listitem.test.tsx +104 -3
  189. package/src/components/radio/RadioGroup.tsx +61 -11
  190. package/src/components/tabs/TabItem.tsx +22 -6
  191. package/src/components/typography/LabelHeader.tsx +11 -6
  192. package/src/core/IODSExperimentalContextProvider.tsx +3 -3
  193. package/src/utils/testing.tsx +14 -0
@@ -1,15 +1,16 @@
1
1
  import React from "react";
2
2
  import { Alert } from "react-native";
3
3
  import * as TestRenderer from "react-test-renderer";
4
+ import { TestRendererWithExperimentalEnabledContextProvider } from "../../../utils/testing";
5
+ import ListItemIDP from "../../modules/ModuleIDP";
6
+ import ListItemAction from "../ListItemAction";
4
7
  import ListItemInfo from "../ListItemInfo";
5
8
  import ListItemInfoCopy from "../ListItemInfoCopy";
6
9
  import ListItemNav from "../ListItemNav";
7
10
  import ListItemNavAlert from "../ListItemNavAlert";
8
- import ListItemAction from "../ListItemAction";
9
- import ListItemIDP from "../../modules/ModuleIDP";
11
+ import { ListItemRadioWithAmount } from "../ListItemRadioWithAmount";
10
12
  import { ListItemTransaction } from "../ListItemTransaction";
11
13
  import { PressableListItemBase } from "../PressableListItemsBase";
12
- import { ListItemRadioWithAmount } from "../ListItemRadioWithAmount";
13
14
 
14
15
  const onButtonPress = () => {
15
16
  Alert.alert("Alert", "Action triggered");
@@ -114,3 +115,103 @@ describe("Test List Item Components", () => {
114
115
  expect(notSuggested).toMatchSnapshot();
115
116
  });
116
117
  });
118
+
119
+ describe("Test List Item Components - Experimental Enabled ", () => {
120
+ it("ListItemInfo Snapshot", () => {
121
+ const listItemInfo = TestRendererWithExperimentalEnabledContextProvider(
122
+ <ListItemInfo
123
+ label={"label"}
124
+ value={"testValue"}
125
+ accessibilityLabel={"accessibilityLabel"}
126
+ ></ListItemInfo>
127
+ ).toJSON();
128
+ expect(listItemInfo).toMatchSnapshot();
129
+ });
130
+ it("ListItemInfoCopy Snapshot", () => {
131
+ const listItemInfoCopy = TestRendererWithExperimentalEnabledContextProvider(
132
+ <ListItemInfoCopy
133
+ label={"label"}
134
+ value={"testValue"}
135
+ onPress={onButtonPress}
136
+ accessibilityLabel={"accessibilityLabel"}
137
+ ></ListItemInfoCopy>
138
+ ).toJSON();
139
+ expect(listItemInfoCopy).toMatchSnapshot();
140
+ });
141
+ it("ListItemNav Snapshot", () => {
142
+ const listItemNav = TestRendererWithExperimentalEnabledContextProvider(
143
+ <ListItemNav
144
+ value={"testValue"}
145
+ onPress={onButtonPress}
146
+ accessibilityLabel={"accessibilityLabel"}
147
+ ></ListItemNav>
148
+ ).toJSON();
149
+ expect(listItemNav).toMatchSnapshot();
150
+ });
151
+ it("ListItemNavAlert Snapshot", () => {
152
+ const listItemNavAlert = TestRendererWithExperimentalEnabledContextProvider(
153
+ <ListItemNavAlert
154
+ value={"testValue"}
155
+ onPress={onButtonPress}
156
+ accessibilityLabel={"accessibilityLabel"}
157
+ ></ListItemNavAlert>
158
+ ).toJSON();
159
+ expect(listItemNavAlert).toMatchSnapshot();
160
+ });
161
+ it("ListItemAction Snapshot", () => {
162
+ const listItemAction = TestRendererWithExperimentalEnabledContextProvider(
163
+ <ListItemAction
164
+ label={"label"}
165
+ variant={"primary"}
166
+ onPress={onButtonPress}
167
+ accessibilityLabel={"accessibilityLabel"}
168
+ ></ListItemAction>
169
+ ).toJSON();
170
+ expect(listItemAction).toMatchSnapshot();
171
+ });
172
+ it("ListItemIDP Snapshot", () => {
173
+ const listItemIDP = TestRendererWithExperimentalEnabledContextProvider(
174
+ <ListItemIDP></ListItemIDP>
175
+ ).toJSON();
176
+ expect(listItemIDP).toMatchSnapshot();
177
+ });
178
+ it("ListItemTransaction Snapshot", () => {
179
+ const listItemIDP = TestRendererWithExperimentalEnabledContextProvider(
180
+ <ListItemTransaction
181
+ title="TITLE"
182
+ subtitle="subtitle"
183
+ transactionStatus="success"
184
+ transactionAmount="€ 1.000,00"
185
+ isLoading={true}
186
+ onPress={onButtonPress}
187
+ />
188
+ ).toJSON();
189
+ expect(listItemIDP).toMatchSnapshot();
190
+ });
191
+ it("PressableListItemsBase Snapshot", () => {
192
+ const listItemIDP = TestRendererWithExperimentalEnabledContextProvider(
193
+ <PressableListItemBase></PressableListItemBase>
194
+ ).toJSON();
195
+ expect(listItemIDP).toMatchSnapshot();
196
+ });
197
+ it("ListItemRadioWithAmount Snapshot", () => {
198
+ const suggested = TestRendererWithExperimentalEnabledContextProvider(
199
+ <ListItemRadioWithAmount
200
+ formattedAmountString="€ 1.000,00"
201
+ label="label"
202
+ suggestReason="suggestReason"
203
+ isSuggested={true}
204
+ selected={true}
205
+ />
206
+ ).toJSON();
207
+ const notSuggested = TestRendererWithExperimentalEnabledContextProvider(
208
+ <ListItemRadioWithAmount
209
+ formattedAmountString="€ 1.000,00"
210
+ label="label"
211
+ isSuggested={false}
212
+ />
213
+ ).toJSON();
214
+ expect(suggested).toMatchSnapshot();
215
+ expect(notSuggested).toMatchSnapshot();
216
+ });
217
+ });
@@ -1,7 +1,6 @@
1
1
  import React, { ComponentProps } from "react";
2
- import { View } from "react-native";
3
2
  import { Divider } from "../divider";
4
- import { ListItemRadio } from "../listitems/ListItemRadio";
3
+ import { ListItemRadio, ListItemRadioWithAmount } from "../listitems";
5
4
 
6
5
  export type RadioItem<T> = {
7
6
  id: T;
@@ -12,20 +11,45 @@ export type RadioItem<T> = {
12
11
  loadingProps?: ComponentProps<typeof ListItemRadio>["loadingProps"];
13
12
  };
14
13
 
15
- type Props<T> = {
16
- items: ReadonlyArray<RadioItem<T>>;
14
+ export type RadioItemWithAmount<T> = {
15
+ id: T;
16
+ label: string;
17
+ formattedAmountString: string;
18
+ } & (
19
+ | {
20
+ isSuggested?: false;
21
+ }
22
+ | {
23
+ isSuggested: true;
24
+ suggestReason: string;
25
+ }
26
+ );
27
+ type CommonProps<T> = {
17
28
  selectedItem?: T;
18
29
  onPress: (selected: T) => void;
19
30
  };
20
31
 
32
+ type RadioListItemProps<T> = {
33
+ type: "radioListItem";
34
+ items: ReadonlyArray<RadioItem<T>>;
35
+ } & CommonProps<T>;
36
+
37
+ type RadioListItemWithAmountProps<T> = {
38
+ type: "radioListItemWithAmount";
39
+ items: ReadonlyArray<RadioItemWithAmount<T>>;
40
+ } & CommonProps<T>;
41
+
42
+ type Props<T> = RadioListItemProps<T> | RadioListItemWithAmountProps<T>;
43
+
21
44
  /**
22
45
  * A list of radio buttons.
23
46
  * The management of the selection is demanded and derived by the `selectedItem` prop.
24
47
  * The item with the `id` equal to the `selectedItem` is the active one.
25
48
  */
26
- export const RadioGroup = <T,>({ items, selectedItem, onPress }: Props<T>) => (
27
- <View>
28
- {items.map((item, index) => (
49
+
50
+ const RadioListItem = <T,>(props: RadioListItemProps<T>) => (
51
+ <>
52
+ {props.items.map((item, index) => (
29
53
  <React.Fragment key={`radio_item_${item.id}`}>
30
54
  <ListItemRadio
31
55
  testID={`RadioItemTestID_${item.id}`}
@@ -34,11 +58,37 @@ export const RadioGroup = <T,>({ items, selectedItem, onPress }: Props<T>) => (
34
58
  startImage={item.startImage}
35
59
  disabled={item.disabled}
36
60
  loadingProps={item.loadingProps}
37
- onValueChange={() => onPress(item.id)}
38
- selected={selectedItem === item.id}
61
+ onValueChange={() => props.onPress(item.id)}
62
+ selected={props.selectedItem === item.id}
39
63
  />
40
- {index < items.length - 1 && <Divider />}
64
+ {index < props.items.length - 1 && <Divider />}
41
65
  </React.Fragment>
42
66
  ))}
43
- </View>
67
+ </>
68
+ );
69
+
70
+ const RadioListItemWithAmount = <T,>(
71
+ props: RadioListItemWithAmountProps<T>
72
+ ) => (
73
+ <>
74
+ {props.items.map((item, index) => (
75
+ <React.Fragment key={`radio_item_${item.id}`}>
76
+ <ListItemRadioWithAmount
77
+ label={item.label}
78
+ formattedAmountString={item.formattedAmountString}
79
+ suggestReason={item.isSuggested ? item.suggestReason : ""}
80
+ isSuggested={item.isSuggested}
81
+ onValueChange={() => props.onPress(item.id)}
82
+ selected={props.selectedItem === item.id}
83
+ />
84
+ {index < props.items.length - 1 && <Divider />}
85
+ </React.Fragment>
86
+ ))}
87
+ </>
88
+ );
89
+ export const RadioGroup = <T,>(props: Props<T>) => (
90
+ <>
91
+ {props.type === "radioListItem" && RadioListItem(props)}
92
+ {props.type === "radioListItemWithAmount" && RadioListItemWithAmount(props)}
93
+ </>
44
94
  );
@@ -31,6 +31,7 @@ export type TabItem = WithTestID<{
31
31
  accessibilityHint?: string;
32
32
  // Events
33
33
  onPress?: (event: GestureResponderEvent) => void;
34
+ disabled?: boolean;
34
35
  }>;
35
36
 
36
37
  type ColorStates = {
@@ -42,6 +43,7 @@ type ColorStates = {
42
43
  foreground: {
43
44
  default: IOColors;
44
45
  selected: IOColors;
46
+ disabled: IOColors;
45
47
  };
46
48
  };
47
49
 
@@ -53,8 +55,9 @@ const mapColorStates: Record<NonNullable<TabItem["color"]>, ColorStates> = {
53
55
  pressed: IOColors["grey-50"]
54
56
  },
55
57
  foreground: {
56
- default: "grey-650",
57
- selected: "black"
58
+ default: "black",
59
+ selected: "black",
60
+ disabled: "grey-700"
58
61
  }
59
62
  },
60
63
  dark: {
@@ -65,7 +68,8 @@ const mapColorStates: Record<NonNullable<TabItem["color"]>, ColorStates> = {
65
68
  },
66
69
  foreground: {
67
70
  default: "white",
68
- selected: "grey-850"
71
+ selected: "black",
72
+ disabled: "white"
69
73
  }
70
74
  }
71
75
  };
@@ -79,6 +83,7 @@ const TabItem = ({
79
83
  accessibilityHint,
80
84
  testID,
81
85
  onPress,
86
+ disabled = false,
82
87
  icon,
83
88
  iconSelected
84
89
  }: TabItem) => {
@@ -89,7 +94,11 @@ const TabItem = ({
89
94
  } = useSpringPressProgressValue(IOSpringValues.selection);
90
95
 
91
96
  const colors = mapColorStates[color];
92
- const foregroundColor = colors.foreground[selected ? "selected" : "default"];
97
+
98
+ const foregroundColor =
99
+ colors.foreground[
100
+ selected ? "selected" : disabled ? "disabled" : "default"
101
+ ];
93
102
 
94
103
  const opaquePressedBackgroundColor = hexToRgba(
95
104
  colors.background.pressed,
@@ -149,9 +158,15 @@ const TabItem = ({
149
158
  onPressIn={onPressIn}
150
159
  onPressOut={onPressOut}
151
160
  accessible={true}
161
+ disabled={disabled}
152
162
  >
153
163
  <Animated.View
154
- style={[styles.container, animatedStyle, fullWidth && styles.fullWidth]}
164
+ style={[
165
+ styles.container,
166
+ animatedStyle,
167
+ fullWidth && styles.fullWidth,
168
+ disabled && styles.disabled
169
+ ]}
155
170
  >
156
171
  {activeIcon && (
157
172
  <>
@@ -177,7 +192,8 @@ const styles = StyleSheet.create({
177
192
  },
178
193
  fullWidth: {
179
194
  alignSelf: "auto"
180
- }
195
+ },
196
+ disabled: { opacity: 0.5 }
181
197
  });
182
198
 
183
199
  export { TabItem };
@@ -9,7 +9,7 @@ type AllowedColors =
9
9
  | "grey-850"
10
10
  | "white"
11
11
  | "black";
12
- type AllowedWeight = Extract<IOFontWeight, "Regular">;
12
+ type AllowedWeight = Extract<IOFontWeight, "Regular" | "SemiBold">;
13
13
 
14
14
  type LabelHeaderProps = ExternalTypographyProps<
15
15
  TypographyProps<AllowedWeight, AllowedColors>
@@ -24,21 +24,26 @@ const labelHeaderDefaultWeight: AllowedWeight = "Regular";
24
24
 
25
25
  // TODO: Remove this when legacy look is deprecated https://pagopa.atlassian.net/browse/IOPLT-153
26
26
  const legacyLabelHeaderFontName: IOFontFamily = "TitilliumWeb";
27
-
27
+ const legacyLabelHeaderWeight: AllowedWeight = "SemiBold";
28
+ const legacyLabelHeaderLineHeight = 20;
28
29
  /**
29
30
  * `LabelHeader` typographic style
30
31
  */
31
32
  export const LabelHeader = (props: LabelHeaderProps) => {
32
33
  const { isExperimental } = useIOExperimentalDesign();
33
-
34
+ // console.log("isExperimental", isExperimental);
34
35
  return useTypographyFactory<AllowedWeight, AllowedColors>({
35
36
  ...props,
36
- defaultWeight: labelHeaderDefaultWeight,
37
+ defaultWeight: isExperimental
38
+ ? labelHeaderDefaultWeight
39
+ : legacyLabelHeaderWeight,
37
40
  defaultColor: labelHeaderDefaultColor,
38
- font: isExperimental ? legacyLabelHeaderFontName : labelHeaderFontName,
41
+ font: isExperimental ? labelHeaderFontName : legacyLabelHeaderFontName,
39
42
  fontStyle: {
40
43
  fontSize: labelHeaderFontSize,
41
- lineHeight: labelHeaderLineHeight
44
+ lineHeight: isExperimental
45
+ ? labelHeaderLineHeight
46
+ : legacyLabelHeaderLineHeight
42
47
  }
43
48
  });
44
49
  };
@@ -1,5 +1,5 @@
1
- import * as React from "react";
2
- import { constVoid } from "fp-ts/lib/function";
1
+ import { constVoid } from "fp-ts/function";
2
+ import React from "react";
3
3
 
4
4
  type IOExperimentalContextType = {
5
5
  isExperimental: boolean;
@@ -8,7 +8,7 @@ type IOExperimentalContextType = {
8
8
  /**
9
9
  * Experimental Context for new UI Representations
10
10
  */
11
- const IOExperimentalDesignContext =
11
+ export const IOExperimentalDesignContext =
12
12
  React.createContext<IOExperimentalContextType>({
13
13
  isExperimental: false,
14
14
  setExperimental: constVoid
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import TestRenderer from "react-test-renderer";
3
+ import { IODSExperimentalContextProvider } from "../core/IODSExperimentalContextProvider";
4
+
5
+ export const TestRendererWithExperimentalEnabledContextProvider = (
6
+ ui: React.ReactElement,
7
+ options?: TestRenderer.TestRendererOptions
8
+ ) =>
9
+ TestRenderer.create(
10
+ <IODSExperimentalContextProvider isExperimentaEnabled={true}>
11
+ {ui}
12
+ </IODSExperimentalContextProvider>,
13
+ options
14
+ );