Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
ee35556
feat: implements a new custom menu style instead of the native Androi…
algorythmice Jan 30, 2026
7f984a0
feat: Modification of “MenuView” by the new component “ActionMenu” in…
algorythmice Jan 30, 2026
4f34adf
feat: Modification of “MenuView” by the new component “ActionMenu” in…
algorythmice Jan 30, 2026
160c7da
fix: Add the changes suggested by copilot in PR
algorythmice Jan 31, 2026
e697683
fix: Remove id from Averages.tsx because it is no longer necessary an…
algorythmice Jan 31, 2026
fab33fb
fix(ui): Replace MenuView with ActionMenu in ChipButton and correct i…
algorythmice Jan 31, 2026
c8a2f8f
fix(ui/action-menu): add error handling in ActionMenu.tsx and loads M…
algorythmice Jan 31, 2026
6fec72f
fix(ui/action-menu): Replace any with strict typing for NativeMenuVie…
algorythmice Jan 31, 2026
66e2bd2
fix(ui/action-menu): reusing native types from @react-native-menu
algorythmice Jan 31, 2026
c29394e
refactor(ui/action-menu): simplify legacy flag extraction and boolean…
algorythmice Jan 31, 2026
435bf56
refactor(ui/action-menu): simplify state and legacy flag handling
algorythmice Jan 31, 2026
58cde3c
refactor(ui/action-menu): use Stack for item layout
algorythmice Jan 31, 2026
5e31489
refactor(ui/action-menu): change borderBottomColor
algorythmice Jan 31, 2026
6f26487
refactor(ui/action-menu): simplify menu positioning
algorythmice Jan 31, 2026
c1a75cf
refactor(ui/action-menu): use textColor for subtitle color
algorythmice Jan 31, 2026
bed2b32
refactor(ui/action-menu): replace Unicode chevron/check with Papicons
algorythmice Jan 31, 2026
3bbe1d3
refactor(ui/action-menu): replace Unicode chevron/check with Papicons…
algorythmice Jan 31, 2026
9de87a8
refactor(ui/action-menu): use theme destructive color for destructive…
algorythmice Jan 31, 2026
790cc2a
refactor(ui/action-menu): remove const textColor
algorythmice Jan 31, 2026
563fe6a
refactor(ui/actionmenu): remove hardcoded values and improve readability
algorythmice Feb 2, 2026
b248f30
feat(ui/action-menu): support for the “imageColor” parameter
algorythmice Feb 2, 2026
70eceac
feat(app/(modals)/wallpaper): replace MenuView by component ActionMen…
algorythmice Feb 2, 2026
1d802f1
refactor(app/(modals)/wallpaper): remove unused import in wallpaper.tsx
algorythmice Feb 2, 2026
48cf8d3
refactor(app/(modals)/wallpaper): remove unused import in wallpaper.tsx
algorythmice Feb 2, 2026
482bbf9
feat(app/(features)/attendance): replace MenuView by component Action…
algorythmice Feb 2, 2026
26daa16
feat(app/(tabs)/calendar/event/[id]): replace MenuView by component A…
algorythmice Feb 2, 2026
b75d0cb
feat(app/(modals)/profile): replace MenuView by component ActionMenu …
algorythmice Feb 2, 2026
3745e25
feat(app/(features)/(news)/specific): replace MenuView by component A…
algorythmice Feb 2, 2026
9ff542c
chore(ui/action-menu): remove redundant NativeMenuView null assignment
algorythmice Feb 5, 2026
79746ea
rfactor(ui/action-menu): use NativeMenuAction instead of MenuAction a…
algorythmice Feb 5, 2026
32bd437
rfactor(ui/action-menu): use NativeMenuComponentProps for component p…
algorythmice Feb 5, 2026
7f82b0f
rfactor(ui/action-menu): simplify colorText logic Corps
algorythmice Feb 5, 2026
d383a63
chore(ui/action-menu): use internal logger.warn instead of console.warn
algorythmice Feb 5, 2026
417d7a5
feat(ui/action-menu): handle safe-areas in menu positioning
algorythmice Feb 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions app/(features)/(news)/specific.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ import HTMLView from 'react-native-htmlview';
import * as WebBrowser from 'expo-web-browser';
import { useTheme } from "@react-navigation/native";
import { NativeHeaderPressable, NativeHeaderSide } from "@/ui/components/NativeHeader";
import { MenuView } from "@react-native-menu/menu";
import Icon from "@/ui/components/Icon";
import { t } from "i18next";
import List from "@/ui/components/List";
import Item from "@/ui/components/Item";
import ActionMenu from "@/ui/components/ActionMenu";

export default function NewsPage() {
const search = useLocalSearchParams();
Expand Down Expand Up @@ -180,7 +180,7 @@ export default function NewsPage() {
</ScrollView>

<NativeHeaderSide side="Right">
<MenuView
<ActionMenu
actions={
themes.map(theme => ({
id: theme.value,
Expand All @@ -201,7 +201,7 @@ export default function NewsPage() {
<Papicons.Palette />
</Icon>
</NativeHeaderPressable>
</MenuView>
</ActionMenu>
</NativeHeaderSide>
</>
)
Expand Down
6 changes: 3 additions & 3 deletions app/(features)/attendance.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import { Platform, ScrollView, View } from "react-native";
import { Papicons } from "@getpapillon/papicons"
import { useTheme } from "@react-navigation/native";
import { Dynamic } from "@/ui/components/Dynamic";
import { MenuView } from "@react-native-menu/menu";
import { Period } from "@/services/shared/grade";
import { getPeriodName, getPeriodNumber, isPeriodWithNumber } from "@/utils/services/periods";
import { useMemo, useState } from "react";
Expand All @@ -21,6 +20,7 @@ import { error } from "@/utils/logger/logger";
import { getManager } from "@/services/shared";
import { t } from "i18next";
import i18n from "@/utils/i18n";
import ActionMenu from "@/ui/components/ActionMenu";

export default function AttendanceView() {
try {
Expand Down Expand Up @@ -270,7 +270,7 @@ export default function AttendanceView() {
</NativeHeaderSide>

<NativeHeaderTitle style={{ paddingTop: Platform.OS === "android" ? 10 : 0 }} key={"att:" + period?.name}>
<MenuView
<ActionMenu
key={String(period?.id ?? "")}
onPressAction={async ({ nativeEvent }) => {
const actionId = nativeEvent.event;
Expand Down Expand Up @@ -328,7 +328,7 @@ export default function AttendanceView() {
<Papicons name={"ChevronDown"} strokeWidth={2.5} color={colors.text} opacity={0.6} />
</Dynamic>
</Dynamic>
</MenuView>
</ActionMenu>
</NativeHeaderTitle >
</>
)}
Expand Down
6 changes: 3 additions & 3 deletions app/(modals)/profile.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Papicons } from "@getpapillon/papicons";
import { MenuView, NativeActionEvent } from "@react-native-menu/menu";
import { useHeaderHeight } from "@react-navigation/elements";
import { useTheme } from "@react-navigation/native";
import * as ImagePicker from "expo-image-picker"
Expand All @@ -23,6 +22,7 @@ import Icon from "@/ui/components/Icon";
import { NativeHeaderPressable, NativeHeaderSide } from "@/ui/components/NativeHeader";
import Typography from "@/ui/components/Typography";
import { getInitials } from "@/utils/chats/initials";
import ActionMenu from "@/ui/components/ActionMenu";

export default function CustomProfileScreen() {
const { t } = useTranslation();
Expand Down Expand Up @@ -89,7 +89,7 @@ export default function CustomProfileScreen() {
imageUrl={profilePictureUrl || undefined}
/>

<MenuView
<ActionMenu
actions={[
{
id: 'photo_library',
Expand Down Expand Up @@ -140,7 +140,7 @@ export default function CustomProfileScreen() {
icon={<Papicons name="Camera" />}
title={t("Button_Change_ProfilePicture")}
/>
</MenuView>
</ActionMenu>
</View>

<View style={{ paddingHorizontal: 20, paddingTop: 30, gap: 15 }}>
Expand Down
7 changes: 3 additions & 4 deletions app/(modals)/wallpaper.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { useAccountStore } from "@/stores/account"
import { useSettingsStore } from "@/stores/settings"
import { Wallpaper } from "@/stores/settings/types"
import AnimatedPressable from "@/ui/components/AnimatedPressable"
Expand All @@ -13,9 +12,9 @@ import { NativeHeaderPressable, NativeHeaderSide } from "@/ui/components/NativeH
import Icon from "@/ui/components/Icon"
import { router } from "expo-router";
import { Papicons } from "@getpapillon/papicons"
import { MenuView } from "@react-native-menu/menu"

import * as ImagePicker from 'expo-image-picker';
import ActionMenu from "@/ui/components/ActionMenu";

const COLLECTIONS_SOURCE = "https://raw.githubusercontent.com/PapillonApp/datasets/refs/heads/main/wallpapers/index.json";

Expand Down Expand Up @@ -235,7 +234,7 @@ const WallpaperModal = () => {
</Icon>
</NativeHeaderPressable>
)}
<MenuView
<ActionMenu
actions={[
{
id: "background:clear",
Expand Down Expand Up @@ -291,7 +290,7 @@ const WallpaperModal = () => {
<Papicons name="Gears" />
</Icon>
</NativeHeaderPressable>
</MenuView>
</ActionMenu>
</NativeHeaderSide>
</>
)
Expand Down
6 changes: 3 additions & 3 deletions app/(tabs)/calendar/event/[id].tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { MenuView } from '@react-native-menu/menu';
import { useTheme } from "@react-navigation/native";
import { useLocalSearchParams, useNavigation, useRouter } from "expo-router";
import { t } from 'i18next';
Expand All @@ -10,6 +9,7 @@ import UnderConstructionNotice from "@/components/UnderConstructionNotice";
import { useDatabase } from '@/database/DatabaseProvider';
import { useEventById } from '@/database/useEventsById';
import { NativeHeaderPressable, NativeHeaderSide } from '@/ui/components/NativeHeader';
import ActionMenu from "@/ui/components/ActionMenu";

export default function TabOneScreen() {
const { id, title } = useLocalSearchParams();
Expand Down Expand Up @@ -39,7 +39,7 @@ export default function TabOneScreen() {
return (
<>
<NativeHeaderSide side='Right'>
<MenuView
<ActionMenu
actions={[
{
id: 'delete',
Expand Down Expand Up @@ -92,7 +92,7 @@ export default function TabOneScreen() {
<NativeHeaderPressable>
<MoreVertical color={colors.text} />
</NativeHeaderPressable>
</MenuView>
</ActionMenu>
</NativeHeaderSide>

<ScrollView
Expand Down
6 changes: 3 additions & 3 deletions app/(tabs)/grades/atoms/Averages.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Papicons } from "@getpapillon/papicons";
import { MenuView } from "@react-native-menu/menu";
import ActionMenu from "@/ui/components/ActionMenu";
import { useTheme } from "@react-navigation/native";
import { useRouter } from "expo-router";
import { t } from "i18next";
Expand Down Expand Up @@ -211,7 +211,7 @@ const Averages = ({ grades, realAverage, color, scale = 20 }: { grades: Grade[],
</Dynamic>
</Stack>

<MenuView
<ActionMenu
actions={[
{
title: t('Grades_Avg_Methods'),
Expand Down Expand Up @@ -263,7 +263,7 @@ const Averages = ({ grades, realAverage, color, scale = 20 }: { grades: Grade[],
</Icon>
</Stack>
</TouchableOpacity>
</MenuView>
</ActionMenu>

<Dynamic animated key={"dateSource:" + (isRealAverage ? "real" : "estimated")}>
<Typography color="secondary" style={{ marginTop: 1 }}>
Expand Down
9 changes: 5 additions & 4 deletions app/(tabs)/grades/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Papicons } from '@getpapillon/papicons';
import { LegendList } from '@legendapp/list';
import { MenuView } from '@react-native-menu/menu';
import ActionMenu from '@/ui/components/ActionMenu';
import { useTheme } from '@react-navigation/native';
import { useNavigation } from 'expo-router';
import { t } from 'i18next';
Expand Down Expand Up @@ -413,7 +413,7 @@ const GradesView: React.FC = () => {
onHeightChanged={setHeaderHeight}
/* Nom de la période */
title={
<MenuView
<ActionMenu
onPressAction={({ nativeEvent }) => {
const actionId = nativeEvent.event;
Comment on lines +416 to 418
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR description says MenuView usages are replaced by ActionMenu, but there are still multiple MenuView imports/usages in the repo (e.g. app/(features)/(news)/specific.tsx, app/(features)/attendance.tsx, app/(modals)/profile.tsx, app/(modals)/wallpaper.tsx, app/(tabs)/calendar/event/[id].tsx). Either update the description/scope, or complete the replacement in this PR/follow-up.

Copilot uses AI. Check for mistakes.

Expand Down Expand Up @@ -450,7 +450,7 @@ const GradesView: React.FC = () => {
loading={loading}
chevron={periods.length > 1}
/>
</MenuView>
</ActionMenu>
}
/* Filtres */
trailing={
Expand Down Expand Up @@ -534,4 +534,5 @@ const GradesView: React.FC = () => {
)
};

export default GradesView;
export default GradesView;

Loading