@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.
- package/lib/module/core/api.js +14 -5
- package/lib/module/core/api.js.map +1 -1
- package/lib/module/l10n/app_localizations.js.map +1 -1
- package/lib/module/l10n/app_localizations_en.js +40 -8
- package/lib/module/l10n/app_localizations_en.js.map +1 -1
- package/lib/module/l10n/app_localizations_fr.js +49 -14
- package/lib/module/l10n/app_localizations_fr.js.map +1 -1
- package/lib/module/l10n/app_localizations_pt.js +41 -7
- package/lib/module/l10n/app_localizations_pt.js.map +1 -1
- package/lib/module/modules/alias/domain/models/alias_revendication.js +4 -2
- package/lib/module/modules/alias/domain/models/alias_revendication.js.map +1 -1
- package/lib/module/modules/alias/infra/alias_output_local.js +11 -0
- package/lib/module/modules/alias/infra/alias_output_local.js.map +1 -1
- package/lib/module/modules/alias/infra/alias_output_repository.js +9 -8
- package/lib/module/modules/alias/infra/alias_output_repository.js.map +1 -1
- package/lib/module/modules/alias/presentation/pages/alias_delete_btn_widget.js +14 -18
- package/lib/module/modules/alias/presentation/pages/alias_delete_btn_widget.js.map +1 -1
- package/lib/module/modules/alias/presentation/pages/alias_page_claim.js +113 -60
- package/lib/module/modules/alias/presentation/pages/alias_page_claim.js.map +1 -1
- package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_form.js +151 -76
- package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_form.js.map +1 -1
- package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_timer.js +38 -24
- package/lib/module/modules/alias/presentation/pages/alias_page_create_mbno_timer.js.map +1 -1
- package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js +28 -26
- package/lib/module/modules/alias/presentation/pages/alias_page_create_options.js.map +1 -1
- package/lib/module/modules/alias/presentation/pages/alias_page_otp.js +27 -110
- package/lib/module/modules/alias/presentation/pages/alias_page_otp.js.map +1 -1
- package/lib/module/modules/categorie/domain/services/categorie_service.js +2 -1
- package/lib/module/modules/categorie/domain/services/categorie_service.js.map +1 -1
- package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js +58 -72
- package/lib/module/modules/categorie/presentation/pages/categorie_edit_icon_btn.js.map +1 -1
- package/lib/module/modules/categorie/presentation/pages/categorie_form_pages.js +88 -80
- package/lib/module/modules/categorie/presentation/pages/categorie_form_pages.js.map +1 -1
- package/lib/module/modules/categorie/presentation/pages/categorie_icon.js +39 -0
- package/lib/module/modules/categorie/presentation/pages/categorie_icon.js.map +1 -1
- package/lib/module/modules/categorie/presentation/pages/categorie_liste_widget.js +55 -27
- package/lib/module/modules/categorie/presentation/pages/categorie_liste_widget.js.map +1 -1
- package/lib/module/modules/categorie/presentation/pages/categorie_select_page.js +21 -81
- package/lib/module/modules/categorie/presentation/pages/categorie_select_page.js.map +1 -1
- package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js +53 -16
- package/lib/module/modules/categorie/presentation/pages/categorie_select_widget.js.map +1 -1
- package/lib/module/modules/config/domain/models/config_keys.js +2 -0
- package/lib/module/modules/config/domain/models/config_keys.js.map +1 -1
- package/lib/module/modules/contacts/domain/contact_pi.js +3 -5
- package/lib/module/modules/contacts/domain/contact_pi.js.map +1 -1
- package/lib/module/modules/contacts/presentation/bloc/contact_bloc.js +30 -14
- package/lib/module/modules/contacts/presentation/bloc/contact_bloc.js.map +1 -1
- package/lib/module/modules/contacts/presentation/pages/contact_actions_sheet.js +106 -0
- package/lib/module/modules/contacts/presentation/pages/contact_actions_sheet.js.map +1 -0
- package/lib/module/modules/contacts/presentation/pages/contact_list_alias_widget.js +17 -7
- package/lib/module/modules/contacts/presentation/pages/contact_list_alias_widget.js.map +1 -1
- package/lib/module/modules/contacts/presentation/pages/contact_list_phone_widget.js +5 -4
- package/lib/module/modules/contacts/presentation/pages/contact_list_phone_widget.js.map +1 -1
- package/lib/module/modules/contacts/presentation/pages/contact_list_widget_item.js +76 -67
- package/lib/module/modules/contacts/presentation/pages/contact_list_widget_item.js.map +1 -1
- package/lib/module/modules/contacts/presentation/pages/contact_section.js +14 -4
- package/lib/module/modules/contacts/presentation/pages/contact_section.js.map +1 -1
- package/lib/module/modules/contacts/presentation/pages/contact_select_page.js +131 -110
- package/lib/module/modules/contacts/presentation/pages/contact_select_page.js.map +1 -1
- package/lib/module/modules/contacts/presentation/pages/create/contact_create_page.js +118 -59
- package/lib/module/modules/contacts/presentation/pages/create/contact_create_page.js.map +1 -1
- package/lib/module/modules/home/presentation/pages/home_page.js +3 -13
- package/lib/module/modules/home/presentation/pages/home_page.js.map +1 -1
- package/lib/module/modules/introduction/presentation/pages/introduction.js +17 -4
- package/lib/module/modules/introduction/presentation/pages/introduction.js.map +1 -1
- package/lib/module/modules/introduction/presentation/pages/introduction_footer.js +15 -53
- package/lib/module/modules/introduction/presentation/pages/introduction_footer.js.map +1 -1
- package/lib/module/modules/introduction/presentation/pages/introduction_page.js +22 -4
- package/lib/module/modules/introduction/presentation/pages/introduction_page.js.map +1 -1
- package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js +2 -2
- package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.js.map +1 -1
- package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.js +1 -1
- package/lib/module/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.js.map +1 -1
- package/lib/module/modules/profile/presentation/pages/profile_page_avatar.js +6 -28
- package/lib/module/modules/profile/presentation/pages/profile_page_avatar.js.map +1 -1
- package/lib/module/modules/profile/presentation/pages/profile_page_contacts.js +14 -53
- package/lib/module/modules/profile/presentation/pages/profile_page_contacts.js.map +1 -1
- package/lib/module/modules/profile/presentation/pages/profile_page_contacts_actions.js +131 -161
- package/lib/module/modules/profile/presentation/pages/profile_page_contacts_actions.js.map +1 -1
- package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page.js +0 -1
- package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page.js.map +1 -1
- package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js +26 -38
- package/lib/module/modules/qrcode/presentation/pages/qrcode_alias_page_share.js.map +1 -1
- package/lib/module/modules/search/domain/models/fonctionnalite.js +51 -0
- package/lib/module/modules/search/domain/models/fonctionnalite.js.map +1 -1
- package/lib/module/modules/search/presentation/pages/search_btn_widget.js +136 -0
- package/lib/module/modules/search/presentation/pages/search_btn_widget.js.map +1 -0
- package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js +21 -1
- package/lib/module/modules/search/presentation/pages/search_fonctionnalites.js.map +1 -1
- package/lib/module/modules/search/presentation/pages/search_page.js +266 -97
- package/lib/module/modules/search/presentation/pages/search_page.js.map +1 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page.js +5 -3
- package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page.js.map +1 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.js +5 -6
- package/lib/module/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.js.map +1 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page.js +0 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page.js.map +1 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.js +0 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.js.map +1 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.js +38 -93
- package/lib/module/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.js.map +1 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.js +0 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.js.map +1 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.js +0 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.js.map +1 -1
- package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js +23 -42
- package/lib/module/modules/subscription/presentation/pages/subscription_menu_widget.js.map +1 -1
- package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.js +1 -2
- package/lib/module/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.js.map +1 -1
- package/lib/module/modules/transactions/infra/transaction_output_remote.js +2 -1
- package/lib/module/modules/transactions/infra/transaction_output_remote.js.map +1 -1
- package/lib/module/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.js +17 -0
- package/lib/module/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.js +0 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.js +34 -61
- package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.js +49 -62
- package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.js +68 -88
- package/lib/module/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.js +30 -23
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.js +77 -0
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.js.map +1 -0
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.js +49 -155
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page.js +16 -4
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.js +11 -9
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.js +17 -35
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.js +8 -10
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.js +127 -106
- package/lib/module/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.js +50 -42
- package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.js +0 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.js +0 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.js +37 -67
- package/lib/module/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page.js +9 -15
- package/lib/module/modules/transactions/presentation/pages/transaction_search/transaction_search_page.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.js +5 -11
- package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.js.map +1 -1
- package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.js +9 -9
- package/lib/module/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.js.map +1 -1
- package/lib/module/shared/widgets/alias_widget.js +33 -12
- package/lib/module/shared/widgets/alias_widget.js.map +1 -1
- package/lib/module/shared/widgets/auth_code_field.js +89 -0
- package/lib/module/shared/widgets/auth_code_field.js.map +1 -0
- package/lib/module/shared/widgets/calendar_date_picker.js +21 -16
- package/lib/module/shared/widgets/calendar_date_picker.js.map +1 -1
- package/lib/module/shared/widgets/confirm_action_sheet_widget.js +53 -67
- package/lib/module/shared/widgets/confirm_action_sheet_widget.js.map +1 -1
- package/lib/module/shared/widgets/emoji_select_widget.js +34 -39
- package/lib/module/shared/widgets/emoji_select_widget.js.map +1 -1
- package/lib/module/shared/widgets/frequence_input_widget.js +18 -29
- package/lib/module/shared/widgets/frequence_input_widget.js.map +1 -1
- package/lib/module/shared/widgets/frequence_select_widget.js +233 -140
- package/lib/module/shared/widgets/frequence_select_widget.js.map +1 -1
- package/lib/module/shared/widgets/image_select_widget.js +43 -107
- package/lib/module/shared/widgets/image_select_widget.js.map +1 -1
- package/lib/module/shared/widgets/input_text.js +1 -1
- package/lib/module/shared/widgets/input_text.js.map +1 -1
- package/lib/module/shared/widgets/notification_dialog.js +28 -37
- package/lib/module/shared/widgets/notification_dialog.js.map +1 -1
- package/lib/module/shared/widgets/pin_entete.js +114 -0
- package/lib/module/shared/widgets/pin_entete.js.map +1 -0
- package/lib/module/shared/widgets/select_date_widget.js +74 -59
- package/lib/module/shared/widgets/select_date_widget.js.map +1 -1
- package/lib/module/shared/widgets/selection.js +387 -6
- package/lib/module/shared/widgets/selection.js.map +1 -1
- package/lib/typescript/src/core/api.d.ts +6 -0
- package/lib/typescript/src/core/api.d.ts.map +1 -1
- package/lib/typescript/src/l10n/app_localizations.d.ts +75 -11
- package/lib/typescript/src/l10n/app_localizations.d.ts.map +1 -1
- package/lib/typescript/src/l10n/app_localizations_en.d.ts.map +1 -1
- package/lib/typescript/src/l10n/app_localizations_fr.d.ts.map +1 -1
- package/lib/typescript/src/l10n/app_localizations_pt.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/domain/models/alias_revendication.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/infra/alias_output_local.d.ts +5 -0
- package/lib/typescript/src/modules/alias/infra/alias_output_local.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/infra/alias_output_repository.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/presentation/pages/alias_delete_btn_widget.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/presentation/pages/alias_page_claim.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_form.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.d.ts +1 -1
- package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_options.d.ts +4 -1
- package/lib/typescript/src/modules/alias/presentation/pages/alias_page_create_options.d.ts.map +1 -1
- package/lib/typescript/src/modules/alias/presentation/pages/alias_page_otp.d.ts +9 -5
- package/lib/typescript/src/modules/alias/presentation/pages/alias_page_otp.d.ts.map +1 -1
- package/lib/typescript/src/modules/categorie/domain/services/categorie_service.d.ts.map +1 -1
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.d.ts +3 -0
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.d.ts.map +1 -1
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_form_pages.d.ts.map +1 -1
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_icon.d.ts +9 -0
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_icon.d.ts.map +1 -1
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_liste_widget.d.ts +7 -2
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_liste_widget.d.ts.map +1 -1
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts +10 -2
- package/lib/typescript/src/modules/categorie/presentation/pages/categorie_select_widget.d.ts.map +1 -1
- package/lib/typescript/src/modules/config/domain/models/config_keys.d.ts +3 -1
- package/lib/typescript/src/modules/config/domain/models/config_keys.d.ts.map +1 -1
- package/lib/typescript/src/modules/contacts/domain/contact_pi.d.ts +0 -2
- package/lib/typescript/src/modules/contacts/domain/contact_pi.d.ts.map +1 -1
- package/lib/typescript/src/modules/contacts/presentation/bloc/contact_bloc.d.ts +7 -0
- package/lib/typescript/src/modules/contacts/presentation/bloc/contact_bloc.d.ts.map +1 -1
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_actions_sheet.d.ts +14 -0
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_actions_sheet.d.ts.map +1 -0
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_alias_widget.d.ts +4 -2
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_alias_widget.d.ts.map +1 -1
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_phone_widget.d.ts.map +1 -1
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_widget_item.d.ts +6 -4
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_list_widget_item.d.ts.map +1 -1
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_section.d.ts +3 -1
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_section.d.ts.map +1 -1
- package/lib/typescript/src/modules/contacts/presentation/pages/contact_select_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/contacts/presentation/pages/create/contact_create_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/home/presentation/pages/home_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/introduction/presentation/pages/introduction.d.ts.map +1 -1
- package/lib/typescript/src/modules/introduction/presentation/pages/introduction_footer.d.ts +5 -1
- package/lib/typescript/src/modules/introduction/presentation/pages/introduction_footer.d.ts.map +1 -1
- package/lib/typescript/src/modules/introduction/presentation/pages/introduction_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/profile/presentation/pages/profile_page_avatar.d.ts.map +1 -1
- package/lib/typescript/src/modules/profile/presentation/pages/profile_page_contacts.d.ts.map +1 -1
- package/lib/typescript/src/modules/profile/presentation/pages/profile_page_contacts_actions.d.ts.map +1 -1
- package/lib/typescript/src/modules/qrcode/presentation/pages/qrcode_alias_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.d.ts.map +1 -1
- package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts +20 -0
- package/lib/typescript/src/modules/search/domain/models/fonctionnalite.d.ts.map +1 -1
- package/lib/typescript/src/modules/search/presentation/pages/search_btn_widget.d.ts +11 -0
- package/lib/typescript/src/modules/search/presentation/pages/search_btn_widget.d.ts.map +1 -0
- package/lib/typescript/src/modules/search/presentation/pages/search_fonctionnalites.d.ts.map +1 -1
- package/lib/typescript/src/modules/search/presentation/pages/search_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.d.ts.map +1 -1
- package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.d.ts +2 -2
- package/lib/typescript/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.d.ts.map +1 -1
- package/lib/typescript/src/modules/subscription/presentation/pages/subscription_menu_widget.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/infra/transaction_output_remote.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.d.ts +4 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.d.ts +17 -0
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.d.ts.map +1 -0
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.d.ts +6 -2
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.d.ts +4 -0
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.d.ts.map +1 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/alias_widget.d.ts +2 -2
- package/lib/typescript/src/shared/widgets/alias_widget.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/auth_code_field.d.ts +17 -0
- package/lib/typescript/src/shared/widgets/auth_code_field.d.ts.map +1 -0
- package/lib/typescript/src/shared/widgets/calendar_date_picker.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/confirm_action_sheet_widget.d.ts +16 -2
- package/lib/typescript/src/shared/widgets/confirm_action_sheet_widget.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/emoji_select_widget.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/frequence_input_widget.d.ts +6 -3
- package/lib/typescript/src/shared/widgets/frequence_input_widget.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/frequence_select_widget.d.ts +23 -5
- package/lib/typescript/src/shared/widgets/frequence_select_widget.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/image_select_widget.d.ts +6 -4
- package/lib/typescript/src/shared/widgets/image_select_widget.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/input_text.d.ts +2 -0
- package/lib/typescript/src/shared/widgets/input_text.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/notification_dialog.d.ts +5 -3
- package/lib/typescript/src/shared/widgets/notification_dialog.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/pin_entete.d.ts +15 -0
- package/lib/typescript/src/shared/widgets/pin_entete.d.ts.map +1 -0
- package/lib/typescript/src/shared/widgets/select_date_widget.d.ts +4 -0
- package/lib/typescript/src/shared/widgets/select_date_widget.d.ts.map +1 -1
- package/lib/typescript/src/shared/widgets/selection.d.ts +74 -3
- package/lib/typescript/src/shared/widgets/selection.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/api.ts +11 -2
- package/src/l10n/app_localizations.ts +75 -11
- package/src/l10n/app_localizations_en.ts +40 -8
- package/src/l10n/app_localizations_fr.ts +46 -14
- package/src/l10n/app_localizations_pt.ts +39 -7
- package/src/modules/alias/domain/models/alias_revendication.ts +4 -2
- package/src/modules/alias/infra/alias_output_local.ts +11 -0
- package/src/modules/alias/infra/alias_output_repository.ts +9 -8
- package/src/modules/alias/presentation/pages/alias_delete_btn_widget.tsx +17 -24
- package/src/modules/alias/presentation/pages/alias_page_claim.tsx +76 -48
- package/src/modules/alias/presentation/pages/alias_page_create_mbno_form.tsx +113 -65
- package/src/modules/alias/presentation/pages/alias_page_create_mbno_timer.tsx +34 -25
- package/src/modules/alias/presentation/pages/alias_page_create_options.tsx +29 -36
- package/src/modules/alias/presentation/pages/alias_page_otp.tsx +24 -88
- package/src/modules/categorie/domain/services/categorie_service.ts +2 -1
- package/src/modules/categorie/presentation/pages/categorie_edit_icon_btn.tsx +58 -50
- package/src/modules/categorie/presentation/pages/categorie_form_pages.tsx +71 -41
- package/src/modules/categorie/presentation/pages/categorie_icon.tsx +26 -0
- package/src/modules/categorie/presentation/pages/categorie_liste_widget.tsx +45 -24
- package/src/modules/categorie/presentation/pages/categorie_select_page.tsx +10 -46
- package/src/modules/categorie/presentation/pages/categorie_select_widget.tsx +54 -13
- package/src/modules/config/domain/models/config_keys.ts +3 -0
- package/src/modules/contacts/domain/contact_pi.ts +3 -6
- package/src/modules/contacts/presentation/bloc/contact_bloc.ts +37 -20
- package/src/modules/contacts/presentation/pages/contact_actions_sheet.tsx +69 -0
- package/src/modules/contacts/presentation/pages/contact_list_alias_widget.tsx +26 -4
- package/src/modules/contacts/presentation/pages/contact_list_phone_widget.tsx +3 -0
- package/src/modules/contacts/presentation/pages/contact_list_widget_item.tsx +54 -65
- package/src/modules/contacts/presentation/pages/contact_section.tsx +13 -3
- package/src/modules/contacts/presentation/pages/contact_select_page.tsx +106 -74
- package/src/modules/contacts/presentation/pages/create/contact_create_page.tsx +86 -47
- package/src/modules/home/presentation/pages/home_page.tsx +2 -9
- package/src/modules/introduction/presentation/pages/introduction.tsx +8 -0
- package/src/modules/introduction/presentation/pages/introduction_footer.tsx +16 -36
- package/src/modules/introduction/presentation/pages/introduction_page.tsx +17 -5
- package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications.tsx +2 -2
- package/src/modules/profile/presentation/pages/parametre/profile_parametre_page_notifications_son.tsx +1 -1
- package/src/modules/profile/presentation/pages/profile_page_avatar.tsx +6 -12
- package/src/modules/profile/presentation/pages/profile_page_contacts.tsx +12 -20
- package/src/modules/profile/presentation/pages/profile_page_contacts_actions.tsx +120 -117
- package/src/modules/qrcode/presentation/pages/qrcode_alias_page.tsx +0 -1
- package/src/modules/qrcode/presentation/pages/qrcode_alias_page_share.tsx +32 -40
- package/src/modules/search/domain/models/fonctionnalite.ts +56 -0
- package/src/modules/search/presentation/pages/search_btn_widget.tsx +91 -0
- package/src/modules/search/presentation/pages/search_fonctionnalites.ts +21 -1
- package/src/modules/search/presentation/pages/search_page.tsx +166 -57
- package/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page.tsx +4 -2
- package/src/modules/subscription/presentation/pages/subscription_create/subscription_create_page_list.tsx +5 -5
- package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page.tsx +0 -1
- package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_actions.tsx +0 -1
- package/src/modules/subscription/presentation/pages/subscription_details/subscription_details_page_note_sheet.tsx +20 -59
- package/src/modules/subscription/presentation/pages/subscription_list/subscription_list_empty_widget.tsx +1 -1
- package/src/modules/subscription/presentation/pages/subscription_list/subscription_list_widget.tsx +1 -1
- package/src/modules/subscription/presentation/pages/subscription_menu_widget.tsx +25 -39
- package/src/modules/transactions/domain/models/transaction_send/transaction_send_command_othr.ts +1 -2
- package/src/modules/transactions/infra/transaction_output_remote.ts +6 -1
- package/src/modules/transactions/presentation/bloc/transaction_send/transaction_send_bloc.ts +17 -0
- package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions.tsx +0 -1
- package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_cancel.tsx +39 -41
- package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_actions_return.tsx +41 -46
- package/src/modules/transactions/presentation/pages/transaction_details/transaction_details_page_ticket.tsx +46 -40
- package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_date.tsx +26 -17
- package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_pays.tsx +92 -0
- package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_input_psp.tsx +48 -94
- package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page.tsx +20 -2
- package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_alias.tsx +6 -8
- package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_othr.tsx +9 -22
- package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_schedule.tsx +5 -7
- package/src/modules/transactions/presentation/pages/transaction_form/transaction_form_page_verification.tsx +112 -104
- package/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_nombre_widget.tsx +49 -42
- package/src/modules/transactions/presentation/pages/transaction_recents/transaction_recents_widget.tsx +1 -1
- package/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions.tsx +0 -1
- package/src/modules/transactions/presentation/pages/transaction_rtp/transaction_rtp_page_actions_reject.tsx +47 -48
- package/src/modules/transactions/presentation/pages/transaction_search/transaction_search_page.tsx +6 -10
- package/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_repartition.tsx +3 -6
- package/src/modules/transactions/presentation/pages/transaction_split/transaction_split_page_tx.tsx +5 -5
- package/src/shared/widgets/alias_widget.tsx +45 -18
- package/src/shared/widgets/auth_code_field.tsx +89 -0
- package/src/shared/widgets/calendar_date_picker.tsx +12 -11
- package/src/shared/widgets/confirm_action_sheet_widget.tsx +49 -35
- package/src/shared/widgets/emoji_select_widget.tsx +31 -29
- package/src/shared/widgets/frequence_input_widget.tsx +18 -24
- package/src/shared/widgets/frequence_select_widget.tsx +237 -117
- package/src/shared/widgets/image_select_widget.tsx +46 -61
- package/src/shared/widgets/input_text.tsx +3 -0
- package/src/shared/widgets/notification_dialog.tsx +70 -71
- package/src/shared/widgets/pin_entete.tsx +74 -0
- package/src/shared/widgets/select_date_widget.tsx +66 -34
- package/src/shared/widgets/selection.tsx +304 -5
- package/lib/module/modules/transactions/presentation/pages/transaction_details/sheet_box.js +0 -47
- package/lib/module/modules/transactions/presentation/pages/transaction_details/sheet_box.js.map +0 -1
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/sheet_box.d.ts +0 -10
- package/lib/typescript/src/modules/transactions/presentation/pages/transaction_details/sheet_box.d.ts.map +0 -1
- package/src/modules/transactions/presentation/pages/transaction_details/sheet_box.tsx +0 -30
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
import { Image } from 'expo-image';
|
|
2
2
|
import { useRef } from 'react';
|
|
3
|
-
import { Pressable, ScrollView, StyleSheet,
|
|
4
|
-
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
3
|
+
import { Pressable, ScrollView, StyleSheet, View } from 'react-native';
|
|
5
4
|
|
|
6
5
|
import { Images } from '../../../../core/assets';
|
|
7
6
|
import { useBloc } from '../../../../core/bloc_react';
|
|
8
|
-
import { AppRouter, useAppRouter } from '../../../../core/router';
|
|
7
|
+
import { AppRouter, useAppRouter, type SdkRouter } from '../../../../core/router';
|
|
9
8
|
import { useTheme } from '../../../../core/theme';
|
|
10
9
|
import { useAppLocalizations } from '../../../../l10n/localizations';
|
|
11
10
|
import { ElevatedButton } from '../../../../shared/material/buttons';
|
|
12
|
-
import { Card } from '../../../../shared/material/card';
|
|
13
11
|
import { showModalBottomSheet } from '../../../../shared/material/overlays';
|
|
14
12
|
import { EmojiSelectWidget } from '../../../../shared/widgets/emoji_select_widget';
|
|
15
|
-
import {
|
|
13
|
+
import { SelectionOption, SelectionBoutons, SelectionSheet } from '../../../../shared/widgets/selection';
|
|
16
14
|
import { CategorieIconType } from '../../domain/models/categorie';
|
|
17
15
|
import { CategorieBloc } from '../bloc/categorie_bloc';
|
|
18
16
|
import { CategorieAddValidationEvent, CategorieEditValidationEvent } from '../bloc/categorie_event';
|
|
19
17
|
import { CategorieCreationState, CategorieEditState } from '../bloc/categorie_state';
|
|
20
18
|
|
|
19
|
+
/** Ouvre la feuille de choix de l'icône d'une catégorie (emoji ou galerie). */
|
|
20
|
+
export function ouvrirIconeCategorie(router: SdkRouter) {
|
|
21
|
+
void showModalBottomSheet(router, { builder: () => <CategorieEditIconOptions /> });
|
|
22
|
+
}
|
|
23
|
+
|
|
21
24
|
/** Bouton d'édition de l'icône d'une catégorie (création ou modification). */
|
|
22
25
|
export function CategorieEditIconBtn() {
|
|
23
26
|
const theme = useTheme();
|
|
@@ -25,7 +28,7 @@ export function CategorieEditIconBtn() {
|
|
|
25
28
|
return (
|
|
26
29
|
<Pressable
|
|
27
30
|
accessibilityRole="button"
|
|
28
|
-
onPress={() =>
|
|
31
|
+
onPress={() => ouvrirIconeCategorie(router)}
|
|
29
32
|
style={[styles.fab, { backgroundColor: theme.colorScheme.surface }]}
|
|
30
33
|
>
|
|
31
34
|
<Image source={Images.categorieImageSelect} style={styles.fabIcon} />
|
|
@@ -33,13 +36,10 @@ export function CategorieEditIconBtn() {
|
|
|
33
36
|
);
|
|
34
37
|
}
|
|
35
38
|
|
|
36
|
-
/** Feuille des options d'icône : emoji (ou galerie, non disponible, comme en Flutter) */
|
|
39
|
+
/** Feuille des options d'icône : emoji (ou galerie, non disponible, comme en Flutter). */
|
|
37
40
|
function CategorieEditIconOptions() {
|
|
38
41
|
const traductions = useAppLocalizations();
|
|
39
|
-
const theme = useTheme();
|
|
40
42
|
const router = useAppRouter();
|
|
41
|
-
const insets = useSafeAreaInsets();
|
|
42
|
-
const { height } = useWindowDimensions();
|
|
43
43
|
const categorieBloc = useBloc(CategorieBloc);
|
|
44
44
|
|
|
45
45
|
const selectEmoji = async () => {
|
|
@@ -48,9 +48,9 @@ function CategorieEditIconOptions() {
|
|
|
48
48
|
const edit = state instanceof CategorieEditState ? state : null;
|
|
49
49
|
const command = creation?.command ?? edit?.command;
|
|
50
50
|
if (!command) return;
|
|
51
|
+
// Nouvelle catégorie : pas encore d'icône ni de couleur
|
|
51
52
|
const value = await showModalBottomSheet<{ emoji: string; color: number }>(router, {
|
|
52
|
-
|
|
53
|
-
builder: () => <CategorieEditIconEmoji icon={command.icon!} color={command.color!} />,
|
|
53
|
+
builder: () => <CategorieEditIconEmoji icon={command.icon ?? '🤩'} color={command.color ?? 0xfff9ebc2} />,
|
|
54
54
|
});
|
|
55
55
|
if (value == null) return;
|
|
56
56
|
command.iconType = CategorieIconType.emoji;
|
|
@@ -63,58 +63,66 @@ function CategorieEditIconOptions() {
|
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
return (
|
|
66
|
-
<
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
<
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}),
|
|
76
|
-
// Choisir dans la galerie (sans action, comme dans le SDK Flutter)
|
|
77
|
-
new MenuActionItem(Images.categorieImageSelect, traductions.categorieFormIconSheetGalleryTitle, null, () => undefined, {
|
|
78
|
-
iconSize: 20,
|
|
79
|
-
}),
|
|
80
|
-
]}
|
|
66
|
+
<SelectionSheet
|
|
67
|
+
titre={traductions.categorieFormIconSheetTitle}
|
|
68
|
+
contenu={
|
|
69
|
+
<ScrollView bounces={false} contentContainerStyle={styles.optionsContent}>
|
|
70
|
+
{/* Emoji */}
|
|
71
|
+
<SelectionOption
|
|
72
|
+
image={Images.categorieIconEmoji}
|
|
73
|
+
titre={traductions.categorieFormIconSheetEmojiTitle}
|
|
74
|
+
onPress={() => void selectEmoji()}
|
|
81
75
|
/>
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
76
|
+
<View style={styles.gap10} />
|
|
77
|
+
{/* Choisir dans la galerie (sans action, comme dans le SDK Flutter) */}
|
|
78
|
+
<SelectionOption
|
|
79
|
+
image={Images.categorieImageSelect}
|
|
80
|
+
titre={traductions.categorieFormIconSheetGalleryTitle}
|
|
81
|
+
onPress={() => undefined}
|
|
82
|
+
/>
|
|
83
|
+
</ScrollView>
|
|
84
|
+
}
|
|
85
|
+
/>
|
|
85
86
|
);
|
|
86
87
|
}
|
|
87
88
|
|
|
88
|
-
/** Feuille de choix de l'emoji et de la couleur ; retourne `{ emoji, color }
|
|
89
|
+
/** Feuille de choix de l'emoji et de la couleur ; retourne `{ emoji, color }` à l'enregistrement. */
|
|
89
90
|
function CategorieEditIconEmoji({ icon, color }: { icon: string; color: number }) {
|
|
90
91
|
const traductions = useAppLocalizations();
|
|
91
|
-
const theme = useTheme();
|
|
92
92
|
const router = useAppRouter();
|
|
93
|
-
const insets = useSafeAreaInsets();
|
|
94
|
-
const { height } = useWindowDimensions();
|
|
95
93
|
const selection = useRef<{ icon: string; color: number }>({ icon, color });
|
|
96
94
|
|
|
97
95
|
return (
|
|
98
|
-
<
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
{
|
|
106
|
-
</
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
96
|
+
<SelectionSheet
|
|
97
|
+
titre={traductions.categorieFormIconSheetEmojiTitle}
|
|
98
|
+
hauteurMax={0.9}
|
|
99
|
+
contenu={
|
|
100
|
+
<>
|
|
101
|
+
<ScrollView bounces={false} style={styles.flexShrink} contentContainerStyle={styles.sheetContent}>
|
|
102
|
+
{/* Emoji et couleur */}
|
|
103
|
+
<EmojiSelectWidget icon={icon} color={color} onChanged={(value) => (selection.current = value)} />
|
|
104
|
+
</ScrollView>
|
|
105
|
+
<SelectionBoutons
|
|
106
|
+
boutons={[
|
|
107
|
+
<ElevatedButton
|
|
108
|
+
key="enregistrer"
|
|
109
|
+
onPress={() => AppRouter.pop(router, { value: { emoji: selection.current.icon, color: selection.current.color } })}
|
|
110
|
+
>
|
|
111
|
+
{traductions.categorieFormSaveBtn}
|
|
112
|
+
</ElevatedButton>,
|
|
113
|
+
]}
|
|
114
|
+
/>
|
|
115
|
+
</>
|
|
116
|
+
}
|
|
117
|
+
/>
|
|
110
118
|
);
|
|
111
119
|
}
|
|
112
120
|
|
|
113
121
|
const styles = StyleSheet.create({
|
|
114
122
|
fab: { width: 40, height: 40, borderRadius: 12, alignItems: 'center', justifyContent: 'center' },
|
|
115
123
|
fabIcon: { width: 24, height: 24 },
|
|
116
|
-
|
|
117
|
-
sheetContent: {
|
|
118
|
-
|
|
119
|
-
|
|
124
|
+
flexShrink: { flexShrink: 1 },
|
|
125
|
+
sheetContent: { paddingHorizontal: 20, paddingTop: 4, paddingBottom: 12 },
|
|
126
|
+
optionsContent: { paddingHorizontal: 20, paddingTop: 8, paddingBottom: 16 },
|
|
127
|
+
gap10: { height: 10 },
|
|
120
128
|
});
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { MaterialIcons } from '@expo/vector-icons';
|
|
2
|
-
import { Image } from 'expo-image';
|
|
3
2
|
import type { ReactNode } from 'react';
|
|
4
3
|
import { Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';
|
|
5
4
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
6
5
|
|
|
7
|
-
import { Images } from '../../../../core/assets';
|
|
8
6
|
import { useBloc, useBlocBuilder, useBlocListener } from '../../../../core/bloc_react';
|
|
9
7
|
import { AppRouter, useAppRouter } from '../../../../core/router';
|
|
10
8
|
import { useTheme } from '../../../../core/theme';
|
|
11
9
|
import { useAppLocalizations } from '../../../../l10n/localizations';
|
|
12
10
|
import { ElevatedButton } from '../../../../shared/material/buttons';
|
|
13
11
|
import { CustomTextInput } from '../../../../shared/widgets/input_text';
|
|
12
|
+
import { SelectionBoutons } from '../../../../shared/widgets/selection';
|
|
14
13
|
import { Categorie } from '../../domain/models/categorie';
|
|
15
14
|
import { CategorieCreateCommandError, CategorieUpdateCommandError } from '../../domain/models/categorie_commands';
|
|
16
15
|
import { argbToCss } from '../../domain/models/categorie_icons';
|
|
@@ -23,26 +22,38 @@ import {
|
|
|
23
22
|
CategorieUpdateEvent,
|
|
24
23
|
} from '../bloc/categorie_event';
|
|
25
24
|
import { CategorieCreationState, CategorieEditState, CategorieInitialState } from '../bloc/categorie_state';
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
25
|
+
import { ouvrirIconeCategorie } from './categorie_edit_icon_btn';
|
|
26
|
+
import { CategoriePastille } from './categorie_icon';
|
|
28
27
|
|
|
29
|
-
/**
|
|
28
|
+
/** Couleur ARGB d'une catégorie avec l'opacité [alpha] (0 à 1), en CSS. */
|
|
29
|
+
function argbAvecAlpha(argb: number | null | undefined, alpha: number): string | undefined {
|
|
30
|
+
const rgb = (argb ?? 0xfff9ebc2) & 0xffffff;
|
|
31
|
+
return argbToCss(((Math.round(alpha * 255) << 24) | rgb) >>> 0);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Squelette commun : aperçu de l'icône (toucher pour la changer), titre,
|
|
36
|
+
* formulaire, puis bouton fixé en bas.
|
|
37
|
+
*/
|
|
30
38
|
function CategorieFormLayout({
|
|
31
|
-
|
|
39
|
+
icon,
|
|
40
|
+
couleur,
|
|
32
41
|
title,
|
|
33
42
|
form,
|
|
34
43
|
button,
|
|
35
44
|
}: {
|
|
36
|
-
|
|
45
|
+
icon?: string | null;
|
|
46
|
+
couleur?: number | null;
|
|
37
47
|
title: string;
|
|
38
48
|
form: ReactNode;
|
|
39
49
|
button: ReactNode;
|
|
40
50
|
}) {
|
|
41
51
|
const theme = useTheme();
|
|
52
|
+
const router = useAppRouter();
|
|
42
53
|
const insets = useSafeAreaInsets();
|
|
43
54
|
const categorieBloc = useBloc(CategorieBloc);
|
|
44
55
|
return (
|
|
45
|
-
<View style={[styles.flex, {
|
|
56
|
+
<View style={[styles.flex, { paddingBottom: insets.bottom }]}>
|
|
46
57
|
<View style={styles.backRow}>
|
|
47
58
|
<Pressable
|
|
48
59
|
accessibilityRole="button"
|
|
@@ -53,23 +64,22 @@ function CategorieFormLayout({
|
|
|
53
64
|
<MaterialIcons name="arrow-back" size={24} color={theme.colorScheme.onSurface} />
|
|
54
65
|
</Pressable>
|
|
55
66
|
</View>
|
|
56
|
-
{
|
|
57
|
-
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
</
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
<ScrollView style={styles.flex} contentContainerStyle={styles.form}>
|
|
68
|
+
{/* Aperçu de l'icône, toucher pour la changer */}
|
|
69
|
+
<Pressable accessibilityRole="button" onPress={() => ouvrirIconeCategorie(router)} style={styles.apercu}>
|
|
70
|
+
<CategoriePastille icon={icon} bgColor={couleur} taille={112} />
|
|
71
|
+
{/* Badge modifier */}
|
|
72
|
+
<View style={[styles.badge, { backgroundColor: theme.colorScheme.primary, borderColor: theme.scaffoldBackgroundColor }]}>
|
|
73
|
+
<MaterialIcons name="edit" size={16} color={theme.colorScheme.onPrimary} />
|
|
74
|
+
</View>
|
|
75
|
+
</Pressable>
|
|
76
|
+
{/* Titre */}
|
|
77
|
+
<Text numberOfLines={1} style={[theme.textTheme.titleSmall, styles.titre]}>
|
|
78
|
+
{title}
|
|
79
|
+
</Text>
|
|
68
80
|
{form}
|
|
69
81
|
</ScrollView>
|
|
70
|
-
<
|
|
71
|
-
{button}
|
|
72
|
-
</View>
|
|
82
|
+
<SelectionBoutons boutons={[button]} />
|
|
73
83
|
</View>
|
|
74
84
|
);
|
|
75
85
|
}
|
|
@@ -89,7 +99,8 @@ export function CategorieAddPage() {
|
|
|
89
99
|
|
|
90
100
|
return (
|
|
91
101
|
<CategorieFormLayout
|
|
92
|
-
|
|
102
|
+
icon={command.icon}
|
|
103
|
+
couleur={command.color}
|
|
93
104
|
title={traductions.categorieCustomAdd}
|
|
94
105
|
form={
|
|
95
106
|
<>
|
|
@@ -122,9 +133,16 @@ export function CategorieAddPage() {
|
|
|
122
133
|
command.color = c.bgColor;
|
|
123
134
|
categorieBloc.add(new CategorieAddValidationEvent(command));
|
|
124
135
|
}}
|
|
125
|
-
style={[
|
|
136
|
+
style={[
|
|
137
|
+
styles.chip,
|
|
138
|
+
{
|
|
139
|
+
backgroundColor: argbAvecAlpha(c.bgColor, 0.18),
|
|
140
|
+
borderColor: argbAvecAlpha(c.bgColor, 0.6),
|
|
141
|
+
},
|
|
142
|
+
]}
|
|
126
143
|
>
|
|
127
|
-
<
|
|
144
|
+
<CategoriePastille icon={c.icon} bgColor={c.bgColor} taille={26} />
|
|
145
|
+
<Text style={[theme.textTheme.displayMedium, styles.chipTexte]}>{c.label}</Text>
|
|
128
146
|
</Pressable>
|
|
129
147
|
))}
|
|
130
148
|
</View>
|
|
@@ -132,6 +150,7 @@ export function CategorieAddPage() {
|
|
|
132
150
|
}
|
|
133
151
|
button={
|
|
134
152
|
<ElevatedButton
|
|
153
|
+
key="creer"
|
|
135
154
|
onPress={() => {
|
|
136
155
|
if (command.isValid()) categorieBloc.add(new CategorieCreateEvent(command));
|
|
137
156
|
}}
|
|
@@ -156,13 +175,7 @@ export function CategorieEditPage() {
|
|
|
156
175
|
const { categorie, command } = state;
|
|
157
176
|
|
|
158
177
|
return (
|
|
159
|
-
<CategorieFormLayout
|
|
160
|
-
header={
|
|
161
|
-
<View style={[styles.editIcon, { backgroundColor: argbToCss(command.color) }]}>
|
|
162
|
-
<CategorieIcon icon={command.icon!} size={96} emojiSize={64} />
|
|
163
|
-
</View>
|
|
164
|
-
}
|
|
165
|
-
title={categorie.label}
|
|
178
|
+
<CategorieFormLayout icon={command.icon} couleur={command.color} title={categorie.label}
|
|
166
179
|
form={
|
|
167
180
|
<View style={styles.input}>
|
|
168
181
|
<CustomTextInput
|
|
@@ -178,6 +191,7 @@ export function CategorieEditPage() {
|
|
|
178
191
|
}
|
|
179
192
|
button={
|
|
180
193
|
<ElevatedButton
|
|
194
|
+
key="enregistrer"
|
|
181
195
|
onPress={() => {
|
|
182
196
|
if (command.isValid()) categorieBloc.add(new CategorieUpdateEvent(command, categorie));
|
|
183
197
|
}}
|
|
@@ -193,14 +207,30 @@ const styles = StyleSheet.create({
|
|
|
193
207
|
flex: { flex: 1 },
|
|
194
208
|
backRow: { flexDirection: 'row' },
|
|
195
209
|
back: { padding: 12 },
|
|
196
|
-
header: { height: 200, paddingHorizontal: 20, paddingBottom: 20, justifyContent: 'space-between' },
|
|
197
|
-
center: { alignItems: 'center' },
|
|
198
|
-
titleRow: { flexDirection: 'row', alignItems: 'center' },
|
|
199
|
-
addIllustration: { width: 128, height: 110 },
|
|
200
|
-
editIcon: { borderRadius: 999, paddingVertical: 10, paddingHorizontal: 15, alignItems: 'center', justifyContent: 'center' },
|
|
201
210
|
form: { paddingHorizontal: 20, paddingBottom: 20 },
|
|
202
|
-
|
|
211
|
+
apercu: { alignSelf: 'center' },
|
|
212
|
+
badge: {
|
|
213
|
+
position: 'absolute',
|
|
214
|
+
right: 0,
|
|
215
|
+
bottom: 0,
|
|
216
|
+
width: 36,
|
|
217
|
+
height: 36,
|
|
218
|
+
borderRadius: 18,
|
|
219
|
+
borderWidth: 3,
|
|
220
|
+
alignItems: 'center',
|
|
221
|
+
justifyContent: 'center',
|
|
222
|
+
},
|
|
223
|
+
titre: { textAlign: 'center', marginTop: 14 },
|
|
224
|
+
input: { paddingTop: 24, paddingBottom: 16 },
|
|
203
225
|
chips: { flexDirection: 'row', flexWrap: 'wrap', gap: 8 },
|
|
204
|
-
chip: {
|
|
205
|
-
|
|
226
|
+
chip: {
|
|
227
|
+
flexDirection: 'row',
|
|
228
|
+
alignItems: 'center',
|
|
229
|
+
paddingLeft: 4,
|
|
230
|
+
paddingRight: 12,
|
|
231
|
+
paddingVertical: 4,
|
|
232
|
+
borderRadius: 999,
|
|
233
|
+
borderWidth: 1,
|
|
234
|
+
},
|
|
235
|
+
chipTexte: { marginLeft: 8, fontWeight: '600' },
|
|
206
236
|
});
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Image } from 'expo-image';
|
|
2
2
|
import { StyleSheet, Text, View } from 'react-native';
|
|
3
3
|
|
|
4
|
+
import { Images } from '../../../../core/assets';
|
|
5
|
+
import { useTheme } from '../../../../core/theme';
|
|
4
6
|
import { argbToCss, categorieIconSource, isAssetIcon } from '../../domain/models/categorie_icons';
|
|
5
7
|
|
|
6
8
|
/** Icône d'une catégorie (image ou emoji), éventuellement dans un cercle coloré. */
|
|
@@ -33,6 +35,30 @@ export function CategorieIconCircle({ icon, bgColor }: { icon: string; bgColor?:
|
|
|
33
35
|
);
|
|
34
36
|
}
|
|
35
37
|
|
|
38
|
+
/**
|
|
39
|
+
* Pastille ronde d'une catégorie : [icon] (image ou emoji) sur sa
|
|
40
|
+
* [bgColor]. Sans [icon], l'illustration par défaut des catégories.
|
|
41
|
+
*/
|
|
42
|
+
export function CategoriePastille({ icon, bgColor, taille = 44 }: { icon?: string | null; bgColor?: number | null; taille?: number }) {
|
|
43
|
+
const theme = useTheme();
|
|
44
|
+
return (
|
|
45
|
+
<View
|
|
46
|
+
style={[
|
|
47
|
+
styles.pastille,
|
|
48
|
+
{ width: taille, height: taille, borderRadius: taille / 2 },
|
|
49
|
+
{ backgroundColor: bgColor != null ? argbToCss(bgColor) : theme.colorScheme.surface },
|
|
50
|
+
]}
|
|
51
|
+
>
|
|
52
|
+
{icon == null ? (
|
|
53
|
+
<Image source={Images.categorie} style={{ width: taille * 0.7, height: taille * 0.7 }} contentFit="contain" />
|
|
54
|
+
) : (
|
|
55
|
+
<CategorieIcon icon={icon} size={taille * 0.5} emojiSize={taille * 0.48} />
|
|
56
|
+
)}
|
|
57
|
+
</View>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
36
61
|
const styles = StyleSheet.create({
|
|
62
|
+
pastille: { alignItems: 'center', justifyContent: 'center' },
|
|
37
63
|
circle: { width: 45, height: 45, borderRadius: 22.5, alignItems: 'center', justifyContent: 'center' },
|
|
38
64
|
});
|
|
@@ -5,27 +5,34 @@ import { Pressable, StyleSheet, Text, View } from 'react-native';
|
|
|
5
5
|
import { useBloc } from '../../../../core/bloc_react';
|
|
6
6
|
import { Themer, useTheme } from '../../../../core/theme';
|
|
7
7
|
import { useAppLocalizations } from '../../../../l10n/localizations';
|
|
8
|
-
import { TextButton } from '../../../../shared/material/buttons';
|
|
9
8
|
import { Card } from '../../../../shared/material/card';
|
|
9
|
+
import { withAlpha } from '../../../../shared/utils/color';
|
|
10
10
|
import type { Categorie } from '../../domain/models/categorie';
|
|
11
11
|
import { CategorieBloc } from '../bloc/categorie_bloc';
|
|
12
12
|
import { CategorieEditEvent } from '../bloc/categorie_event';
|
|
13
|
-
import {
|
|
13
|
+
import { CategoriePastille } from './categorie_icon';
|
|
14
14
|
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Liste de catégories dans une carte : pastille, nom, bouton de
|
|
17
|
+
* modification si [editable] et, en sélection multiple, rond coché. En
|
|
18
|
+
* [selectionUnique], toucher une ligne la choisit (sans rond).
|
|
19
|
+
*/
|
|
16
20
|
export function CategorieListeWidget({
|
|
17
21
|
liste,
|
|
18
22
|
defaultSelectedCategories,
|
|
19
23
|
onSelectionChanged,
|
|
20
24
|
editable,
|
|
25
|
+
selectionUnique = false,
|
|
21
26
|
}: {
|
|
22
27
|
liste: readonly Categorie[];
|
|
23
28
|
defaultSelectedCategories: string[];
|
|
24
29
|
onSelectionChanged: (categorie: Categorie, checked: boolean) => void;
|
|
25
30
|
editable?: boolean;
|
|
31
|
+
selectionUnique?: boolean;
|
|
26
32
|
}) {
|
|
27
33
|
const traductions = useAppLocalizations();
|
|
28
34
|
const theme = useTheme();
|
|
35
|
+
const primaire = theme.colorScheme.primary;
|
|
29
36
|
const categorieBloc = useBloc(CategorieBloc);
|
|
30
37
|
// Catégories sélectionnées
|
|
31
38
|
const [selected, setSelected] = useState<string[]>(() =>
|
|
@@ -33,39 +40,51 @@ export function CategorieListeWidget({
|
|
|
33
40
|
);
|
|
34
41
|
|
|
35
42
|
return (
|
|
36
|
-
<Card>
|
|
43
|
+
<Card style={styles.carte}>
|
|
37
44
|
<View style={styles.list}>
|
|
38
45
|
{liste.map((categorie) => {
|
|
39
46
|
const checked = selected.includes(categorie.id);
|
|
47
|
+
const marquee = checked && !selectionUnique;
|
|
40
48
|
return (
|
|
41
49
|
<Pressable
|
|
42
50
|
key={categorie.id}
|
|
43
|
-
accessibilityRole=
|
|
51
|
+
accessibilityRole={selectionUnique ? 'button' : 'checkbox'}
|
|
44
52
|
accessibilityState={{ checked }}
|
|
45
53
|
onPress={() => {
|
|
46
|
-
const value = !checked;
|
|
54
|
+
const value = selectionUnique ? true : !checked;
|
|
47
55
|
setSelected((s) => (value ? [...s, categorie.id] : s.filter((id) => id !== categorie.id)));
|
|
48
56
|
onSelectionChanged(categorie, value);
|
|
49
57
|
}}
|
|
50
|
-
style={
|
|
58
|
+
style={({ pressed }) => [
|
|
59
|
+
styles.row,
|
|
60
|
+
{ backgroundColor: marquee ? withAlpha(primaire, 0.08) : pressed ? theme.colorScheme.secondary : 'transparent' },
|
|
61
|
+
]}
|
|
51
62
|
>
|
|
52
|
-
<
|
|
53
|
-
name={checked ? 'check-box' : 'check-box-outline-blank'}
|
|
54
|
-
size={24}
|
|
55
|
-
color={checked ? theme.colorScheme.primary : Themer.neural02Color}
|
|
56
|
-
/>
|
|
57
|
-
<View style={styles.gap12} />
|
|
58
|
-
<CategorieIconCircle icon={categorie.icon} bgColor={categorie.bgColor} />
|
|
59
|
-
<View style={styles.gap12} />
|
|
63
|
+
<CategoriePastille icon={categorie.icon} bgColor={categorie.bgColor} />
|
|
60
64
|
{/* Libellé */}
|
|
61
|
-
<Text numberOfLines={1} style={[theme.textTheme.
|
|
62
|
-
{
|
|
65
|
+
<Text numberOfLines={1} style={[theme.textTheme.displayLarge, styles.label, { fontWeight: marquee ? '700' : '500' }]}>
|
|
66
|
+
{categorie.label}
|
|
63
67
|
</Text>
|
|
64
68
|
{/* Bouton modifier */}
|
|
65
69
|
{editable === true && (
|
|
66
|
-
<
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
<Pressable
|
|
71
|
+
accessibilityRole="button"
|
|
72
|
+
accessibilityLabel={traductions.categorieEditBtn}
|
|
73
|
+
hitSlop={8}
|
|
74
|
+
style={styles.modifier}
|
|
75
|
+
onPress={() => categorieBloc.add(new CategorieEditEvent(categorie))}
|
|
76
|
+
>
|
|
77
|
+
<MaterialIcons name="edit" size={20} color={Themer.neural03Color} />
|
|
78
|
+
</Pressable>
|
|
79
|
+
)}
|
|
80
|
+
{/* Sélection multiple : rond coché */}
|
|
81
|
+
{!selectionUnique && (
|
|
82
|
+
<MaterialIcons
|
|
83
|
+
name={checked ? 'check-circle' : 'radio-button-unchecked'}
|
|
84
|
+
size={22}
|
|
85
|
+
color={checked ? primaire : Themer.neural03Color}
|
|
86
|
+
style={styles.coche}
|
|
87
|
+
/>
|
|
69
88
|
)}
|
|
70
89
|
</Pressable>
|
|
71
90
|
);
|
|
@@ -76,8 +95,10 @@ export function CategorieListeWidget({
|
|
|
76
95
|
}
|
|
77
96
|
|
|
78
97
|
const styles = StyleSheet.create({
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
98
|
+
carte: { margin: 0 },
|
|
99
|
+
list: { padding: 6 },
|
|
100
|
+
row: { flexDirection: 'row', alignItems: 'center', marginVertical: 1, paddingHorizontal: 8, paddingVertical: 8, borderRadius: 14 },
|
|
101
|
+
label: { flex: 1, marginLeft: 14 },
|
|
102
|
+
modifier: { padding: 8 },
|
|
103
|
+
coche: { marginHorizontal: 4 },
|
|
83
104
|
});
|
|
@@ -2,17 +2,15 @@ import { MaterialIcons } from '@expo/vector-icons';
|
|
|
2
2
|
import { Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';
|
|
3
3
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
4
4
|
|
|
5
|
-
import { useBloc,
|
|
5
|
+
import { useBloc, useBlocListener } from '../../../../core/bloc_react';
|
|
6
6
|
import { AppRouter, useAppRouter } from '../../../../core/router';
|
|
7
|
-
import {
|
|
7
|
+
import { useTheme } from '../../../../core/theme';
|
|
8
8
|
import { useAppLocalizations } from '../../../../l10n/localizations';
|
|
9
|
-
import {
|
|
10
|
-
import { Divider } from '../../../../shared/material/divider';
|
|
11
|
-
import { Categorie } from '../../domain/models/categorie';
|
|
9
|
+
import type { Categorie } from '../../domain/models/categorie';
|
|
12
10
|
import { CategorieBloc } from '../bloc/categorie_bloc';
|
|
13
|
-
import {
|
|
11
|
+
import { CategorieListEvent } from '../bloc/categorie_event';
|
|
14
12
|
import { CategorieCreationState, CategorieEditState, CategorieInitialState } from '../bloc/categorie_state';
|
|
15
|
-
import {
|
|
13
|
+
import { CategorieSelectWidget } from './categorie_select_widget';
|
|
16
14
|
|
|
17
15
|
/** Choix d'une catégorie : la catégorie choisie est retournée à l'écran appelant. */
|
|
18
16
|
export function CategorieSelectPage() {
|
|
@@ -21,7 +19,6 @@ export function CategorieSelectPage() {
|
|
|
21
19
|
const router = useAppRouter();
|
|
22
20
|
const insets = useSafeAreaInsets();
|
|
23
21
|
const categorieBloc = useBloc(CategorieBloc);
|
|
24
|
-
const state = useBlocBuilder(categorieBloc);
|
|
25
22
|
|
|
26
23
|
useBlocListener(
|
|
27
24
|
categorieBloc,
|
|
@@ -54,39 +51,10 @@ export function CategorieSelectPage() {
|
|
|
54
51
|
<MaterialIcons name="arrow-back" size={24} color={theme.colorScheme.onSurface} />
|
|
55
52
|
</Pressable>
|
|
56
53
|
</View>
|
|
54
|
+
{/* Titre */}
|
|
55
|
+
<Text style={[theme.textTheme.headlineLarge, styles.titre]}>{traductions.categorieSelectionUniqueTitle}</Text>
|
|
57
56
|
<ScrollView contentContainerStyle={styles.content}>
|
|
58
|
-
|
|
59
|
-
<Text style={theme.textTheme.headlineSmall}>{traductions.categorieCustomTitle}</Text>
|
|
60
|
-
<View style={styles.gap14} />
|
|
61
|
-
<Card>
|
|
62
|
-
{/* Bouton ajouter */}
|
|
63
|
-
<Pressable accessibilityRole="button" onPress={() => categorieBloc.add(new CategorieAddEvent())} style={styles.addRow}>
|
|
64
|
-
<View style={[styles.addIcon, { backgroundColor: theme.colorScheme.surface }]}>
|
|
65
|
-
<MaterialIcons name="add" size={24} color={theme.colorScheme.onSurface} />
|
|
66
|
-
</View>
|
|
67
|
-
<Text style={theme.textTheme.headlineSmall}>{traductions.categorieCustomAdd}</Text>
|
|
68
|
-
</Pressable>
|
|
69
|
-
{/* Catégories personnalisées */}
|
|
70
|
-
{state.categories.length > 0 && (
|
|
71
|
-
<>
|
|
72
|
-
<View style={styles.divider}>
|
|
73
|
-
<Divider color={Themer.neural01Color} />
|
|
74
|
-
</View>
|
|
75
|
-
<CategorieListeWidget
|
|
76
|
-
key={state.categories.map((c) => c.id + c.label).join()}
|
|
77
|
-
liste={state.categories}
|
|
78
|
-
editable
|
|
79
|
-
defaultSelectedCategories={[]}
|
|
80
|
-
onSelectionChanged={onSelected}
|
|
81
|
-
/>
|
|
82
|
-
</>
|
|
83
|
-
)}
|
|
84
|
-
</Card>
|
|
85
|
-
<View style={styles.gap32} />
|
|
86
|
-
{/* Catégories par défaut */}
|
|
87
|
-
<Text style={theme.textTheme.headlineSmall}>{traductions.categorieDefaultTitle}</Text>
|
|
88
|
-
<View style={styles.gap14} />
|
|
89
|
-
<CategorieListeWidget liste={Categorie.defaultListe} defaultSelectedCategories={[]} onSelectionChanged={onSelected} />
|
|
57
|
+
<CategorieSelectWidget canAdd editable showTitles selectionUnique selectedCategories={[]} onSelectionChanged={onSelected} />
|
|
90
58
|
</ScrollView>
|
|
91
59
|
</View>
|
|
92
60
|
);
|
|
@@ -96,10 +64,6 @@ const styles = StyleSheet.create({
|
|
|
96
64
|
flex: { flex: 1 },
|
|
97
65
|
backRow: { flexDirection: 'row' },
|
|
98
66
|
back: { padding: 12 },
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
addIcon: { width: 45, height: 45, borderRadius: 14, alignItems: 'center', justifyContent: 'center' },
|
|
102
|
-
divider: { paddingHorizontal: 16 },
|
|
103
|
-
gap14: { height: 14 },
|
|
104
|
-
gap32: { height: 32 },
|
|
67
|
+
titre: { paddingHorizontal: 20, paddingBottom: 16 },
|
|
68
|
+
content: { paddingHorizontal: 16, paddingBottom: 20 },
|
|
105
69
|
});
|