@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,7 +1,6 @@
|
|
|
1
1
|
import { MaterialIcons } from '@expo/vector-icons';
|
|
2
|
-
import { Image } from 'expo-image';
|
|
3
2
|
import { useState } from 'react';
|
|
4
|
-
import { Keyboard, Pressable, StyleSheet,
|
|
3
|
+
import { Keyboard, Pressable, StyleSheet, TextInput, View } from 'react-native';
|
|
5
4
|
|
|
6
5
|
import { Images } from '../../../../core/assets';
|
|
7
6
|
import { useBloc } from '../../../../core/bloc_react';
|
|
@@ -11,6 +10,7 @@ import { useAppLocalizations } from '../../../../l10n/localizations';
|
|
|
11
10
|
import { Card } from '../../../../shared/material/card';
|
|
12
11
|
import { showModalBottomSheet } from '../../../../shared/material/overlays';
|
|
13
12
|
import { Scaffold } from '../../../../shared/material/scaffold';
|
|
13
|
+
import { SelectionOption } from '../../../../shared/widgets/selection';
|
|
14
14
|
import { MyPageContainer } from '../../../../shared/widgets/my_page_container';
|
|
15
15
|
import type { ContactPI } from '../../../contacts/domain/contact_pi';
|
|
16
16
|
import type { PhoneContact } from '../../../contacts/domain/phone_contact';
|
|
@@ -36,7 +36,6 @@ export function ProfilePageContacts({ contactPI }: { contactPI?: ContactPI | nul
|
|
|
36
36
|
|
|
37
37
|
const onSelect = async (contact: PhoneContact | null, alias: string | null) => {
|
|
38
38
|
const value = await showModalBottomSheet<boolean>(router, {
|
|
39
|
-
themed: true,
|
|
40
39
|
builder: () => <ProfilePageContactsActions alias={alias} contact={contact} contactPI={contactPI} />,
|
|
41
40
|
});
|
|
42
41
|
if (value != null && contactPI != null) AppRouter.pop(router);
|
|
@@ -68,18 +67,13 @@ export function ProfilePageContacts({ contactPI }: { contactPI?: ContactPI | nul
|
|
|
68
67
|
{/* Nouveau contact */}
|
|
69
68
|
{!hasInputSearchFocused && searchKeyword == null && (
|
|
70
69
|
<>
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<Text style={theme.textTheme.displaySmall}>{traductions.profileContactPageaActionAddSubtitle}</Text>
|
|
79
|
-
</View>
|
|
80
|
-
</Pressable>
|
|
81
|
-
</Card>
|
|
82
|
-
<View style={styles.gap10} />
|
|
70
|
+
<SelectionOption
|
|
71
|
+
image={Images.iconTransactionSendByNewContact}
|
|
72
|
+
titre={traductions.profileContactPageaActionAdd}
|
|
73
|
+
sousTitre={traductions.profileContactPageaActionAddSubtitle}
|
|
74
|
+
onPress={() => void onSelect(null, null)}
|
|
75
|
+
/>
|
|
76
|
+
<View style={styles.gap16} />
|
|
83
77
|
</>
|
|
84
78
|
)}
|
|
85
79
|
{/* Contacts (la recherche est transmise à la pagination : le SDK
|
|
@@ -89,6 +83,8 @@ export function ProfilePageContacts({ contactPI }: { contactPI?: ContactPI | nul
|
|
|
89
83
|
hideTitle
|
|
90
84
|
expanded
|
|
91
85
|
searchKeyword={searchKeyword}
|
|
86
|
+
// Le toucher ouvre déjà la feuille du contact
|
|
87
|
+
showActions={false}
|
|
92
88
|
onSelect={(contact, alias) => void onSelect(contact, alias)}
|
|
93
89
|
/>
|
|
94
90
|
</View>
|
|
@@ -103,10 +99,6 @@ const styles = StyleSheet.create({
|
|
|
103
99
|
flex: { flex: 1 },
|
|
104
100
|
search: { height: 36, flexDirection: 'row', alignItems: 'center', paddingHorizontal: 12 },
|
|
105
101
|
input: { flex: 1, marginLeft: 8, paddingVertical: 0 },
|
|
106
|
-
|
|
107
|
-
actionIcon: { width: 45, height: 45, borderRadius: 14, alignItems: 'center', justifyContent: 'center' },
|
|
108
|
-
icon: { width: 20, height: 20 },
|
|
109
|
-
texts: { flex: 1, marginLeft: 16 },
|
|
110
|
-
gap10: { height: 10 },
|
|
102
|
+
gap16: { height: 16 },
|
|
111
103
|
gap20: { height: 20 },
|
|
112
104
|
});
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { Image } from 'expo-image';
|
|
2
1
|
import { MaterialIcons } from '@expo/vector-icons';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Keyboard, Platform, Pressable, ScrollView, Share, StyleSheet, Text, View } from 'react-native';
|
|
6
4
|
|
|
7
5
|
import { Images } from '../../../../core/assets';
|
|
8
6
|
import { useBloc, useBlocListener, useCreateBloc } from '../../../../core/bloc_react';
|
|
@@ -11,11 +9,12 @@ import { Themer, useTheme } from '../../../../core/theme';
|
|
|
11
9
|
import { useAppLocalizations } from '../../../../l10n/localizations';
|
|
12
10
|
import { ElevatedButton, FilledTonalButton } from '../../../../shared/material/buttons';
|
|
13
11
|
import { AliasPI } from '../../../../shared/models/alias_pi';
|
|
14
|
-
import {
|
|
12
|
+
import { withAlpha } from '../../../../shared/utils/color';
|
|
15
13
|
import { ClipboardWidget } from '../../../../shared/widgets/clipboard_widget';
|
|
16
14
|
import { InputAliasWidget } from '../../../../shared/widgets/input_alias_widget';
|
|
17
15
|
import { CustomTextInput } from '../../../../shared/widgets/input_text';
|
|
18
16
|
import { CustomLoadingDialog } from '../../../../shared/widgets/loading_page';
|
|
17
|
+
import { SelectionBoutons, SelectionSheet } from '../../../../shared/widgets/selection';
|
|
19
18
|
import { ContactPI } from '../../../contacts/domain/contact_pi';
|
|
20
19
|
import { contactIdOf, type PhoneContact } from '../../../contacts/domain/phone_contact';
|
|
21
20
|
import { ContactBloc } from '../../../contacts/presentation/bloc/contact_bloc';
|
|
@@ -27,6 +26,7 @@ import {
|
|
|
27
26
|
ContactCreateLoadingState,
|
|
28
27
|
ContactCreateSuccessState,
|
|
29
28
|
} from '../../../contacts/presentation/bloc/create/contact_create_state';
|
|
29
|
+
import { ProfileMenuTile, ProfilePageMenu } from './profile_menu';
|
|
30
30
|
|
|
31
31
|
function fullName(contact: PhoneContact): string {
|
|
32
32
|
return `${contact.firstName} ${contact.lastName}`.trim();
|
|
@@ -50,9 +50,6 @@ export function ProfilePageContactsActions({
|
|
|
50
50
|
const traductions = useAppLocalizations();
|
|
51
51
|
const theme = useTheme();
|
|
52
52
|
const router = useAppRouter();
|
|
53
|
-
const insets = useSafeAreaInsets();
|
|
54
|
-
const { height } = useWindowDimensions();
|
|
55
|
-
const isKeyboardVisible = useKeyboardVisible();
|
|
56
53
|
const contactListBloc = useBloc(ContactBloc);
|
|
57
54
|
const contactBloc = useCreateBloc(() => new ContactCreateBloc());
|
|
58
55
|
|
|
@@ -107,127 +104,133 @@ export function ProfilePageContactsActions({
|
|
|
107
104
|
};
|
|
108
105
|
|
|
109
106
|
const canSave = command.isValid() && command.value !== alias && name != null && name.length > 0;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
// formulaire reste au-dessus du clavier. Sur iOS, la feuille est déjà
|
|
113
|
-
// remontée au-dessus du clavier par l'OverlayHost : elle garde sa hauteur.
|
|
114
|
-
const keyboardOpen = isKeyboardVisible && Platform.OS !== 'ios';
|
|
115
|
-
const ratio = !keyboardOpen ? (contact != null ? 0.35 : 0.5) : contact != null ? 0.7 : 0.8;
|
|
116
|
-
const sheetHeight = useRef(new Animated.Value(height * ratio)).current;
|
|
117
|
-
useEffect(() => {
|
|
118
|
-
Animated.timing(sheetHeight, {
|
|
119
|
-
toValue: height * ratio,
|
|
120
|
-
duration: 300,
|
|
121
|
-
easing: Easing.inOut(Easing.ease),
|
|
122
|
-
useNativeDriver: false,
|
|
123
|
-
}).start();
|
|
124
|
-
}, [height, ratio, sheetHeight]);
|
|
107
|
+
const primaire = theme.colorScheme.primary;
|
|
108
|
+
const initiale = contact != null && name != null && name.trim().length > 0 ? name.trim()[0].toUpperCase() : null;
|
|
125
109
|
|
|
110
|
+
// La feuille remonte d'elle-même au-dessus du clavier
|
|
126
111
|
return (
|
|
127
|
-
<
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
<>
|
|
134
|
-
<View style={styles.gap10} />
|
|
112
|
+
<SelectionSheet
|
|
113
|
+
hauteurMax={0.9}
|
|
114
|
+
contenu={
|
|
115
|
+
<>
|
|
116
|
+
<ScrollView keyboardShouldPersistTaps="handled" bounces={false} style={styles.defile} contentContainerStyle={styles.content}>
|
|
117
|
+
{/* Pastille, nom du contact (ou « Ajouter un contact ») et alias à copier (ou sous-titre de la création) */}
|
|
135
118
|
<View style={styles.row}>
|
|
136
|
-
<
|
|
137
|
-
{
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
</View>
|
|
143
|
-
</>
|
|
144
|
-
) : contact == null ? (
|
|
145
|
-
<>
|
|
146
|
-
<View style={styles.gap10} />
|
|
147
|
-
<Text numberOfLines={1} style={[theme.textTheme.bodyLarge, { color: Themer.neural03Color }]}>
|
|
148
|
-
{traductions.contactCreateSubtitle}
|
|
149
|
-
</Text>
|
|
150
|
-
</>
|
|
151
|
-
) : null}
|
|
152
|
-
<View style={styles.gap20} />
|
|
153
|
-
|
|
154
|
-
{canEdit ? (
|
|
155
|
-
<>
|
|
156
|
-
{/* Formulaire */}
|
|
157
|
-
<ScrollView style={styles.flex} keyboardShouldPersistTaps="handled">
|
|
158
|
-
{contact == null && (
|
|
159
|
-
<>
|
|
160
|
-
<CustomTextInput
|
|
161
|
-
defaultValue={name ?? ''}
|
|
162
|
-
labelText={traductions.contactCreateNameLabel}
|
|
163
|
-
messageError={name == null || name.length === 0 ? traductions.contactCreateNameErrorEmpty : null}
|
|
164
|
-
onChange={setName}
|
|
165
|
-
/>
|
|
166
|
-
<View style={styles.gap10} />
|
|
167
|
-
</>
|
|
168
|
-
)}
|
|
169
|
-
<InputAliasWidget command={command} onChange={rebuild} />
|
|
170
|
-
</ScrollView>
|
|
171
|
-
<View style={styles.gap20} />
|
|
172
|
-
{/* Annuler / Enregistrer */}
|
|
173
|
-
<View style={styles.buttons}>
|
|
174
|
-
<View style={styles.flex}>
|
|
175
|
-
<FilledTonalButton onPress={cancel}>{traductions.btnTextCancel}</FilledTonalButton>
|
|
119
|
+
<View style={[styles.avatar, { backgroundColor: withAlpha(primaire, 0.12) }]}>
|
|
120
|
+
{initiale != null ? (
|
|
121
|
+
<Text style={[theme.textTheme.headlineMedium, styles.initiale, { color: primaire }]}>{initiale}</Text>
|
|
122
|
+
) : (
|
|
123
|
+
<MaterialIcons name="person-add-alt-1" size={24} color={primaire} />
|
|
124
|
+
)}
|
|
176
125
|
</View>
|
|
177
|
-
<View style={styles.
|
|
178
|
-
|
|
179
|
-
|
|
126
|
+
<View style={styles.entete}>
|
|
127
|
+
<Text numberOfLines={1} style={theme.textTheme.headlineMedium}>
|
|
128
|
+
{contact != null && name != null ? name : traductions.contactCreateTitle}
|
|
129
|
+
</Text>
|
|
130
|
+
<View style={styles.gap2} />
|
|
131
|
+
{alias != null && alias.length > 0 ? (
|
|
132
|
+
<View style={styles.row}>
|
|
133
|
+
<Text numberOfLines={1} style={[theme.textTheme.displayMedium, styles.flexShrink, { color: Themer.neural03Color }]}>
|
|
134
|
+
{AliasPI.formatPhoneNumber(alias)}
|
|
135
|
+
</Text>
|
|
136
|
+
<Pressable
|
|
137
|
+
accessibilityRole="button"
|
|
138
|
+
hitSlop={8}
|
|
139
|
+
style={styles.copier}
|
|
140
|
+
onPress={() => void ClipboardWidget.setData(alias)}
|
|
141
|
+
>
|
|
142
|
+
<MaterialIcons name="content-copy" size={16} color={primaire} />
|
|
143
|
+
</Pressable>
|
|
144
|
+
</View>
|
|
145
|
+
) : contact == null ? (
|
|
146
|
+
<Text style={[theme.textTheme.displaySmall, { color: Themer.neural03Color }]}>{traductions.contactCreateSubtitle}</Text>
|
|
147
|
+
) : null}
|
|
180
148
|
</View>
|
|
181
149
|
</View>
|
|
182
|
-
|
|
183
|
-
) : contact != null && alias != null ? (
|
|
184
|
-
<>
|
|
185
|
-
{/* Modifier */}
|
|
186
|
-
<Action
|
|
187
|
-
icon={Images.iconEdit}
|
|
188
|
-
title={traductions.profileContactPageaActionEdit}
|
|
189
|
-
onPress={() => {
|
|
190
|
-
command.value = alias;
|
|
191
|
-
setCanEdit(true);
|
|
192
|
-
}}
|
|
193
|
-
/>
|
|
194
|
-
{/* Supprimer */}
|
|
195
|
-
<Action
|
|
196
|
-
icon={Images.iconDelete}
|
|
197
|
-
title={traductions.profileContactPageaActionDelete}
|
|
198
|
-
onPress={() => contactBloc.add(new ContactDeleteSubmitEvent(contactIdOf(contact), alias))}
|
|
199
|
-
/>
|
|
200
|
-
</>
|
|
201
|
-
) : null}
|
|
202
|
-
</View>
|
|
203
|
-
</Animated.View>
|
|
204
|
-
);
|
|
205
|
-
}
|
|
150
|
+
<View style={styles.gap20} />
|
|
206
151
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
152
|
+
{canEdit ? (
|
|
153
|
+
<>
|
|
154
|
+
{/* Champs nom et alias */}
|
|
155
|
+
{contact == null && (
|
|
156
|
+
<>
|
|
157
|
+
<CustomTextInput
|
|
158
|
+
defaultValue={name ?? ''}
|
|
159
|
+
labelText={traductions.contactCreateNameLabel}
|
|
160
|
+
messageError={name == null || name.length === 0 ? traductions.contactCreateNameErrorEmpty : null}
|
|
161
|
+
onChange={setName}
|
|
162
|
+
/>
|
|
163
|
+
<View style={styles.gap12} />
|
|
164
|
+
</>
|
|
165
|
+
)}
|
|
166
|
+
<InputAliasWidget command={command} onChange={rebuild} />
|
|
167
|
+
</>
|
|
168
|
+
) : contact != null && alias != null ? (
|
|
169
|
+
// Actions sur l'alias du contact
|
|
170
|
+
<ProfilePageMenu
|
|
171
|
+
items={[
|
|
172
|
+
// Modifier
|
|
173
|
+
<ProfileMenuTile
|
|
174
|
+
key="modifier"
|
|
175
|
+
image={Images.iconEdit}
|
|
176
|
+
titre={traductions.profileContactPageaActionEdit}
|
|
177
|
+
onPress={() => {
|
|
178
|
+
command.value = alias;
|
|
179
|
+
setCanEdit(true);
|
|
180
|
+
}}
|
|
181
|
+
/>,
|
|
182
|
+
// Partager
|
|
183
|
+
<ProfileMenuTile
|
|
184
|
+
key="partager"
|
|
185
|
+
icone={Platform.OS === 'ios' ? 'ios-share' : 'share'}
|
|
186
|
+
titre={traductions.profileContactPageaActionShare}
|
|
187
|
+
onPress={() =>
|
|
188
|
+
void Share.share({ title: traductions.qrcodePagePartageAliasMessage(name ?? ''), message: alias })
|
|
189
|
+
}
|
|
190
|
+
/>,
|
|
191
|
+
// Supprimer
|
|
192
|
+
<ProfileMenuTile
|
|
193
|
+
key="supprimer"
|
|
194
|
+
image={Images.iconDelete}
|
|
195
|
+
titre={traductions.profileContactPageaActionDelete}
|
|
196
|
+
couleur={theme.colorScheme.error}
|
|
197
|
+
trailing={<View />}
|
|
198
|
+
onPress={() => contactBloc.add(new ContactDeleteSubmitEvent(contactIdOf(contact), alias))}
|
|
199
|
+
/>,
|
|
200
|
+
]}
|
|
201
|
+
/>
|
|
202
|
+
) : null}
|
|
203
|
+
</ScrollView>
|
|
204
|
+
|
|
205
|
+
{/* Annuler / Enregistrer, fixés en bas */}
|
|
206
|
+
{canEdit && (
|
|
207
|
+
<SelectionBoutons
|
|
208
|
+
boutons={[
|
|
209
|
+
<FilledTonalButton key="annuler" onPress={cancel}>
|
|
210
|
+
{traductions.btnTextCancel}
|
|
211
|
+
</FilledTonalButton>,
|
|
212
|
+
<ElevatedButton key="enregistrer" onPress={canSave ? () => saveAlias(command.value!) : undefined}>
|
|
213
|
+
{traductions.btnTextSave}
|
|
214
|
+
</ElevatedButton>,
|
|
215
|
+
]}
|
|
216
|
+
/>
|
|
217
|
+
)}
|
|
218
|
+
</>
|
|
219
|
+
}
|
|
220
|
+
/>
|
|
216
221
|
);
|
|
217
222
|
}
|
|
218
223
|
|
|
219
224
|
const styles = StyleSheet.create({
|
|
220
|
-
|
|
221
|
-
content: { paddingHorizontal: 20,
|
|
222
|
-
flex: { flex: 1 },
|
|
225
|
+
defile: { flexShrink: 1 },
|
|
226
|
+
content: { paddingHorizontal: 20, paddingTop: 4, paddingBottom: 20 },
|
|
223
227
|
flexShrink: { flexShrink: 1 },
|
|
224
228
|
row: { flexDirection: 'row', alignItems: 'center' },
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
gap16: { width: 16 },
|
|
229
|
+
avatar: { width: 52, height: 52, borderRadius: 26, alignItems: 'center', justifyContent: 'center' },
|
|
230
|
+
initiale: { fontWeight: '700' },
|
|
231
|
+
entete: { flex: 1, marginLeft: 14 },
|
|
232
|
+
copier: { padding: 4, marginLeft: 6 },
|
|
233
|
+
gap2: { height: 2 },
|
|
234
|
+
gap12: { height: 12 },
|
|
232
235
|
gap20: { height: 20 },
|
|
233
236
|
});
|
|
@@ -88,7 +88,6 @@ export function QrCodeAliasPage() {
|
|
|
88
88
|
style={styles.icon}
|
|
89
89
|
onPress={() =>
|
|
90
90
|
void showModalBottomSheet(router, {
|
|
91
|
-
themed: true,
|
|
92
91
|
builder: () => <QrcodeAliasPageShare username={user.nomComplet()} alias={aliasCle} shareQrcode={() => void shareQRCode()} />,
|
|
93
92
|
})
|
|
94
93
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { ScrollView, Share, StyleSheet,
|
|
2
|
-
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
1
|
+
import { ScrollView, Share, 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 {
|
|
6
|
+
import { SelectionOption, SelectionSheet } from '../../../../shared/widgets/selection';
|
|
9
7
|
|
|
10
8
|
/** Feuille « Partager » : le QR code (image) ou l'alias (texte). */
|
|
11
9
|
export function QrcodeAliasPageShare({
|
|
@@ -18,47 +16,41 @@ export function QrcodeAliasPageShare({
|
|
|
18
16
|
shareQrcode: () => void;
|
|
19
17
|
}) {
|
|
20
18
|
const traductions = useAppLocalizations();
|
|
21
|
-
const theme = useTheme();
|
|
22
19
|
const router = useAppRouter();
|
|
23
|
-
const insets = useSafeAreaInsets();
|
|
24
|
-
const { height } = useWindowDimensions();
|
|
25
20
|
|
|
26
21
|
return (
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
()
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
</ScrollView>
|
|
56
|
-
</View>
|
|
22
|
+
<SelectionSheet
|
|
23
|
+
titre={traductions.qrcodePagePartageTitle}
|
|
24
|
+
contenu={
|
|
25
|
+
<ScrollView bounces={false} contentContainerStyle={styles.content}>
|
|
26
|
+
{/* Partager le QR code */}
|
|
27
|
+
<SelectionOption
|
|
28
|
+
image={Images.homeFooterQrcode}
|
|
29
|
+
titre={traductions.qrcodePagePartageQrCodeTitle}
|
|
30
|
+
sousTitre={traductions.qrcodePagePartageQrCodeSubTitle}
|
|
31
|
+
onPress={() => {
|
|
32
|
+
AppRouter.pop(router);
|
|
33
|
+
shareQrcode();
|
|
34
|
+
}}
|
|
35
|
+
/>
|
|
36
|
+
<View style={styles.gap10} />
|
|
37
|
+
{/* Partager l'alias */}
|
|
38
|
+
<SelectionOption
|
|
39
|
+
image={Images.iconsCircleUser}
|
|
40
|
+
titre={traductions.qrcodePagePartageAliasTitle}
|
|
41
|
+
sousTitre={traductions.qrcodePagePartageAliasSubTitle}
|
|
42
|
+
onPress={() => {
|
|
43
|
+
AppRouter.pop(router);
|
|
44
|
+
void Share.share({ title: traductions.qrcodePagePartageAliasMessage(username), message: alias });
|
|
45
|
+
}}
|
|
46
|
+
/>
|
|
47
|
+
</ScrollView>
|
|
48
|
+
}
|
|
49
|
+
/>
|
|
57
50
|
);
|
|
58
51
|
}
|
|
59
52
|
|
|
60
53
|
const styles = StyleSheet.create({
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
gap20: { height: 20 },
|
|
54
|
+
content: { paddingHorizontal: 20, paddingTop: 8, paddingBottom: 16 },
|
|
55
|
+
gap10: { height: 10 },
|
|
64
56
|
});
|
|
@@ -30,6 +30,14 @@ const ACCENTS: Record<string, string> = {
|
|
|
30
30
|
æ: 'ae',
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
+
/** Rubrique d'une fonctionnalité, pour grouper la liste quand rien n'est encore saisi. */
|
|
34
|
+
export enum FonctionnaliteRubrique {
|
|
35
|
+
paiements = 'paiements',
|
|
36
|
+
abonnements = 'abonnements',
|
|
37
|
+
servicesBancaires = 'servicesBancaires',
|
|
38
|
+
profil = 'profil',
|
|
39
|
+
}
|
|
40
|
+
|
|
33
41
|
/**
|
|
34
42
|
* Une fonctionnalité de l'application que l'utilisateur peut retrouver
|
|
35
43
|
* depuis la recherche.
|
|
@@ -59,18 +67,66 @@ export class Fonctionnalite {
|
|
|
59
67
|
*/
|
|
60
68
|
readonly ouvrir: () => void;
|
|
61
69
|
|
|
70
|
+
/** Rubrique sous laquelle elle est listée avant toute saisie. */
|
|
71
|
+
readonly rubrique: FonctionnaliteRubrique;
|
|
72
|
+
|
|
73
|
+
/** Proposée en raccourci en haut de la recherche, avant toute saisie. */
|
|
74
|
+
readonly raccourci: boolean;
|
|
75
|
+
|
|
62
76
|
constructor(options: {
|
|
63
77
|
icon: number;
|
|
64
78
|
titre: string;
|
|
65
79
|
sousTitre?: string;
|
|
66
80
|
motsCles?: readonly string[];
|
|
67
81
|
ouvrir: () => void;
|
|
82
|
+
rubrique?: FonctionnaliteRubrique;
|
|
83
|
+
raccourci?: boolean;
|
|
68
84
|
}) {
|
|
69
85
|
this.icon = options.icon;
|
|
70
86
|
this.titre = options.titre;
|
|
71
87
|
this.sousTitre = options.sousTitre;
|
|
72
88
|
this.motsCles = options.motsCles ?? [];
|
|
73
89
|
this.ouvrir = options.ouvrir;
|
|
90
|
+
this.rubrique = options.rubrique ?? FonctionnaliteRubrique.paiements;
|
|
91
|
+
this.raccourci = options.raccourci ?? false;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Parties de [texte] à mettre en évidence pour [recherche] : débuts de
|
|
96
|
+
* mots qui commencent par un mot saisi, sans tenir compte des accents ni
|
|
97
|
+
* des majuscules. Renvoie des intervalles [début, fin[ dans [texte],
|
|
98
|
+
* triés et sans chevauchement.
|
|
99
|
+
*/
|
|
100
|
+
static correspondances(texte: string, recherche: string): [number, number][] {
|
|
101
|
+
const saisis = Fonctionnalite.normaliser(recherche)
|
|
102
|
+
.split(/[^a-z0-9]+/)
|
|
103
|
+
.filter((mot) => mot.length >= 2);
|
|
104
|
+
if (saisis.length === 0) return [];
|
|
105
|
+
// Texte normalisé caractère par caractère, avec la position d'origine
|
|
106
|
+
let t = '';
|
|
107
|
+
const origine: number[] = [];
|
|
108
|
+
for (let i = 0; i < texte.length; i++) {
|
|
109
|
+
// Espace et ponctuation deviennent un séparateur
|
|
110
|
+
const lettre = Fonctionnalite.normaliser(texte[i]);
|
|
111
|
+
const n = lettre.length === 0 ? ' ' : lettre;
|
|
112
|
+
for (const c of n) {
|
|
113
|
+
t += c;
|
|
114
|
+
origine.push(i);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const intervalles: [number, number][] = [];
|
|
118
|
+
for (const mot of t.matchAll(/[a-z0-9]+/g)) {
|
|
119
|
+
const debut = mot.index ?? 0;
|
|
120
|
+
const fin = debut + mot[0].length;
|
|
121
|
+
for (const saisi of saisis) {
|
|
122
|
+
if (t.startsWith(saisi, debut) || saisi.startsWith(mot[0])) {
|
|
123
|
+
const longueur = Math.min(saisi.length, fin - debut);
|
|
124
|
+
intervalles.push([origine[debut], origine[debut + longueur - 1] + 1]);
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return intervalles;
|
|
74
130
|
}
|
|
75
131
|
|
|
76
132
|
/**
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { MaterialIcons } from '@expo/vector-icons';
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { Animated, Easing, Pressable, StyleSheet, View } from 'react-native';
|
|
4
|
+
|
|
5
|
+
import { useBloc } from '../../../../core/bloc_react';
|
|
6
|
+
import { useTheme } from '../../../../core/theme';
|
|
7
|
+
import { useAppLocalizations } from '../../../../l10n/localizations';
|
|
8
|
+
import { withAlpha } from '../../../../shared/utils/color';
|
|
9
|
+
import { ConfigBloc } from '../../../config/adapters/ui/bloc/config_bloc';
|
|
10
|
+
import { ConfigChangeEvent } from '../../../config/adapters/ui/bloc/config_event';
|
|
11
|
+
import { ConfigLoadedState } from '../../../config/adapters/ui/bloc/config_state';
|
|
12
|
+
import { ConfigKey } from '../../../config/domain/models/config_keys';
|
|
13
|
+
|
|
14
|
+
/** Nombre de premiers affichages de l'accueil où la pastille pulse. */
|
|
15
|
+
const AFFICHAGES_AVEC_PULSATION = 3;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Bouton de recherche des fonctionnalités de la barre de l'accueil : loupe
|
|
19
|
+
* dans une pastille teintée, libellé d'accessibilité (et infobulle au
|
|
20
|
+
* toucher long sur le web). Aux trois premiers affichages de l'accueil, la
|
|
21
|
+
* pastille pulse deux fois pour attirer l'œil ; plus du tout une fois la
|
|
22
|
+
* recherche utilisée. [onPress] absent : bouton grisé.
|
|
23
|
+
*/
|
|
24
|
+
export function SearchBtnWidget({ onPress }: { onPress?: () => void }) {
|
|
25
|
+
const traductions = useAppLocalizations();
|
|
26
|
+
const theme = useTheme();
|
|
27
|
+
const primaire = theme.colorScheme.primary;
|
|
28
|
+
const configBloc = useBloc(ConfigBloc);
|
|
29
|
+
const pulsation = useRef(new Animated.Value(0)).current;
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!(configBloc.state instanceof ConfigLoadedState)) return;
|
|
33
|
+
const vus = Number.parseInt(configBloc.getParamValue(ConfigKey.searchHintCount) ?? '', 10) || 0;
|
|
34
|
+
if (vus >= AFFICHAGES_AVEC_PULSATION) return;
|
|
35
|
+
configBloc.add(new ConfigChangeEvent(ConfigKey.searchHintCount, String(vus + 1)));
|
|
36
|
+
// Deux pulsations, une fois l'accueil affiché
|
|
37
|
+
const une = () =>
|
|
38
|
+
Animated.sequence([
|
|
39
|
+
Animated.timing(pulsation, { toValue: 1, duration: 900, easing: Easing.out(Easing.ease), useNativeDriver: true }),
|
|
40
|
+
Animated.timing(pulsation, { toValue: 0, duration: 0, useNativeDriver: true }),
|
|
41
|
+
]);
|
|
42
|
+
const animation = Animated.sequence([Animated.delay(800), une(), une()]);
|
|
43
|
+
animation.start();
|
|
44
|
+
return () => animation.stop();
|
|
45
|
+
}, [configBloc, pulsation]);
|
|
46
|
+
|
|
47
|
+
// Léger grossissement au milieu de la pulsation ; onde qui s'élargit et s'efface
|
|
48
|
+
const scale = pulsation.interpolate({ inputRange: [0, 0.5, 1], outputRange: [1, 1.12, 1] });
|
|
49
|
+
const ondeScale = pulsation.interpolate({ inputRange: [0, 1], outputRange: [1, 1.4] });
|
|
50
|
+
const ondeOpacite = pulsation.interpolate({ inputRange: [0, 0.01, 1], outputRange: [0, 0.25, 0] });
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<View style={styles.zone}>
|
|
54
|
+
<Animated.View
|
|
55
|
+
pointerEvents="none"
|
|
56
|
+
style={[styles.onde, { backgroundColor: primaire, opacity: ondeOpacite, transform: [{ scale: ondeScale }] }]}
|
|
57
|
+
/>
|
|
58
|
+
<Animated.View style={{ transform: [{ scale }] }}>
|
|
59
|
+
<Pressable
|
|
60
|
+
accessibilityRole="button"
|
|
61
|
+
accessibilityLabel={traductions.homePageSearchTooltip}
|
|
62
|
+
accessibilityState={{ disabled: onPress == null }}
|
|
63
|
+
disabled={onPress == null}
|
|
64
|
+
hitSlop={6}
|
|
65
|
+
onPress={() => {
|
|
66
|
+
// Recherche utilisée : plus de pulsation
|
|
67
|
+
if (
|
|
68
|
+
configBloc.state instanceof ConfigLoadedState &&
|
|
69
|
+
configBloc.getParamValue(ConfigKey.searchHintCount) !== String(AFFICHAGES_AVEC_PULSATION)
|
|
70
|
+
) {
|
|
71
|
+
configBloc.add(new ConfigChangeEvent(ConfigKey.searchHintCount, String(AFFICHAGES_AVEC_PULSATION)));
|
|
72
|
+
}
|
|
73
|
+
onPress?.();
|
|
74
|
+
}}
|
|
75
|
+
style={({ pressed }) => [
|
|
76
|
+
styles.pastille,
|
|
77
|
+
{ backgroundColor: withAlpha(primaire, pressed ? 0.22 : 0.12), opacity: onPress == null ? 0.4 : 1 },
|
|
78
|
+
]}
|
|
79
|
+
>
|
|
80
|
+
<MaterialIcons name="search" size={22} color={primaire} />
|
|
81
|
+
</Pressable>
|
|
82
|
+
</Animated.View>
|
|
83
|
+
</View>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const styles = StyleSheet.create({
|
|
88
|
+
zone: { width: 48, height: 48, alignItems: 'center', justifyContent: 'center' },
|
|
89
|
+
onde: { position: 'absolute', width: 40, height: 40, borderRadius: 20 },
|
|
90
|
+
pastille: { width: 40, height: 40, borderRadius: 20, alignItems: 'center', justifyContent: 'center' },
|
|
91
|
+
});
|