@pi-spi/app 2.0.0 → 2.2.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 (389) hide show
  1. package/lib/module/core/api.js +14 -5
  2. package/lib/module/core/api.js.map +1 -1
  3. package/lib/module/l10n/app_localizations.js.map +1 -1
  4. package/lib/module/l10n/app_localizations_en.js +40 -8
  5. package/lib/module/l10n/app_localizations_en.js.map +1 -1
  6. package/lib/module/l10n/app_localizations_fr.js +49 -14
  7. package/lib/module/l10n/app_localizations_fr.js.map +1 -1
  8. package/lib/module/l10n/app_localizations_pt.js +41 -7
  9. package/lib/module/l10n/app_localizations_pt.js.map +1 -1
  10. package/lib/module/modules/alias/domain/models/alias_revendication.js +4 -2
  11. package/lib/module/modules/alias/domain/models/alias_revendication.js.map +1 -1
  12. package/lib/module/modules/alias/infra/alias_output_local.js +11 -0
  13. package/lib/module/modules/alias/infra/alias_output_local.js.map +1 -1
  14. package/lib/module/modules/alias/infra/alias_output_repository.js +9 -8
  15. package/lib/module/modules/alias/infra/alias_output_repository.js.map +1 -1
  16. package/lib/module/modules/alias/presentation/pages/alias_delete_btn_widget.js +14 -18
  17. package/lib/module/modules/alias/presentation/pages/alias_delete_btn_widget.js.map +1 -1
  18. package/lib/module/modules/alias/presentation/pages/alias_page_claim.js +113 -60
  19. package/lib/module/modules/alias/presentation/pages/alias_page_claim.js.map +1 -1
  20. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_form.js +151 -76
  21. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_form.js.map +1 -1
  22. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_timer.js +38 -24
  23. package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_timer.js.map +1 -1
  24. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js +28 -26
  25. package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js.map +1 -1
  26. package/lib/module/modules/alias/presentation/pages/alias_page_otp.js +27 -110
  27. package/lib/module/modules/alias/presentation/pages/alias_page_otp.js.map +1 -1
  28. package/lib/module/modules/categorie/domain/services/categorie_service.js +2 -1
  29. package/lib/module/modules/categorie/domain/services/categorie_service.js.map +1 -1
  30. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js +58 -72
  31. package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js.map +1 -1
  32. package/lib/module/modules/categorie/presentation/pages/categorie_form_pages.js +88 -80
  33. package/lib/module/modules/categorie/presentation/pages/categorie_form_pages.js.map +1 -1
  34. package/lib/module/modules/categorie/presentation/pages/categorie_icon.js +39 -0
  35. package/lib/module/modules/categorie/presentation/pages/categorie_icon.js.map +1 -1
  36. package/lib/module/modules/categorie/presentation/pages/categorie_liste_widget.js +55 -27
  37. package/lib/module/modules/categorie/presentation/pages/categorie_liste_widget.js.map +1 -1
  38. package/lib/module/modules/categorie/presentation/pages/categorie_select_page.js +21 -81
  39. package/lib/module/modules/categorie/presentation/pages/categorie_select_page.js.map +1 -1
  40. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js +53 -16
  41. package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js.map +1 -1
  42. package/lib/module/modules/config/domain/models/config_keys.js +2 -0
  43. package/lib/module/modules/config/domain/models/config_keys.js.map +1 -1
  44. package/lib/module/modules/contacts/domain/contact_pi.js +3 -5
  45. package/lib/module/modules/contacts/domain/contact_pi.js.map +1 -1
  46. package/lib/module/modules/contacts/presentation/bloc/contact_bloc.js +30 -14
  47. package/lib/module/modules/contacts/presentation/bloc/contact_bloc.js.map +1 -1
  48. package/lib/module/modules/contacts/presentation/pages/contact_actions_sheet.js +106 -0
  49. package/lib/module/modules/contacts/presentation/pages/contact_actions_sheet.js.map +1 -0
  50. package/lib/module/modules/contacts/presentation/pages/contact_list_alias_widget.js +17 -7
  51. package/lib/module/modules/contacts/presentation/pages/contact_list_alias_widget.js.map +1 -1
  52. package/lib/module/modules/contacts/presentation/pages/contact_list_phone_widget.js +5 -4
  53. package/lib/module/modules/contacts/presentation/pages/contact_list_phone_widget.js.map +1 -1
  54. package/lib/module/modules/contacts/presentation/pages/contact_list_widget_item.js +76 -67
  55. package/lib/module/modules/contacts/presentation/pages/contact_list_widget_item.js.map +1 -1
  56. package/lib/module/modules/contacts/presentation/pages/contact_section.js +14 -4
  57. package/lib/module/modules/contacts/presentation/pages/contact_section.js.map +1 -1
  58. package/lib/module/modules/contacts/presentation/pages/contact_select_page.js +131 -110
  59. package/lib/module/modules/contacts/presentation/pages/contact_select_page.js.map +1 -1
  60. package/lib/module/modules/contacts/presentation/pages/create/contact_create_page.js +118 -59
  61. package/lib/module/modules/contacts/presentation/pages/create/contact_create_page.js.map +1 -1
  62. package/lib/module/modules/home/presentation/pages/home_page.js +3 -13
  63. package/lib/module/modules/home/presentation/pages/home_page.js.map +1 -1
  64. package/lib/module/modules/introduction/presentation/pages/introduction.js +17 -4
  65. package/lib/module/modules/introduction/presentation/pages/introduction.js.map +1 -1
  66. package/lib/module/modules/introduction/presentation/pages/introduction_footer.js +15 -53
  67. package/lib/module/modules/introduction/presentation/pages/introduction_footer.js.map +1 -1
  68. package/lib/module/modules/introduction/presentation/pages/introduction_page.js +22 -4
  69. package/lib/module/modules/introduction/presentation/pages/introduction_page.js.map +1 -1
  70. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js +2 -2
  71. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js.map +1 -1
  72. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.js +1 -1
  73. package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.js.map +1 -1
  74. package/lib/module/modules/profile/presentation/pages/profile_page_avatar.js +6 -28
  75. package/lib/module/modules/profile/presentation/pages/profile_page_avatar.js.map +1 -1
  76. package/lib/module/modules/profile/presentation/pages/profile_page_contacts.js +14 -53
  77. package/lib/module/modules/profile/presentation/pages/profile_page_contacts.js.map +1 -1
  78. package/lib/module/modules/profile/presentation/pages/profile_page_contacts_actions.js +131 -161
  79. package/lib/module/modules/profile/presentation/pages/profile_page_contacts_actions.js.map +1 -1
  80. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page.js +0 -1
  81. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page.js.map +1 -1
  82. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js +26 -38
  83. package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js.map +1 -1
  84. package/lib/module/modules/search/domain/models/fonctionnalite.js +51 -0
  85. package/lib/module/modules/search/domain/models/fonctionnalite.js.map +1 -1
  86. package/lib/module/modules/search/presentation/pages/search_btn_widget.js +136 -0
  87. package/lib/module/modules/search/presentation/pages/search_btn_widget.js.map +1 -0
  88. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js +21 -1
  89. package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js.map +1 -1
  90. package/lib/module/modules/search/presentation/pages/search_page.js +266 -97
  91. package/lib/module/modules/search/presentation/pages/search_page.js.map +1 -1
  92. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page.js +5 -3
  93. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page.js.map +1 -1
  94. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.js +5 -6
  95. package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.js.map +1 -1
  96. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page.js +0 -1
  97. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page.js.map +1 -1
  98. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.js +0 -1
  99. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.js.map +1 -1
  100. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.js +38 -93
  101. package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.js.map +1 -1
  102. package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.js +0 -1
  103. package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.js.map +1 -1
  104. package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.js +0 -1
  105. package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.js.map +1 -1
  106. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js +23 -42
  107. package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js.map +1 -1
  108. package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.js +1 -2
  109. package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.js.map +1 -1
  110. package/lib/module/modules/transactions/infra/transaction_output_remote.js +2 -1
  111. package/lib/module/modules/transactions/infra/transaction_output_remote.js.map +1 -1
  112. package/lib/module/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.js +17 -0
  113. package/lib/module/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.js.map +1 -1
  114. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.js +0 -1
  115. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.js.map +1 -1
  116. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.js +34 -61
  117. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.js.map +1 -1
  118. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.js +49 -62
  119. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.js.map +1 -1
  120. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.js +68 -88
  121. package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.js.map +1 -1
  122. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.js +30 -23
  123. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.js.map +1 -1
  124. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.js +77 -0
  125. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.js.map +1 -0
  126. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.js +49 -155
  127. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.js.map +1 -1
  128. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page.js +16 -4
  129. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page.js.map +1 -1
  130. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.js +11 -9
  131. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.js.map +1 -1
  132. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.js +17 -35
  133. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.js.map +1 -1
  134. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.js +8 -10
  135. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.js.map +1 -1
  136. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.js +127 -106
  137. package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.js.map +1 -1
  138. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.js +50 -42
  139. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.js.map +1 -1
  140. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.js +0 -1
  141. package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.js.map +1 -1
  142. package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.js +0 -1
  143. package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.js.map +1 -1
  144. package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.js +37 -67
  145. package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.js.map +1 -1
  146. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page.js +9 -15
  147. package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page.js.map +1 -1
  148. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.js +5 -11
  149. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.js.map +1 -1
  150. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.js +9 -9
  151. package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.js.map +1 -1
  152. package/lib/module/shared/widgets/alias_widget.js +33 -12
  153. package/lib/module/shared/widgets/alias_widget.js.map +1 -1
  154. package/lib/module/shared/widgets/auth_code_field.js +89 -0
  155. package/lib/module/shared/widgets/auth_code_field.js.map +1 -0
  156. package/lib/module/shared/widgets/calendar_date_picker.js +21 -16
  157. package/lib/module/shared/widgets/calendar_date_picker.js.map +1 -1
  158. package/lib/module/shared/widgets/confirm_action_sheet_widget.js +53 -67
  159. package/lib/module/shared/widgets/confirm_action_sheet_widget.js.map +1 -1
  160. package/lib/module/shared/widgets/emoji_select_widget.js +34 -39
  161. package/lib/module/shared/widgets/emoji_select_widget.js.map +1 -1
  162. package/lib/module/shared/widgets/frequence_input_widget.js +18 -29
  163. package/lib/module/shared/widgets/frequence_input_widget.js.map +1 -1
  164. package/lib/module/shared/widgets/frequence_select_widget.js +233 -140
  165. package/lib/module/shared/widgets/frequence_select_widget.js.map +1 -1
  166. package/lib/module/shared/widgets/image_select_widget.js +43 -107
  167. package/lib/module/shared/widgets/image_select_widget.js.map +1 -1
  168. package/lib/module/shared/widgets/input_text.js +1 -1
  169. package/lib/module/shared/widgets/input_text.js.map +1 -1
  170. package/lib/module/shared/widgets/notification_dialog.js +28 -37
  171. package/lib/module/shared/widgets/notification_dialog.js.map +1 -1
  172. package/lib/module/shared/widgets/pin_entete.js +114 -0
  173. package/lib/module/shared/widgets/pin_entete.js.map +1 -0
  174. package/lib/module/shared/widgets/select_date_widget.js +74 -59
  175. package/lib/module/shared/widgets/select_date_widget.js.map +1 -1
  176. package/lib/module/shared/widgets/selection.js +387 -6
  177. package/lib/module/shared/widgets/selection.js.map +1 -1
  178. package/lib/typescript/src/core/api.d.ts +6 -0
  179. package/lib/typescript/src/core/api.d.ts.map +1 -1
  180. package/lib/typescript/src/l10n/app_localizations.d.ts +75 -11
  181. package/lib/typescript/src/l10n/app_localizations.d.ts.map +1 -1
  182. package/lib/typescript/src/l10n/app_localizations_en.d.ts.map +1 -1
  183. package/lib/typescript/src/l10n/app_localizations_fr.d.ts.map +1 -1
  184. package/lib/typescript/src/l10n/app_localizations_pt.d.ts.map +1 -1
  185. package/lib/typescript/src/modules/alias/domain/models/alias_revendication.d.ts.map +1 -1
  186. package/lib/typescript/src/modules/alias/infra/alias_output_local.d.ts +5 -0
  187. package/lib/typescript/src/modules/alias/infra/alias_output_local.d.ts.map +1 -1
  188. package/lib/typescript/src/modules/alias/infra/alias_output_repository.d.ts.map +1 -1
  189. package/lib/typescript/src/modules/alias/presentation/pages/alias_delete_btn_widget.d.ts.map +1 -1
  190. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_claim.d.ts.map +1 -1
  191. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_form.d.ts.map +1 -1
  192. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.d.ts +1 -1
  193. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.d.ts.map +1 -1
  194. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_options.d.ts +4 -1
  195. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_options.d.ts.map +1 -1
  196. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_otp.d.ts +9 -5
  197. package/lib/typescript/src/modules/alias/presentation/pages/alias_page_otp.d.ts.map +1 -1
  198. package/lib/typescript/src/modules/categorie/domain/services/categorie_service.d.ts.map +1 -1
  199. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.d.ts +3 -0
  200. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.d.ts.map +1 -1
  201. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_form_pages.d.ts.map +1 -1
  202. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_icon.d.ts +9 -0
  203. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_icon.d.ts.map +1 -1
  204. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_liste_widget.d.ts +7 -2
  205. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_liste_widget.d.ts.map +1 -1
  206. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_page.d.ts.map +1 -1
  207. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts +10 -2
  208. package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts.map +1 -1
  209. package/lib/typescript/src/modules/config/domain/models/config_keys.d.ts +3 -1
  210. package/lib/typescript/src/modules/config/domain/models/config_keys.d.ts.map +1 -1
  211. package/lib/typescript/src/modules/contacts/domain/contact_pi.d.ts +0 -2
  212. package/lib/typescript/src/modules/contacts/domain/contact_pi.d.ts.map +1 -1
  213. package/lib/typescript/src/modules/contacts/presentation/bloc/contact_bloc.d.ts +7 -0
  214. package/lib/typescript/src/modules/contacts/presentation/bloc/contact_bloc.d.ts.map +1 -1
  215. package/lib/typescript/src/modules/contacts/presentation/pages/contact_actions_sheet.d.ts +14 -0
  216. package/lib/typescript/src/modules/contacts/presentation/pages/contact_actions_sheet.d.ts.map +1 -0
  217. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_alias_widget.d.ts +4 -2
  218. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_alias_widget.d.ts.map +1 -1
  219. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_phone_widget.d.ts.map +1 -1
  220. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_widget_item.d.ts +6 -4
  221. package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_widget_item.d.ts.map +1 -1
  222. package/lib/typescript/src/modules/contacts/presentation/pages/contact_section.d.ts +3 -1
  223. package/lib/typescript/src/modules/contacts/presentation/pages/contact_section.d.ts.map +1 -1
  224. package/lib/typescript/src/modules/contacts/presentation/pages/contact_select_page.d.ts.map +1 -1
  225. package/lib/typescript/src/modules/contacts/presentation/pages/create/contact_create_page.d.ts.map +1 -1
  226. package/lib/typescript/src/modules/home/presentation/pages/home_page.d.ts.map +1 -1
  227. package/lib/typescript/src/modules/introduction/presentation/pages/introduction.d.ts.map +1 -1
  228. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_footer.d.ts +5 -1
  229. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_footer.d.ts.map +1 -1
  230. package/lib/typescript/src/modules/introduction/presentation/pages/introduction_page.d.ts.map +1 -1
  231. package/lib/typescript/src/modules/profile/presentation/pages/profile_page_avatar.d.ts.map +1 -1
  232. package/lib/typescript/src/modules/profile/presentation/pages/profile_page_contacts.d.ts.map +1 -1
  233. package/lib/typescript/src/modules/profile/presentation/pages/profile_page_contacts_actions.d.ts.map +1 -1
  234. package/lib/typescript/src/modules/qrcode/presentation/pages/qrcode_alias_page.d.ts.map +1 -1
  235. package/lib/typescript/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.d.ts.map +1 -1
  236. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts +20 -0
  237. package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts.map +1 -1
  238. package/lib/typescript/src/modules/search/presentation/pages/search_btn_widget.d.ts +11 -0
  239. package/lib/typescript/src/modules/search/presentation/pages/search_btn_widget.d.ts.map +1 -0
  240. package/lib/typescript/src/modules/search/presentation/pages/search_fonctionnalites.d.ts.map +1 -1
  241. package/lib/typescript/src/modules/search/presentation/pages/search_page.d.ts.map +1 -1
  242. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page.d.ts.map +1 -1
  243. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page.d.ts.map +1 -1
  244. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.d.ts.map +1 -1
  245. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.d.ts +2 -2
  246. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.d.ts.map +1 -1
  247. package/lib/typescript/src/modules/subscription/presentation/pages/subscription_menu_widget.d.ts.map +1 -1
  248. package/lib/typescript/src/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.d.ts.map +1 -1
  249. package/lib/typescript/src/modules/transactions/infra/transaction_output_remote.d.ts.map +1 -1
  250. package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.d.ts.map +1 -1
  251. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.d.ts.map +1 -1
  252. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.d.ts.map +1 -1
  253. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.d.ts.map +1 -1
  254. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.d.ts +4 -1
  255. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.d.ts.map +1 -1
  256. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.d.ts +17 -0
  257. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.d.ts.map +1 -0
  258. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.d.ts +6 -2
  259. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.d.ts.map +1 -1
  260. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.d.ts +4 -0
  261. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.d.ts.map +1 -1
  262. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.d.ts.map +1 -1
  263. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.d.ts.map +1 -1
  264. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.d.ts.map +1 -1
  265. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.d.ts.map +1 -1
  266. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.d.ts.map +1 -1
  267. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.d.ts.map +1 -1
  268. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page.d.ts.map +1 -1
  269. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.d.ts.map +1 -1
  270. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.d.ts.map +1 -1
  271. package/lib/typescript/src/shared/widgets/alias_widget.d.ts +2 -2
  272. package/lib/typescript/src/shared/widgets/alias_widget.d.ts.map +1 -1
  273. package/lib/typescript/src/shared/widgets/auth_code_field.d.ts +17 -0
  274. package/lib/typescript/src/shared/widgets/auth_code_field.d.ts.map +1 -0
  275. package/lib/typescript/src/shared/widgets/calendar_date_picker.d.ts.map +1 -1
  276. package/lib/typescript/src/shared/widgets/confirm_action_sheet_widget.d.ts +16 -2
  277. package/lib/typescript/src/shared/widgets/confirm_action_sheet_widget.d.ts.map +1 -1
  278. package/lib/typescript/src/shared/widgets/emoji_select_widget.d.ts.map +1 -1
  279. package/lib/typescript/src/shared/widgets/frequence_input_widget.d.ts +6 -3
  280. package/lib/typescript/src/shared/widgets/frequence_input_widget.d.ts.map +1 -1
  281. package/lib/typescript/src/shared/widgets/frequence_select_widget.d.ts +23 -5
  282. package/lib/typescript/src/shared/widgets/frequence_select_widget.d.ts.map +1 -1
  283. package/lib/typescript/src/shared/widgets/image_select_widget.d.ts +6 -4
  284. package/lib/typescript/src/shared/widgets/image_select_widget.d.ts.map +1 -1
  285. package/lib/typescript/src/shared/widgets/input_text.d.ts +2 -0
  286. package/lib/typescript/src/shared/widgets/input_text.d.ts.map +1 -1
  287. package/lib/typescript/src/shared/widgets/notification_dialog.d.ts +5 -3
  288. package/lib/typescript/src/shared/widgets/notification_dialog.d.ts.map +1 -1
  289. package/lib/typescript/src/shared/widgets/pin_entete.d.ts +15 -0
  290. package/lib/typescript/src/shared/widgets/pin_entete.d.ts.map +1 -0
  291. package/lib/typescript/src/shared/widgets/select_date_widget.d.ts +4 -0
  292. package/lib/typescript/src/shared/widgets/select_date_widget.d.ts.map +1 -1
  293. package/lib/typescript/src/shared/widgets/selection.d.ts +74 -3
  294. package/lib/typescript/src/shared/widgets/selection.d.ts.map +1 -1
  295. package/package.json +1 -1
  296. package/src/core/api.ts +11 -2
  297. package/src/l10n/app_localizations.ts +75 -11
  298. package/src/l10n/app_localizations_en.ts +40 -8
  299. package/src/l10n/app_localizations_fr.ts +46 -14
  300. package/src/l10n/app_localizations_pt.ts +39 -7
  301. package/src/modules/alias/domain/models/alias_revendication.ts +4 -2
  302. package/src/modules/alias/infra/alias_output_local.ts +11 -0
  303. package/src/modules/alias/infra/alias_output_repository.ts +9 -8
  304. package/src/modules/alias/presentation/pages/alias_delete_btn_widget.tsx +17 -24
  305. package/src/modules/alias/presentation/pages/alias_page_claim.tsx +76 -48
  306. package/src/modules/alias/presentation/pages/alias_page_create_mbno_form.tsx +113 -65
  307. package/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.tsx +34 -25
  308. package/src/modules/alias/presentation/pages/alias_page_create_options.tsx +29 -36
  309. package/src/modules/alias/presentation/pages/alias_page_otp.tsx +24 -88
  310. package/src/modules/categorie/domain/services/categorie_service.ts +2 -1
  311. package/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.tsx +58 -50
  312. package/src/modules/categorie/presentation/pages/categorie_form_pages.tsx +71 -41
  313. package/src/modules/categorie/presentation/pages/categorie_icon.tsx +26 -0
  314. package/src/modules/categorie/presentation/pages/categorie_liste_widget.tsx +45 -24
  315. package/src/modules/categorie/presentation/pages/categorie_select_page.tsx +10 -46
  316. package/src/modules/categorie/presentation/pages/categorie_select_widget.tsx +54 -13
  317. package/src/modules/config/domain/models/config_keys.ts +3 -0
  318. package/src/modules/contacts/domain/contact_pi.ts +3 -6
  319. package/src/modules/contacts/presentation/bloc/contact_bloc.ts +37 -20
  320. package/src/modules/contacts/presentation/pages/contact_actions_sheet.tsx +69 -0
  321. package/src/modules/contacts/presentation/pages/contact_list_alias_widget.tsx +26 -4
  322. package/src/modules/contacts/presentation/pages/contact_list_phone_widget.tsx +3 -0
  323. package/src/modules/contacts/presentation/pages/contact_list_widget_item.tsx +54 -65
  324. package/src/modules/contacts/presentation/pages/contact_section.tsx +13 -3
  325. package/src/modules/contacts/presentation/pages/contact_select_page.tsx +106 -74
  326. package/src/modules/contacts/presentation/pages/create/contact_create_page.tsx +86 -47
  327. package/src/modules/home/presentation/pages/home_page.tsx +2 -9
  328. package/src/modules/introduction/presentation/pages/introduction.tsx +8 -0
  329. package/src/modules/introduction/presentation/pages/introduction_footer.tsx +16 -36
  330. package/src/modules/introduction/presentation/pages/introduction_page.tsx +17 -5
  331. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.tsx +2 -2
  332. package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.tsx +1 -1
  333. package/src/modules/profile/presentation/pages/profile_page_avatar.tsx +6 -12
  334. package/src/modules/profile/presentation/pages/profile_page_contacts.tsx +12 -20
  335. package/src/modules/profile/presentation/pages/profile_page_contacts_actions.tsx +120 -117
  336. package/src/modules/qrcode/presentation/pages/qrcode_alias_page.tsx +0 -1
  337. package/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.tsx +32 -40
  338. package/src/modules/search/domain/models/fonctionnalite.ts +56 -0
  339. package/src/modules/search/presentation/pages/search_btn_widget.tsx +91 -0
  340. package/src/modules/search/presentation/pages/search_fonctionnalites.ts +21 -1
  341. package/src/modules/search/presentation/pages/search_page.tsx +166 -57
  342. package/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page.tsx +4 -2
  343. package/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.tsx +5 -5
  344. package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page.tsx +0 -1
  345. package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.tsx +0 -1
  346. package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.tsx +20 -59
  347. package/src/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.tsx +1 -1
  348. package/src/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.tsx +1 -1
  349. package/src/modules/subscription/presentation/pages/subscription_menu_widget.tsx +25 -39
  350. package/src/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.ts +1 -2
  351. package/src/modules/transactions/infra/transaction_output_remote.ts +6 -1
  352. package/src/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.ts +17 -0
  353. package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.tsx +0 -1
  354. package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.tsx +39 -41
  355. package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.tsx +41 -46
  356. package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.tsx +46 -40
  357. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.tsx +26 -17
  358. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.tsx +92 -0
  359. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.tsx +48 -94
  360. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page.tsx +20 -2
  361. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.tsx +6 -8
  362. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.tsx +9 -22
  363. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.tsx +5 -7
  364. package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.tsx +112 -104
  365. package/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.tsx +49 -42
  366. package/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.tsx +1 -1
  367. package/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.tsx +0 -1
  368. package/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.tsx +47 -48
  369. package/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page.tsx +6 -10
  370. package/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.tsx +3 -6
  371. package/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.tsx +5 -5
  372. package/src/shared/widgets/alias_widget.tsx +45 -18
  373. package/src/shared/widgets/auth_code_field.tsx +89 -0
  374. package/src/shared/widgets/calendar_date_picker.tsx +12 -11
  375. package/src/shared/widgets/confirm_action_sheet_widget.tsx +49 -35
  376. package/src/shared/widgets/emoji_select_widget.tsx +31 -29
  377. package/src/shared/widgets/frequence_input_widget.tsx +18 -24
  378. package/src/shared/widgets/frequence_select_widget.tsx +237 -117
  379. package/src/shared/widgets/image_select_widget.tsx +46 -61
  380. package/src/shared/widgets/input_text.tsx +3 -0
  381. package/src/shared/widgets/notification_dialog.tsx +70 -71
  382. package/src/shared/widgets/pin_entete.tsx +74 -0
  383. package/src/shared/widgets/select_date_widget.tsx +66 -34
  384. package/src/shared/widgets/selection.tsx +304 -5
  385. package/lib/module/modules/transactions/presentation/pages/transaction_details/sheet_box.js +0 -47
  386. package/lib/module/modules/transactions/presentation/pages/transaction_details/sheet_box.js.map +0 -1
  387. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/sheet_box.d.ts +0 -10
  388. package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/sheet_box.d.ts.map +0 -1
  389. package/src/modules/transactions/presentation/pages/transaction_details/sheet_box.tsx +0 -30
@@ -1,18 +1,20 @@
1
- import { ScrollView, StyleSheet, Switch, Text, View } from 'react-native';
1
+ import { MaterialIcons } from '@expo/vector-icons';
2
+ import type { ComponentProps, ReactNode } from 'react';
3
+ import { Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';
2
4
 
3
5
  import { useBloc, useBlocBuilder, useBlocListener } from '../../../../../core/bloc_react';
4
6
  import { AppRouter, useAppRouter } from '../../../../../core/router';
5
- import { useTheme } from '../../../../../core/theme';
7
+ import { Themer, useTheme } from '../../../../../core/theme';
6
8
  import { useAppLocalizations } from '../../../../../l10n/localizations';
7
9
  import { showModalBottomSheet } from '../../../../../shared/material/overlays';
8
- import { AppBar, Scaffold } from '../../../../../shared/material/scaffold';
10
+ import { Scaffold } from '../../../../../shared/material/scaffold';
9
11
  import { UEMOACountry } from '../../../../../shared/models/uemoa_countries';
10
12
  import { formatMontant } from '../../../../../shared/widgets/amount_widget';
11
13
  import { ConfirmActionSheetWidget } from '../../../../../shared/widgets/confirm_action_sheet_widget';
12
- import { CustomTextInput } from '../../../../../shared/widgets/input_text';
13
- import { CustomTextMultipleInput } from '../../../../../shared/widgets/input_text_multiple';
14
14
  import { CustomLoadingDialog, LoadingPage } from '../../../../../shared/widgets/loading_page';
15
15
  import { MyPageContainer } from '../../../../../shared/widgets/my_page_container';
16
+ import { SelectionChamp, SelectionPastille } from '../../../../../shared/widgets/selection';
17
+ import { ProfileAppBar } from '../../../../profile/presentation/pages/profile_app_bar';
16
18
  import { ContactPI } from '../../../../contacts/domain/contact_pi';
17
19
  import { ContactBloc } from '../../../../contacts/presentation/bloc/contact_bloc';
18
20
  import { TransactionSendCommand } from '../../../domain/models/transaction_send/transaction_send_command';
@@ -93,15 +95,15 @@ export function TransactionVerificationPage() {
93
95
 
94
96
  /** Proposer d'enregistrer l'alias dans les contacts (s'il n'y est pas) */
95
97
  const aliasValue = command.alias?.alias();
96
- const addAliasSwitch =
98
+ const enregistrerAlias =
97
99
  aliasValue != null && !contactBloc.isContactExist(aliasValue) ? (
98
- <Switch
99
- value={false}
100
- trackColor={{ false: theme.switchTheme.inactiveTrackColor, true: theme.switchTheme.activeTrackColor }}
101
- thumbColor={theme.switchTheme.thumbColor}
102
- onValueChange={async () => {
100
+ <Pressable
101
+ accessibilityRole="button"
102
+ accessibilityLabel={traductions.contactAliasSaveText}
103
+ hitSlop={8}
104
+ style={styles.action}
105
+ onPress={async () => {
103
106
  const confirmed = await showModalBottomSheet<boolean>(router, {
104
- themed: true,
105
107
  builder: () => (
106
108
  <ConfirmActionSheetWidget
107
109
  title={traductions.contactAliasSaveText}
@@ -117,105 +119,94 @@ export function TransactionVerificationPage() {
117
119
  });
118
120
  }
119
121
  }}
120
- />
122
+ >
123
+ <MaterialIcons name="person-add-alt-1" size={20} color={theme.colorScheme.primary} />
124
+ </Pressable>
121
125
  ) : null;
122
126
 
127
+ const compte = command.method === TransactionSendMethod.iban || command.method === TransactionSendMethod.othr;
128
+ const pays = UEMOACountry.get(transaction.clientPays);
129
+ const motif = command.motif?.value ?? '';
130
+ const soldeValide = command.isSoldeValid(transaction.montantFrais);
131
+
132
+ // Informations, dans l'ordre du formulaire, chacune dans un champ comme
133
+ // le pays et l'institution
134
+ const champs: ReactNode[] = [
135
+ command.alias != null && (
136
+ <Champ key="alias" libelle={traductions.aliasFormLabel} valeur={aliasValue ?? ''} icone="alternate-email" suffixe={enregistrerAlias} />
137
+ ),
138
+ command.alias != null && psp != null && (
139
+ <Champ key="psp" libelle={traductions.transactionFormOthrNomLabel} valeur={psp.nomMembre} icone="account-balance" />
140
+ ),
141
+ compte && (
142
+ <Champ
143
+ key="compte"
144
+ libelle={command.method === TransactionSendMethod.iban ? traductions.transactionFormIbanHint : traductions.transactionFormOthrLabel}
145
+ valeur={command.othr?.compte() ?? ''}
146
+ icone="credit-card"
147
+ />
148
+ ),
149
+ compte && (
150
+ <Champ
151
+ key="banque"
152
+ libelle={command.method === TransactionSendMethod.iban ? traductions.transactionFormIbanNomLabel : traductions.transactionFormOthrNomLabel}
153
+ valeur={command.pspNom ?? ''}
154
+ icone="account-balance"
155
+ />
156
+ ),
157
+ // Pays de l'institution, avec son code comme dans le formulaire
158
+ pays != null && (
159
+ <SelectionChamp
160
+ key="pays"
161
+ libelle={traductions.transactionFormOthrPaysLabel}
162
+ valeur={pays.name}
163
+ pastille={<SelectionPastille code={pays.iso3} />}
164
+ />
165
+ ),
166
+ <Champ key="nom" libelle={traductions.transactionFormVerificationClientName} valeur={transaction.clientNom} icone="person" />,
167
+ transaction.facture != null && (
168
+ <Champ key="facture" libelle={traductions.transactionDetailsFacture} valeur={transaction.facture} icone="receipt-long" />
169
+ ),
170
+ transaction.txId != null && (
171
+ <Champ key="ref" libelle={traductions.transactionDetailsReference} valeur={transaction.txId} icone="tag" />
172
+ ),
173
+ // Montant, et l'erreur si le solde ne suffit pas
174
+ <View key="montant">
175
+ <Champ
176
+ libelle={traductions.transactionFormAmountHint}
177
+ valeur={`${formatMontant(command.amount?.value ?? 0, locale)} FCFA`}
178
+ icone="payments"
179
+ />
180
+ {!soldeValide && (
181
+ <Text style={[theme.inputDecorationTheme.errorStyle, styles.erreur]}>{`⚠ ${traductions.transactionFormAmountInvalid}`}</Text>
182
+ )}
183
+ </View>,
184
+ <Champ
185
+ key="frais"
186
+ libelle={traductions.transactionDetailsRecuInfoFrais}
187
+ valeur={montantFrais !== 0 ? `${formatMontant(montantFrais, locale)} FCFA` : traductions.transactionDetailsRecuInfoFraisDefault}
188
+ icone="receipt"
189
+ />,
190
+ motif.length > 0 && <Champ key="motif" libelle={traductions.transactionFormMotifLabel} valeur={motif} icone="notes" />,
191
+ ].filter(Boolean);
192
+
123
193
  return (
124
- <Scaffold appBar={<AppBar onBack={() => AppRouter.pop(router)} />}>
194
+ <Scaffold appBar={<ProfileAppBar titre={traductions.transactionFormVerificationTitle} />}>
125
195
  <MyPageContainer>
126
196
  <ScrollView style={styles.flex}>
127
- {/* Titre de la page */}
128
- <Text style={theme.textTheme.titleSmall}>{traductions.transactionFormVerificationTitle}</Text>
129
- <View style={styles.gap5} />
197
+ <View style={styles.gap8} />
130
198
  {/* Sous-titre de la page */}
131
- <Text style={theme.textTheme.displaySmall}>
199
+ <Text style={[theme.textTheme.displaySmall, { color: Themer.neural03Color }]}>
132
200
  {command.action === TransactionSendCommand.actionSendSchedule
133
201
  ? traductions.transactionFormVerificationAbnmSubtitle
134
202
  : traductions.transactionFormVerificationSubtitle}
135
203
  </Text>
136
- <View style={styles.gap32} />
137
-
138
- {/* Alias */}
139
- {command.alias != null && (
140
- <>
141
- <CustomTextInput labelText={traductions.aliasFormLabel} value={aliasValue ?? ''} readOnly suffixIcon={addAliasSwitch} />
142
- {/* Institution */}
143
- {psp != null && (
144
- <>
145
- <View style={styles.gap16} />
146
- <CustomTextInput labelText={traductions.transactionFormOthrNomLabel} value={psp.nomMembre} readOnly />
147
- </>
148
- )}
149
- </>
150
- )}
151
-
152
- {/* IBAN ou autre compte */}
153
- {(command.method === TransactionSendMethod.iban || command.method === TransactionSendMethod.othr) && (
154
- <>
155
- <CustomTextInput
156
- labelText={
157
- command.method === TransactionSendMethod.iban
158
- ? traductions.transactionFormIbanHint
159
- : traductions.transactionFormOthrLabel
160
- }
161
- value={command.othr?.compte() ?? ''}
162
- readOnly
163
- />
164
- <View style={styles.gap16} />
165
- <CustomTextInput
166
- labelText={
167
- command.method === TransactionSendMethod.iban
168
- ? traductions.transactionFormIbanNomLabel
169
- : traductions.transactionFormOthrNomLabel
170
- }
171
- value={command.pspNom ?? ''}
172
- readOnly
173
- />
174
- </>
175
- )}
176
-
177
- <View style={styles.gap16} />
178
- {/* Pays de l'institution */}
179
- <CustomTextInput
180
- labelText={traductions.transactionFormOthrPaysLabel}
181
- value={UEMOACountry.get(transaction.clientPays)?.name ?? ''}
182
- readOnly
183
- />
184
- <View style={styles.gap16} />
185
- {/* Nom du client */}
186
- <CustomTextInput labelText={traductions.transactionFormVerificationClientName} value={transaction.clientNom} readOnly />
187
- <View style={styles.gap16} />
188
- {/* Facture */}
189
- {transaction.facture != null && (
190
- <>
191
- <CustomTextInput labelText={traductions.transactionDetailsFacture} value={transaction.facture} readOnly />
192
- <View style={styles.gap16} />
193
- </>
194
- )}
195
- {/* Référence */}
196
- {transaction.txId != null && (
197
- <>
198
- <CustomTextInput labelText={traductions.transactionDetailsReference} value={transaction.txId} readOnly />
199
- <View style={styles.gap16} />
200
- </>
201
- )}
202
- {/* Montant */}
203
- <CustomTextInput
204
- labelText={traductions.transactionFormAmountHint}
205
- value={formatMontant(command.amount?.value ?? 0, locale)}
206
- readOnly
207
- messageError={!command.isSoldeValid(transaction.montantFrais) ? traductions.transactionFormAmountInvalid : null}
208
- />
209
- <View style={styles.gap16} />
210
- {/* Frais */}
211
- <CustomTextInput
212
- labelText={traductions.transactionDetailsRecuInfoFrais}
213
- value={montantFrais !== 0 ? formatMontant(montantFrais, locale) : traductions.transactionDetailsRecuInfoFraisDefault}
214
- readOnly
215
- />
216
- <View style={styles.gap16} />
217
- {/* Motif */}
218
- <CustomTextMultipleInput labelText={traductions.transactionFormMotifLabel} defaultValue={command.motif?.value ?? ''} readOnly />
204
+ <View style={styles.gap24} />
205
+ {champs.map((champ, i) => (
206
+ <View key={i} style={i > 0 ? styles.gap12 : null}>
207
+ {champ}
208
+ </View>
209
+ ))}
219
210
  <View style={styles.gap64} />
220
211
  </ScrollView>
221
212
  {/* Bouton de confirmation, rejet ou programmation */}
@@ -227,11 +218,28 @@ export function TransactionVerificationPage() {
227
218
  );
228
219
  }
229
220
 
221
+ /** Information en lecture seule : pastille avec [icone], libellé et valeur */
222
+ function Champ({
223
+ libelle,
224
+ valeur,
225
+ icone,
226
+ suffixe,
227
+ }: {
228
+ libelle: string;
229
+ valeur: string;
230
+ icone: ComponentProps<typeof MaterialIcons>['name'];
231
+ suffixe?: ReactNode;
232
+ }) {
233
+ return <SelectionChamp libelle={libelle} valeur={valeur} pastille={<SelectionPastille icone={icone} />} suffixe={suffixe} />;
234
+ }
235
+
230
236
  const styles = StyleSheet.create({
231
237
  flex: { flex: 1 },
232
238
  bottom: { paddingVertical: 16 },
233
- gap5: { height: 5 },
234
- gap16: { height: 16 },
235
- gap32: { height: 32 },
239
+ gap8: { height: 8 },
240
+ gap12: { marginTop: 12 },
241
+ gap24: { height: 24 },
236
242
  gap64: { height: 64 },
243
+ action: { padding: 4, marginLeft: 8 },
244
+ erreur: { marginLeft: 8, marginTop: 4 },
237
245
  });
@@ -1,13 +1,16 @@
1
+ import { MaterialIcons } from '@expo/vector-icons';
1
2
  import { useState } from 'react';
2
- import { ScrollView, StyleSheet, Text, useWindowDimensions, View } from 'react-native';
3
+ import { ScrollView, StyleSheet, Text, View } from 'react-native';
3
4
 
4
5
  import { useBloc } from '../../../../../core/bloc_react';
5
6
  import { AppRouter, useAppRouter } from '../../../../../core/router';
6
- import { useTheme } from '../../../../../core/theme';
7
+ import { Themer, useTheme } from '../../../../../core/theme';
7
8
  import { useAppLocalizations } from '../../../../../l10n/localizations';
8
9
  import { ElevatedButton } from '../../../../../shared/material/buttons';
9
10
  import { Card } from '../../../../../shared/material/card';
11
+ import { withAlpha } from '../../../../../shared/utils/color';
10
12
  import { NumberIncWidget } from '../../../../../shared/widgets/number_inc_widget';
13
+ import { SelectionSheet } from '../../../../../shared/widgets/selection';
11
14
  import { ConfigBloc } from '../../../../config/adapters/ui/bloc/config_bloc';
12
15
  import { ConfigChangeEvent } from '../../../../config/adapters/ui/bloc/config_event';
13
16
  import { ConfigKey } from '../../../../config/domain/models/config_keys';
@@ -18,7 +21,7 @@ export function TransactionRecentsNombreWidget() {
18
21
  const theme = useTheme();
19
22
  const router = useAppRouter();
20
23
  const configBloc = useBloc(ConfigBloc);
21
- const { height } = useWindowDimensions();
24
+ const primaire = theme.colorScheme.primary;
22
25
  const [nbItems] = useState(() => {
23
26
  const param = configBloc.getParamValue(ConfigKey.transactionsRecentNbItems);
24
27
  return param != null ? parseInt(param, 10) : 3;
@@ -26,47 +29,51 @@ export function TransactionRecentsNombreWidget() {
26
29
  const [updatedNbItems, setUpdatedNbItems] = useState(nbItems);
27
30
 
28
31
  return (
29
- <View style={[styles.box, { maxHeight: height * 0.5, backgroundColor: theme.colorScheme.surface }]}>
30
- <ScrollView contentContainerStyle={styles.content}>
31
- {/* Titre */}
32
- <Text style={theme.textTheme.headlineMedium}>{traductions.homeTransactionsRecentsNombreTitle}</Text>
33
- <View style={styles.gap10} />
34
- {/* Sous titre */}
35
- <Text style={theme.textTheme.displayLarge}>{traductions.homeTransactionsRecentsNombreSubTitle}</Text>
36
- <View style={styles.gap32} />
37
- {/* Boutons réduire et augmenter */}
38
- <Card>
39
- <View style={styles.row}>
40
- <Text style={[theme.textTheme.headlineSmall, styles.flex]}>{traductions.homeTransactions}</Text>
41
- <NumberIncWidget min={3} max={10} number={updatedNbItems} onChange={setUpdatedNbItems} />
42
- </View>
43
- </Card>
44
- <View style={styles.gap24} />
45
- {/* Enregistrer */}
46
- <ElevatedButton
47
- onPress={
48
- updatedNbItems !== nbItems
49
- ? () => {
50
- configBloc.add(new ConfigChangeEvent(ConfigKey.transactionsRecentNbItems, String(updatedNbItems)));
51
- AppRouter.pop(router);
52
- }
53
- : undefined
54
- }
55
- >
56
- {traductions.homeTransactionsRecentsNombreBtnSave}
57
- </ElevatedButton>
58
- <View style={styles.gap10} />
59
- </ScrollView>
60
- </View>
32
+ <SelectionSheet
33
+ titre={traductions.homeTransactionsRecentsNombreTitle}
34
+ entete={
35
+ <Text style={[theme.textTheme.displaySmall, { color: Themer.neural03Color }]}>
36
+ {traductions.homeTransactionsRecentsNombreSubTitle}
37
+ </Text>
38
+ }
39
+ contenu={
40
+ <ScrollView bounces={false} contentContainerStyle={styles.content}>
41
+ {/* Boutons réduire et augmenter */}
42
+ <Card style={styles.carte}>
43
+ <View style={styles.row}>
44
+ {/* Pastille */}
45
+ <View style={[styles.pastille, { backgroundColor: withAlpha(primaire, 0.12) }]}>
46
+ <MaterialIcons name="receipt-long" size={20} color={primaire} />
47
+ </View>
48
+ <Text style={[theme.textTheme.displayLarge, styles.libelle]}>{traductions.homeTransactions}</Text>
49
+ <NumberIncWidget min={3} max={10} number={updatedNbItems} onChange={setUpdatedNbItems} />
50
+ </View>
51
+ </Card>
52
+ <View style={styles.gap20} />
53
+ {/* Enregistrer */}
54
+ <ElevatedButton
55
+ onPress={
56
+ updatedNbItems !== nbItems
57
+ ? () => {
58
+ configBloc.add(new ConfigChangeEvent(ConfigKey.transactionsRecentNbItems, String(updatedNbItems)));
59
+ AppRouter.pop(router);
60
+ }
61
+ : undefined
62
+ }
63
+ >
64
+ {traductions.homeTransactionsRecentsNombreBtnSave}
65
+ </ElevatedButton>
66
+ </ScrollView>
67
+ }
68
+ />
61
69
  );
62
70
  }
63
71
 
64
72
  const styles = StyleSheet.create({
65
- box: { borderRadius: 20, overflow: 'hidden' },
66
- content: { padding: 20 },
67
- row: { flexDirection: 'row', alignItems: 'center', padding: 15 },
68
- flex: { flex: 1 },
69
- gap10: { height: 10 },
70
- gap24: { height: 24 },
71
- gap32: { height: 32 },
73
+ content: { paddingHorizontal: 20, paddingTop: 12, paddingBottom: 16 },
74
+ carte: { margin: 0 },
75
+ row: { flexDirection: 'row', alignItems: 'center', paddingHorizontal: 14, paddingVertical: 12 },
76
+ pastille: { width: 40, height: 40, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },
77
+ libelle: { flex: 1, marginHorizontal: 14, fontWeight: '500' },
78
+ gap20: { height: 20 },
72
79
  });
@@ -59,7 +59,7 @@ export function TransactionRecentsWidget() {
59
59
  <Pressable
60
60
  accessibilityRole="button"
61
61
  hitSlop={10}
62
- onPress={() => void showModalBottomSheet(router, { themed: true, builder: () => <TransactionRecentsNombreWidget /> })}
62
+ onPress={() => void showModalBottomSheet(router, { builder: () => <TransactionRecentsNombreWidget /> })}
63
63
  >
64
64
  <MaterialIcons name="more-horiz" size={24} color={theme.colorScheme.onSurface} />
65
65
  </Pressable>
@@ -74,7 +74,6 @@ export function TransactionRtpPageActions({
74
74
 
75
75
  const onRejectTap = () =>
76
76
  void showModalBottomSheet(router, {
77
- themed: true,
78
77
  builder: () => (
79
78
  <BlocProvider blocs={[bloc]}>
80
79
  <TransactionRtpPageActionsReject />
@@ -1,19 +1,18 @@
1
- import { MaterialIcons } from '@expo/vector-icons';
2
1
  import { useState } from 'react';
3
- import { Pressable, StyleSheet, Text, View } from 'react-native';
2
+ import { ScrollView, StyleSheet, Text } from 'react-native';
4
3
 
5
4
  import { useBloc } from '../../../../../core/bloc_react';
6
5
  import { AppRouter, useAppRouter } from '../../../../../core/router';
7
- import { useTheme } from '../../../../../core/theme';
6
+ import { Themer, useTheme } from '../../../../../core/theme';
8
7
  import type { AppLocalizations } from '../../../../../l10n/app_localizations';
9
8
  import { useAppLocalizations } from '../../../../../l10n/localizations';
10
9
  import { ElevatedButton } from '../../../../../shared/material/buttons';
11
10
  import { formatMontant } from '../../../../../shared/widgets/amount_widget';
11
+ import { SelectionBoutons, SelectionChoix, SelectionSheet } from '../../../../../shared/widgets/selection';
12
12
  import type { Transaction } from '../../../domain/models/transaction';
13
13
  import { TransactionRejectReason } from '../../../domain/models/transaction_reject_reason';
14
14
  import { TransactionRtpBloc } from '../../bloc/transaction_rtp/transaction_rtp_bloc';
15
15
  import { TransactionRtpRejectEvent } from '../../bloc/transaction_rtp/transaction_rtp_event';
16
- import { SheetBox } from '../transaction_details/sheet_box';
17
16
 
18
17
  /** Textes des raisons de rejet */
19
18
  function raison(motif: TransactionRejectReason, traductions: AppLocalizations): string {
@@ -43,52 +42,52 @@ export function TransactionRtpPageActionsReject() {
43
42
  const tx = (bloc.state as unknown as { transaction: Transaction }).transaction;
44
43
 
45
44
  return (
46
- <SheetBox>
47
- <Text style={theme.textTheme.headlineLarge}>{traductions.transactionRtpRejectTitle(tx.clientNom)}</Text>
48
- <View style={styles.gap12} />
49
- <Text style={theme.textTheme.bodySmall}>
50
- {traductions.transactionRtpRejectSubtitle(formatMontant(tx.montant, traductions.localeName), tx.clientNom)}
51
- </Text>
52
- <View style={styles.gap20} />
53
- {/* Raisons du rejet */}
54
- {TransactionRejectReason.values()
55
- .filter((motif) => motif !== TransactionRejectReason.autre)
56
- .map((motif) => (
57
- <View key={motif} style={styles.chipRow}>
58
- <Pressable
59
- accessibilityRole="button"
60
- onPress={() => setReason(motif)}
61
- style={[styles.chip, { backgroundColor: theme.secondaryHeaderColor }]}
62
- >
63
- {reason === motif && <MaterialIcons name="check" size={18} color={theme.colorScheme.onSurface} style={styles.check} />}
64
- <Text style={theme.textTheme.bodyMedium}>{raison(motif, traductions)}</Text>
65
- </Pressable>
66
- </View>
67
- ))}
68
- <View style={styles.gap10} />
69
- <ElevatedButton
70
- style={styles.button}
71
- onPress={
72
- reason != null
73
- ? () => {
74
- AppRouter.pop(router);
75
- bloc.add(new TransactionRtpRejectEvent(tx, reason));
76
- }
77
- : undefined
78
- }
79
- >
80
- {traductions.btnTextReject}
81
- </ElevatedButton>
82
- </SheetBox>
45
+ <SelectionSheet
46
+ titre={traductions.transactionRtpRejectTitle(tx.clientNom)}
47
+ entete={
48
+ <Text style={[theme.textTheme.displaySmall, { color: Themer.neural03Color }]}>
49
+ {traductions.transactionRtpRejectSubtitle(formatMontant(tx.montant, traductions.localeName), tx.clientNom)}
50
+ </Text>
51
+ }
52
+ contenu={
53
+ <>
54
+ {/* Raisons du rejet */}
55
+ <ScrollView bounces={false} style={styles.defile} contentContainerStyle={styles.content}>
56
+ {TransactionRejectReason.values()
57
+ .filter((motif) => motif !== TransactionRejectReason.autre)
58
+ .map((motif) => (
59
+ <SelectionChoix
60
+ key={motif}
61
+ texte={raison(motif, traductions)}
62
+ choisi={reason === motif}
63
+ onPress={() => setReason(motif)}
64
+ />
65
+ ))}
66
+ </ScrollView>
67
+ <SelectionBoutons
68
+ boutons={[
69
+ <ElevatedButton
70
+ key="rejeter"
71
+ onPress={
72
+ reason != null
73
+ ? () => {
74
+ AppRouter.pop(router);
75
+ bloc.add(new TransactionRtpRejectEvent(tx, reason));
76
+ }
77
+ : undefined
78
+ }
79
+ >
80
+ {traductions.btnTextReject}
81
+ </ElevatedButton>,
82
+ ]}
83
+ />
84
+ </>
85
+ }
86
+ />
83
87
  );
84
88
  }
85
89
 
86
90
  const styles = StyleSheet.create({
87
- gap10: { height: 10 },
88
- gap12: { height: 12 },
89
- gap20: { height: 20 },
90
- chipRow: { paddingVertical: 5, alignItems: 'flex-start' },
91
- chip: { flexDirection: 'row', alignItems: 'center', borderRadius: 8, paddingHorizontal: 12, minHeight: 32 },
92
- check: { marginRight: 8 },
93
- button: { height: 56 },
91
+ defile: { flexShrink: 1 },
92
+ content: { paddingHorizontal: 20, paddingTop: 4, paddingBottom: 16 },
94
93
  });
@@ -1,11 +1,9 @@
1
- import { Keyboard, Pressable, StyleSheet, Text, View } from 'react-native';
1
+ import { Keyboard, Pressable, StyleSheet, View } from 'react-native';
2
2
 
3
3
  import { BlocProvider, useCreateBloc } from '../../../../../core/bloc_react';
4
4
  import { Di } from '../../../../../core/di';
5
- import { AppRouter, useAppRouter } from '../../../../../core/router';
6
- import { useTheme } from '../../../../../core/theme';
7
5
  import { useAppLocalizations } from '../../../../../l10n/localizations';
8
- import { AppBar, Scaffold } from '../../../../../shared/material/scaffold';
6
+ import { Scaffold } from '../../../../../shared/material/scaffold';
9
7
  import { MyPageContainer } from '../../../../../shared/widgets/my_page_container';
10
8
  import { TransactionSens } from '../../../domain/models/transaction';
11
9
  import { TransactionSearchCommand } from '../../../domain/models/transaction_search/transaction_search_command';
@@ -14,12 +12,11 @@ import { TransactionSearchBloc } from '../../bloc/transaction_search/transaction
14
12
  import { TransactionSearchListEvent } from '../../bloc/transaction_search/transaction_search_event';
15
13
  import { TransactionSearchPageInput } from './transaction_search_page_input';
16
14
  import { TransactionSearchPageListe } from './transaction_search_page_liste';
15
+ import { ProfileAppBar } from '../../../../profile/presentation/pages/profile_app_bar';
17
16
 
18
17
  /** Recherche dans toutes les transactions du compte actif (route `transactionSearch`). */
19
18
  export function TransactionSearchPage() {
20
19
  const traductions = useAppLocalizations();
21
- const theme = useTheme();
22
- const router = useAppRouter();
23
20
  const bloc = useCreateBloc(() => {
24
21
  const created = new TransactionSearchBloc(Di.getTransactionInputPort());
25
22
  created.add(
@@ -34,12 +31,11 @@ export function TransactionSearchPage() {
34
31
  });
35
32
 
36
33
  return (
37
- <Scaffold appBar={<AppBar onBack={() => AppRouter.pop(router)} />}>
34
+ <Scaffold appBar={<ProfileAppBar titre={traductions.transactionSearchTitle} />}>
38
35
  <BlocProvider blocs={[bloc]}>
39
36
  <MyPageContainer>
40
37
  <Pressable style={styles.flex} onPress={Keyboard.dismiss} accessible={false}>
41
- <Text style={theme.textTheme.titleSmall}>{traductions.transactionSearchTitle}</Text>
42
- <View style={styles.gap16} />
38
+ <View style={styles.gap8} />
43
39
  {/* Barre de filtre : champ et bouton */}
44
40
  <TransactionSearchPageInput />
45
41
  <View style={styles.gap32} />
@@ -54,6 +50,6 @@ export function TransactionSearchPage() {
54
50
 
55
51
  const styles = StyleSheet.create({
56
52
  flex: { flex: 1 },
57
- gap16: { height: 16 },
53
+ gap8: { height: 8 },
58
54
  gap32: { height: 32 },
59
55
  });
@@ -4,18 +4,18 @@ import { useState } from 'react';
4
4
  import { ScrollView, StyleSheet, Text, TextInput, View } from 'react-native';
5
5
 
6
6
  import { Images } from '../../../../../core/assets';
7
- import { AppRouter, useAppRouter } from '../../../../../core/router';
8
7
  import { Themer, useTheme } from '../../../../../core/theme';
9
8
  import { useAppLocalizations } from '../../../../../l10n/localizations';
10
9
  import { TextButton } from '../../../../../shared/material/buttons';
11
10
  import { Card } from '../../../../../shared/material/card';
12
- import { AppBar, Scaffold } from '../../../../../shared/material/scaffold';
11
+ import { Scaffold } from '../../../../../shared/material/scaffold';
13
12
  import { CircleAvatarWidget } from '../../../../../shared/widgets/circle_avatar_widget';
14
13
  import { MyPageContainer } from '../../../../../shared/widgets/my_page_container';
15
14
  import { ContactPI } from '../../../../contacts/domain/contact_pi';
16
15
  import type { Transaction } from '../../../domain/models/transaction';
17
16
  import { TransactionListItemWidget } from '../transaction_list_item_widget';
18
17
  import { SPLIT_SELF, TransactionSplitPageConfirm } from './transaction_split_page_confirm';
18
+ import { ProfileAppBar } from '../../../../profile/presentation/pages/profile_app_bar';
19
19
 
20
20
  /**
21
21
  * Partage de dépense, dernière étape : répartition du montant entre le
@@ -24,7 +24,6 @@ import { SPLIT_SELF, TransactionSplitPageConfirm } from './transaction_split_pag
24
24
  export function TransactionSplitPageRepartition({ transaction, contacts }: { transaction: Transaction; contacts: ContactPI[] }) {
25
25
  const traductions = useAppLocalizations();
26
26
  const theme = useTheme();
27
- const router = useAppRouter();
28
27
  // Le client en tête de liste
29
28
  const [selectedItems] = useState(() => [new ContactPI({ name: SPLIT_SELF, phoneNumber: '', alias: SPLIT_SELF }), ...contacts]);
30
29
  // Répartition par défaut : parts égales, le reste pour le client
@@ -39,10 +38,8 @@ export function TransactionSplitPageRepartition({ transaction, contacts }: { tra
39
38
  });
40
39
 
41
40
  return (
42
- <Scaffold appBar={<AppBar onBack={() => AppRouter.pop(router)} />}>
41
+ <Scaffold appBar={<ProfileAppBar titre={traductions.transactionSplitRepartitionTitle} />}>
43
42
  <MyPageContainer>
44
- <Text style={theme.textTheme.titleSmall}>{traductions.transactionSplitRepartitionTitle}</Text>
45
- <View style={styles.gap10} />
46
43
  <ScrollView style={styles.flex} keyboardShouldPersistTaps="handled">
47
44
  {/* Détails du paiement partagé */}
48
45
  <Text style={theme.textTheme.headlineSmall}>{traductions.transactionSplitRepartitionSubtitle1}</Text>