@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,60 +1,46 @@
1
- import { ScrollView, StyleSheet, Text, useWindowDimensions, View } from 'react-native';
2
- import { useSafeAreaInsets } from 'react-native-safe-area-context';
1
+ import { ScrollView, StyleSheet, View } from 'react-native';
3
2
 
4
3
  import { Images } from '../../../../core/assets';
5
4
  import { AppRouter, useAppRouter } from '../../../../core/router';
6
- import { useTheme } from '../../../../core/theme';
7
5
  import { useAppLocalizations } from '../../../../l10n/localizations';
8
- import { Card } from '../../../../shared/material/card';
9
- import { MenuActionItem, MenuActionsWidget } from '../../../../shared/widgets/menu_actions_widget';
6
+ import { SelectionOption, SelectionSheet } from '../../../../shared/widgets/selection';
10
7
 
11
8
  /** Menu de création : programmer un paiement ou souscrire à un abonnement (feuille du bas) */
12
9
  export function SubscriptionMenuWidget() {
13
10
  const traductions = useAppLocalizations();
14
- const theme = useTheme();
15
11
  const router = useAppRouter();
16
- const { height } = useWindowDimensions();
17
- const insets = useSafeAreaInsets();
18
12
  // Fermer le menu avant d'ouvrir la page : sinon il reste affiché par-dessus
19
13
  const open = (location: string) => {
20
14
  AppRouter.pop(router);
21
15
  void AppRouter.push(router, location);
22
16
  };
23
17
  return (
24
- <View style={[styles.box, { maxHeight: height * 0.4, backgroundColor: theme.colorScheme.surface }]}>
25
- <ScrollView contentContainerStyle={[styles.content, { paddingBottom: 20 + insets.bottom }]}>
26
- {/* Titre */}
27
- <Text style={theme.textTheme.headlineMedium}>{traductions.subscriptionEmptyBtnCreate}</Text>
28
- <View style={styles.gap20} />
29
- <Card>
30
- <MenuActionsWidget
31
- items={[
32
- // Programmer
33
- new MenuActionItem(
34
- Images.homeFooterTransfer,
35
- traductions.subscriptionMenuScheduleTitle,
36
- traductions.subscriptionMenuScheduleSubtitle,
37
- () => open(AppRouter.subscriptionSchedule),
38
- { iconSize: 20 },
39
- ),
40
- // Souscrire à un abonnement
41
- new MenuActionItem(
42
- Images.iconRepeat,
43
- traductions.subscriptionMenuSubscribeTitle,
44
- traductions.subscriptionMenuSubscribeSubtitle,
45
- () => open(AppRouter.subscriptionSubscribe),
46
- { iconSize: 20 },
47
- ),
48
- ]}
18
+ <SelectionSheet
19
+ titre={traductions.subscriptionEmptyBtnCreate}
20
+ contenu={
21
+ <ScrollView bounces={false} contentContainerStyle={styles.content}>
22
+ {/* Programmer */}
23
+ <SelectionOption
24
+ image={Images.homeFooterTransfer}
25
+ titre={traductions.subscriptionMenuScheduleTitle}
26
+ sousTitre={traductions.subscriptionMenuScheduleSubtitle}
27
+ onPress={() => open(AppRouter.subscriptionSchedule)}
49
28
  />
50
- </Card>
51
- </ScrollView>
52
- </View>
29
+ <View style={styles.gap10} />
30
+ {/* Souscrire à un abonnement */}
31
+ <SelectionOption
32
+ image={Images.iconRepeat}
33
+ titre={traductions.subscriptionMenuSubscribeTitle}
34
+ sousTitre={traductions.subscriptionMenuSubscribeSubtitle}
35
+ onPress={() => open(AppRouter.subscriptionSubscribe)}
36
+ />
37
+ </ScrollView>
38
+ }
39
+ />
53
40
  );
54
41
  }
55
42
 
56
43
  const styles = StyleSheet.create({
57
- box: { borderRadius: 20, overflow: 'hidden' },
58
- content: { padding: 20 },
59
- gap20: { height: 20 },
44
+ content: { paddingHorizontal: 20, paddingTop: 8, paddingBottom: 16 },
45
+ gap10: { height: 10 },
60
46
  });
@@ -26,8 +26,7 @@ export class TransactionSendCommandOthr {
26
26
 
27
27
  isValid(): boolean {
28
28
  const compte = this.compte();
29
- // `else if` ici : en Dart, l'erreur « vide » était aussitôt écrasée
30
- // (et un compte absent faisait planter le test de longueur).
29
+ // Un compte vide ou absent est refusé (« vide »), avant le test de longueur
31
30
  if (compte == null || compte.length === 0) {
32
31
  this.error = TransactionSendCommandOthrError.empty;
33
32
  } else if (compte.length > 34) {
@@ -78,7 +78,12 @@ export class TransactionOutputRemote {
78
78
 
79
79
  /** En-têtes communs des requêtes SSE */
80
80
  private sseHeaders(): Record<string, string> {
81
- return { Accept: 'text/event-stream', 'Cache-Control': 'no-cache', Authorization: `Bearer ${Api.accessToken}` };
81
+ return {
82
+ Accept: 'text/event-stream',
83
+ 'Cache-Control': 'no-cache',
84
+ Authorization: `Bearer ${Api.accessToken}`,
85
+ ...Api.apiKeyHeaders(),
86
+ };
82
87
  }
83
88
 
84
89
  /** Confirmer une transaction : la réponse finale (irrévocable/rejetée) arrive par SSE. */
@@ -125,6 +125,20 @@ export class TransactionSendBloc extends Bloc<TransactionSendEvent, TransactionS
125
125
  }
126
126
  this.state.participants = await this.participantInputPort.search();
127
127
  }
128
+ // Formulaire affiché : le solde vient d'arriver (récupéré après
129
+ // l'ouverture), on revalide le montant déjà rempli (formulaire
130
+ // prérempli depuis une transaction) pour afficher « solde
131
+ // insuffisant » et désactiver « Continuer ». Seul le montant est
132
+ // revalidé : un formulaire vierge ne doit pas afficher d'erreurs.
133
+ const current = this.state;
134
+ if (solde != null && current instanceof TransactionSendFormInputState && current.command.amount?.value != null) {
135
+ const form = current.command;
136
+ form.solde = current.solde ?? undefined;
137
+ form.amount!.solde = current.solde ?? undefined;
138
+ form.amount!.isValid();
139
+ emit(new TransactionSendFormInputState(form, this.data()));
140
+ return;
141
+ }
128
142
  this.emitUpdated(emit);
129
143
  } catch {
130
144
  // On garde l'état courant
@@ -169,6 +183,9 @@ export class TransactionSendBloc extends Bloc<TransactionSendEvent, TransactionS
169
183
  private onFormChanged(event: TransactionSendFormChangedEvent, emit: Emitter<TransactionSendState>) {
170
184
  const form = event.command;
171
185
  form.solde = this.state.solde ?? undefined;
186
+ // Le contrôle du solde se fait sur le montant : un montant prérempli
187
+ // (envoi depuis une transaction) n'a pas encore de solde
188
+ if (form.amount != null) form.amount.solde = form.solde;
172
189
  if (form.othr != null) {
173
190
  form.method = form.othr.isValidIban() ? TransactionSendMethod.iban : TransactionSendMethod.othr;
174
191
  }
@@ -52,7 +52,6 @@ export function TransactionDetailsPageActions({ transaction }: { transaction: Tr
52
52
  /** Ouvre une feuille ayant accès au bloc du détail */
53
53
  const showSheet = (content: ReactNode) =>
54
54
  void showModalBottomSheet(router, {
55
- themed: true,
56
55
  builder: () => <BlocProvider blocs={[transactionDetailsBloc]}>{content}</BlocProvider>,
57
56
  });
58
57
 
@@ -1,16 +1,15 @@
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
- import { useTheme } from '../../../../../core/theme';
5
+ import { Themer, useTheme } from '../../../../../core/theme';
7
6
  import { useAppLocalizations } from '../../../../../l10n/localizations';
8
7
  import { ElevatedButton } from '../../../../../shared/material/buttons';
8
+ import { SelectionBoutons, SelectionChoix, SelectionSheet } from '../../../../../shared/widgets/selection';
9
9
  import { TransactionCancelReason } from '../../../domain/models/transaction_cancel_reason';
10
10
  import { TransactionDetailsBloc } from '../../bloc/transaction_details/transaction_details_bloc';
11
11
  import { TransactionCancelSendEvent } from '../../bloc/transaction_details/transaction_details_event';
12
12
  import { TransactionCancelReasonText } from '../transaction_cancel/transaction_cancel_reason_text';
13
- import { SheetBox } from './sheet_box';
14
13
 
15
14
  /** Feuille « Demander l'annulation » : choix du motif puis envoi de la demande. */
16
15
  export function TransactionDetailsPageActionsCancel() {
@@ -22,45 +21,44 @@ export function TransactionDetailsPageActionsCancel() {
22
21
  const tx = bloc.state.transaction!;
23
22
 
24
23
  return (
25
- <SheetBox>
26
- {/* Title */}
27
- <Text style={theme.textTheme.headlineLarge}>{traductions.transactionDetailsCancelTitle}</Text>
28
- <View style={styles.gap20} />
29
- {/* SubTitle */}
30
- <Text style={theme.textTheme.displaySmall}>{traductions.transactionDetailsCancelSubTitle}</Text>
31
- <View style={styles.gap10} />
32
- {/* Raisons de la demande d'annulation */}
33
- {TransactionCancelReason.values().map((motif) => (
34
- <View key={motif} style={styles.chipRow}>
35
- <Pressable
36
- accessibilityRole="button"
37
- onPress={() => setReason(motif)}
38
- style={[styles.chip, { backgroundColor: theme.secondaryHeaderColor }]}
39
- >
40
- {reason === motif && (
41
- <MaterialIcons name="check" size={18} color={theme.colorScheme.onSurface} style={styles.check} />
42
- )}
43
- <Text style={theme.textTheme.bodyMedium}>{TransactionCancelReasonText.label(motif, traductions)}</Text>
44
- </Pressable>
45
- </View>
46
- ))}
47
- {/* Bouton Demander l'annulation */}
48
- <View style={styles.gap10} />
49
- <ElevatedButton
50
- style={styles.button}
51
- onPress={reason != null ? () => bloc.add(new TransactionCancelSendEvent(tx, reason)) : undefined}
52
- >
53
- {traductions.transactionDetailsCancelBtnSend}
54
- </ElevatedButton>
55
- </SheetBox>
24
+ <SelectionSheet
25
+ titre={traductions.transactionDetailsCancelTitle}
26
+ entete={
27
+ <Text style={[theme.textTheme.displaySmall, { color: Themer.neural03Color }]}>
28
+ {traductions.transactionDetailsCancelSubTitle}
29
+ </Text>
30
+ }
31
+ contenu={
32
+ <>
33
+ {/* Raisons de la demande d'annulation */}
34
+ <ScrollView bounces={false} style={styles.defile} contentContainerStyle={styles.content}>
35
+ {TransactionCancelReason.values().map((motif) => (
36
+ <SelectionChoix
37
+ key={motif}
38
+ texte={TransactionCancelReasonText.label(motif, traductions)}
39
+ choisi={reason === motif}
40
+ onPress={() => setReason(motif)}
41
+ />
42
+ ))}
43
+ </ScrollView>
44
+ {/* Bouton Demander l'annulation */}
45
+ <SelectionBoutons
46
+ boutons={[
47
+ <ElevatedButton
48
+ key="envoyer"
49
+ onPress={reason != null ? () => bloc.add(new TransactionCancelSendEvent(tx, reason)) : undefined}
50
+ >
51
+ {traductions.transactionDetailsCancelBtnSend}
52
+ </ElevatedButton>,
53
+ ]}
54
+ />
55
+ </>
56
+ }
57
+ />
56
58
  );
57
59
  }
58
60
 
59
61
  const styles = StyleSheet.create({
60
- gap10: { height: 10 },
61
- gap20: { height: 20 },
62
- chipRow: { paddingVertical: 10, alignItems: 'flex-start' },
63
- chip: { flexDirection: 'row', alignItems: 'center', borderRadius: 8, paddingHorizontal: 12, minHeight: 32 },
64
- check: { marginRight: 8 },
65
- button: { height: 56 },
62
+ defile: { flexShrink: 1 },
63
+ content: { paddingHorizontal: 20, paddingTop: 4, paddingBottom: 16 },
66
64
  });
@@ -1,21 +1,19 @@
1
- import { StyleSheet, Text, View } from 'react-native';
1
+ import { ScrollView, StyleSheet, View } from 'react-native';
2
2
 
3
3
  import { useBloc, useBlocBuilder } from '../../../../../core/bloc_react';
4
4
  import { Di } from '../../../../../core/di';
5
5
  import { AppRouter, useAppRouter } from '../../../../../core/router';
6
- import { useTheme } from '../../../../../core/theme';
7
6
  import { useAppLocalizations } from '../../../../../l10n/localizations';
8
7
  import { ElevatedButton, FilledTonalButton } from '../../../../../shared/material/buttons';
9
8
  import { InputAmount } from '../../../../../shared/widgets/input_amount';
10
9
  import { CustomTextInput } from '../../../../../shared/widgets/input_text';
10
+ import { SelectionBoutons, SelectionSheet } from '../../../../../shared/widgets/selection';
11
11
  import { TransactionDetailsBloc } from '../../bloc/transaction_details/transaction_details_bloc';
12
12
  import { TransactionReturnSendEvent } from '../../bloc/transaction_details/transaction_details_event';
13
- import { SheetBox } from './sheet_box';
14
13
 
15
14
  /** Feuille « Retourner les fonds » d'un transfert reçu, si le solde le permet. */
16
15
  export function TransactionDetailsPageActionsReturn() {
17
16
  const traductions = useAppLocalizations();
18
- const theme = useTheme();
19
17
  const router = useAppRouter();
20
18
  const bloc = useBloc(TransactionDetailsBloc);
21
19
  const state = useBlocBuilder(bloc);
@@ -30,50 +28,47 @@ export function TransactionDetailsPageActionsReturn() {
30
28
  };
31
29
 
32
30
  return (
33
- <SheetBox>
34
- {/* Titre */}
35
- <Text style={[theme.textTheme.titleSmall, styles.center]}>{traductions.transactionDetailsReturnTitle}</Text>
36
- <View style={styles.gap20} />
37
- {/* EndToEndId */}
38
- <CustomTextInput labelText={traductions.transactionDetailsIdentifiant} value={tx.endToEndId} readOnly />
39
- <View style={styles.gap20} />
40
- {/* Nom du payeur */}
41
- <CustomTextInput labelText={traductions.transactionDetailsPayeurLabel} value={tx.clientNom} readOnly />
42
- <View style={styles.gap20} />
43
- {/* Montant */}
44
- <InputAmount
45
- key={solde}
46
- solde={solde}
47
- hintText={traductions.transactionFormAmountHint}
48
- value={String(Math.trunc(tx.montant))}
49
- readOnly
50
- messageError={isSoldeInsuffisant ? traductions.transactionFormAmountInvalid : null}
51
- />
52
- <View style={styles.gap20} />
53
- <View style={styles.buttons}>
54
- {/* Non je ne retourne pas */}
55
- <View style={styles.flex}>
56
- <FilledTonalButton style={styles.button} onPress={() => AppRouter.pop(router)}>
57
- {traductions.btnTextNo}
58
- </FilledTonalButton>
59
- </View>
60
- <View style={styles.gap16} />
61
- {/* Oui je retourne les fonds */}
62
- <View style={styles.flex}>
63
- <ElevatedButton style={styles.button} onPress={!isSoldeInsuffisant ? () => void confirmReturn() : undefined}>
64
- {traductions.btnTextYes}
65
- </ElevatedButton>
66
- </View>
67
- </View>
68
- </SheetBox>
31
+ <SelectionSheet
32
+ titre={traductions.transactionDetailsReturnTitle}
33
+ contenu={
34
+ <>
35
+ <ScrollView keyboardShouldPersistTaps="handled" bounces={false} style={styles.defile} contentContainerStyle={styles.content}>
36
+ {/* EndToEndId */}
37
+ <CustomTextInput labelText={traductions.transactionDetailsIdentifiant} value={tx.endToEndId} readOnly />
38
+ <View style={styles.gap12} />
39
+ {/* Nom du payeur */}
40
+ <CustomTextInput labelText={traductions.transactionDetailsPayeurLabel} value={tx.clientNom} readOnly />
41
+ <View style={styles.gap12} />
42
+ {/* Montant */}
43
+ <InputAmount
44
+ key={solde}
45
+ solde={solde}
46
+ hintText={traductions.transactionFormAmountHint}
47
+ value={String(Math.trunc(tx.montant))}
48
+ readOnly
49
+ messageError={isSoldeInsuffisant ? traductions.transactionFormAmountInvalid : null}
50
+ />
51
+ </ScrollView>
52
+ <SelectionBoutons
53
+ boutons={[
54
+ // Non je ne retourne pas
55
+ <FilledTonalButton key="non" onPress={() => AppRouter.pop(router)}>
56
+ {traductions.btnTextNo}
57
+ </FilledTonalButton>,
58
+ // Oui je retourne les fonds
59
+ <ElevatedButton key="oui" onPress={!isSoldeInsuffisant ? () => void confirmReturn() : undefined}>
60
+ {traductions.btnTextYes}
61
+ </ElevatedButton>,
62
+ ]}
63
+ />
64
+ </>
65
+ }
66
+ />
69
67
  );
70
68
  }
71
69
 
72
70
  const styles = StyleSheet.create({
73
- center: { textAlign: 'center' },
74
- gap16: { width: 16 },
75
- gap20: { height: 20 },
76
- buttons: { flexDirection: 'row', height: 56 },
77
- flex: { flex: 1 },
78
- button: { height: 56 },
71
+ defile: { flexShrink: 1 },
72
+ content: { paddingHorizontal: 20, paddingTop: 8, paddingBottom: 16 },
73
+ gap12: { height: 12 },
79
74
  });
@@ -10,10 +10,10 @@ import { AppRouter, useAppRouter, type SdkRouter } from '../../../../../core/rou
10
10
  import { Themer, useTheme } from '../../../../../core/theme';
11
11
  import type { AppLocalizations } from '../../../../../l10n/app_localizations';
12
12
  import { useAppLocalizations } from '../../../../../l10n/localizations';
13
- import { TextButtonIcon } from '../../../../../shared/material/buttons';
14
- import { Card } from '../../../../../shared/material/card';
13
+ import { ElevatedButton, TextButtonIcon } from '../../../../../shared/material/buttons';
15
14
  import { showModalBottomSheet } from '../../../../../shared/material/overlays';
16
15
  import { ImageSelectWidget } from '../../../../../shared/widgets/image_select_widget';
16
+ import { SelectionBoutons, SelectionSheet } from '../../../../../shared/widgets/selection';
17
17
  import type { Transaction } from '../../../domain/models/transaction';
18
18
 
19
19
  const logger = new Logger();
@@ -108,7 +108,7 @@ export function TransactionDetailsPageTicket({ transaction }: { transaction: Tra
108
108
  );
109
109
  }
110
110
 
111
- /** Feuille pour visualiser le ticket de caisse */
111
+ /** Feuille pour visualiser le ticket de caisse : l'image en grand, puis Supprimer et Partager. */
112
112
  function TicketVisualiser({
113
113
  uri,
114
114
  transaction,
@@ -124,37 +124,48 @@ function TicketVisualiser({
124
124
  const { height } = useWindowDimensions();
125
125
 
126
126
  return (
127
- <View style={[styles.sheet, { backgroundColor: theme.colorScheme.surface, minHeight: height * 0.2, height: height * 0.8 }]}>
128
- {/* Bouton partager */}
129
- <View style={styles.actions}>
130
- <Pressable accessibilityRole="button" hitSlop={8} style={styles.iconButton} onPress={() => void shareTicket(transaction, traductions)}>
131
- <MaterialIcons name={Platform.OS === 'ios' ? 'ios-share' : 'share'} size={24} color={theme.colorScheme.onSurface} />
132
- </Pressable>
133
- </View>
134
- <View style={styles.gap20} />
135
- {/* Image du ticket de caisse */}
136
- <Card style={styles.flex}>
137
- <View style={styles.card}>
138
- <View style={styles.gap20} />
139
- {/* Titre */}
140
- <Text style={[theme.textTheme.headlineLarge, styles.center]}>{traductions.transactionDetailsTicketCaisse}</Text>
141
- <View style={styles.gap8} />
142
- {/* Sous-titre */}
143
- <Text style={[theme.textTheme.displaySmall, styles.center]}>{traductions.transactionDetailsTicketCaisseSubtitle}</Text>
144
- <View style={styles.image}>
127
+ <SelectionSheet
128
+ hauteurMax={0.85}
129
+ titre={traductions.transactionDetailsTicketCaisse}
130
+ entete={
131
+ <Text style={[theme.textTheme.displaySmall, { color: Themer.neural03Color }]}>
132
+ {traductions.transactionDetailsTicketCaisseSubtitle}
133
+ </Text>
134
+ }
135
+ contenu={
136
+ <>
137
+ {/* Image du ticket de caisse */}
138
+ <View style={[styles.image, { height: height * 0.5 }]}>
145
139
  <Image source={{ uri }} style={styles.flex} contentFit="contain" />
146
140
  </View>
147
- </View>
148
- </Card>
149
- {/* Bouton supprimer */}
150
- <View style={styles.gap20} />
151
- <TextButtonIcon
152
- onPress={onDelete}
153
- icon={<MaterialIcons name="delete-forever" size={24} color={Themer.systemErrorColor} />}
154
- label={traductions.btnTextDelete}
155
- textStyle={[theme.textTheme.bodySmall, { color: Themer.systemErrorColor }]}
156
- />
157
- </View>
141
+ <SelectionBoutons
142
+ boutons={[
143
+ // Supprimer
144
+ <TextButtonIcon
145
+ key="supprimer"
146
+ onPress={onDelete}
147
+ icon={<MaterialIcons name="delete-outline" size={22} color={Themer.systemErrorColor} />}
148
+ label={traductions.btnTextDelete}
149
+ textStyle={{ color: Themer.systemErrorColor }}
150
+ />,
151
+ // Partager
152
+ <ElevatedButton key="partager" onPress={() => void shareTicket(transaction, traductions)}>
153
+ <View style={styles.row}>
154
+ <MaterialIcons
155
+ name={Platform.OS === 'ios' ? 'ios-share' : 'share'}
156
+ size={18}
157
+ color={theme.elevatedButtonTheme.foregroundColor}
158
+ />
159
+ <Text style={[theme.elevatedButtonTheme.textStyle, styles.libelle, { color: theme.elevatedButtonTheme.foregroundColor }]}>
160
+ {traductions.transactionDetailsTicketPartager}
161
+ </Text>
162
+ </View>
163
+ </ElevatedButton>,
164
+ ]}
165
+ />
166
+ </>
167
+ }
168
+ />
158
169
  );
159
170
  }
160
171
 
@@ -175,12 +186,7 @@ async function shareTicket(transaction: Transaction, traductions: AppLocalizatio
175
186
  const styles = StyleSheet.create({
176
187
  flex: { flex: 1 },
177
188
  thumbnail: { width: 30, height: 30, borderRadius: 8 },
178
- sheet: { borderTopLeftRadius: 20, borderTopRightRadius: 20, padding: 10 },
179
- actions: { flexDirection: 'row', justifyContent: 'space-between' },
180
- iconButton: { padding: 8 },
181
- card: { flex: 1, padding: 20 },
182
- image: { flex: 1, margin: 20, borderRadius: 10, overflow: 'hidden' },
183
- center: { textAlign: 'center' },
184
- gap8: { height: 8 },
185
- gap20: { height: 20 },
189
+ image: { marginHorizontal: 20, marginTop: 8, marginBottom: 16, borderRadius: 14, overflow: 'hidden' },
190
+ row: { flexDirection: 'row', alignItems: 'center' },
191
+ libelle: { marginLeft: 8 },
186
192
  });
@@ -1,20 +1,22 @@
1
- import { MaterialIcons } from '@expo/vector-icons';
2
- import { Pressable, View } from 'react-native';
1
+ import { StyleSheet, Text, View } from 'react-native';
3
2
 
4
3
  import { useBloc } from '../../../../../core/bloc_react';
5
4
  import { useAppRouter } from '../../../../../core/router';
6
- import { useTheme } from '../../../../../core/theme';
5
+ import { Themer, useTheme } from '../../../../../core/theme';
7
6
  import { useAppLocalizations } from '../../../../../l10n/localizations';
8
7
  import { DateFormat } from '../../../../../shared/utils/date_format';
9
- import { CustomTextInput } from '../../../../../shared/widgets/input_text';
10
8
  import { plageText, showSelectDate, showSelectDateRange } from '../../../../../shared/widgets/select_date_widget';
9
+ import { SelectionPastille, SelectionChamp } from '../../../../../shared/widgets/selection';
11
10
  import type { Transaction } from '../../../domain/models/transaction';
12
11
  import type { TransactionSendCommand } from '../../../domain/models/transaction_send/transaction_send_command';
13
12
  import { TransactionSendCommandScheduleError } from '../../../domain/models/transaction_send/transaction_send_command_schedule';
14
13
  import { TransactionSendBloc } from '../../bloc/transaction_send/transaction_send_bloc';
15
14
  import { TransactionSendScheduleEvent } from '../../bloc/transaction_send/transaction_send_event';
16
15
 
17
- /** Date (une fois) ou plage de dates (fréquence) de la programmation, à partir de demain. */
16
+ /**
17
+ * Date (une fois) ou plage de dates (fréquence) de la programmation, à
18
+ * partir de demain : carte qui ouvre le calendrier.
19
+ */
18
20
  export function TransactionSendFormInputDate({
19
21
  command,
20
22
  transaction,
@@ -32,7 +34,7 @@ export function TransactionSendFormInputDate({
32
34
  const schedule = command.schedule!;
33
35
  const withFrequence = schedule.frequence?.value != null;
34
36
 
35
- let text = '';
37
+ let text: string | null = null;
36
38
  if (schedule.dateDebut != null) {
37
39
  text = withFrequence ? plageText(traductions, formatter, schedule.dateDebut, schedule.dateFin) : formatter.format(schedule.dateDebut);
38
40
  }
@@ -68,17 +70,24 @@ export function TransactionSendFormInputDate({
68
70
  bloc.add(new TransactionSendScheduleEvent(command, transaction));
69
71
  };
70
72
 
73
+ const erreur = schedule.error === TransactionSendCommandScheduleError.debutEmpty ? traductions.aliasFormEmpty : '';
74
+
71
75
  return (
72
- <Pressable onPress={() => void select()}>
73
- <View pointerEvents="none">
74
- <CustomTextInput
75
- labelText={withFrequence ? traductions.transactionFormScheduleDateRangeLabel : traductions.transactionFormScheduleDateLabel}
76
- value={text}
77
- readOnly
78
- suffixIcon={<MaterialIcons name="date-range" size={24} color={theme.colorScheme.onSurface} />}
79
- messageError={schedule.error === TransactionSendCommandScheduleError.debutEmpty ? traductions.aliasFormEmpty : ''}
80
- />
81
- </View>
82
- </Pressable>
76
+ <View>
77
+ <SelectionChamp
78
+ libelle={withFrequence ? traductions.transactionFormScheduleDateRangeLabel : traductions.transactionFormScheduleDateLabel}
79
+ valeur={text}
80
+ pastille={<SelectionPastille icone={withFrequence ? 'date-range' : 'event'} />}
81
+ onPress={() => void select()}
82
+ />
83
+ {/* Message d'erreur */}
84
+ {erreur.length > 0 && (
85
+ <Text style={[theme.textTheme.displaySmall, styles.erreur, { color: Themer.systemErrorColor }]}>{erreur}</Text>
86
+ )}
87
+ </View>
83
88
  );
84
89
  }
90
+
91
+ const styles = StyleSheet.create({
92
+ erreur: { paddingHorizontal: 16, paddingTop: 4 },
93
+ });