From f2d1f0b0053ee1de40b265f30593c23d542149bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Leroy?= Date: Thu, 25 Apr 2024 15:04:02 +0200 Subject: [PATCH 1/6] chore: add example of list with variable size --- packages/example/App.tsx | 3 + packages/example/src/components/Menu/Menu.tsx | 1 + .../src/modules/program/view/ProgramList.tsx | 4 +- .../src/pages/ListWithVariableSize.tsx | 61 +++++++++++++++++++ 4 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 packages/example/src/pages/ListWithVariableSize.tsx diff --git a/packages/example/App.tsx b/packages/example/App.tsx index e84cadd4..92b61bb4 100644 --- a/packages/example/App.tsx +++ b/packages/example/App.tsx @@ -17,6 +17,7 @@ import { NonVirtualizedGridPage } from './src/pages/NonVirtualizedGridPage'; import { GridWithLongNodesPage } from './src/pages/GridWithLongNodesPage'; import { useTVPanEvent } from './src/components/PanEvent/useTVPanEvent'; import { SpatialNavigationDeviceTypeProvider } from '../lib/src/spatial-navigation/context/DeviceContext'; +import { ListWithVariableSize } from './src/pages/ListWithVariableSize'; const Stack = createNativeStackNavigator(); @@ -27,6 +28,7 @@ export type RootTabParamList = { ProgramGridPage: undefined; NonVirtualizedGridPage: undefined; GridWithLongNodesPage: undefined; + ListWithVariableSize: undefined; }; export type RootStackParamList = { @@ -54,6 +56,7 @@ const TabNavigator = () => { + ); diff --git a/packages/example/src/components/Menu/Menu.tsx b/packages/example/src/components/Menu/Menu.tsx index f5c58874..d4023e31 100644 --- a/packages/example/src/components/Menu/Menu.tsx +++ b/packages/example/src/components/Menu/Menu.tsx @@ -58,6 +58,7 @@ const menuItems: Record = { label: 'Grid with long nodes', icon: 'LayoutDashboard', }, + ListWithVariableSize: { label: 'List with variable size', icon: 'LayoutDashboard' }, }; export const Menu = ({ state, navigation }: BottomTabBarProps) => { diff --git a/packages/example/src/modules/program/view/ProgramList.tsx b/packages/example/src/modules/program/view/ProgramList.tsx index 6c90b8c2..0e1282f3 100644 --- a/packages/example/src/modules/program/view/ProgramList.tsx +++ b/packages/example/src/modules/program/view/ProgramList.tsx @@ -25,10 +25,12 @@ export const ProgramList = ({ orientation, containerStyle, listRef, + data, }: { orientation?: 'vertical' | 'horizontal'; containerStyle?: object; listRef: MutableRefObject; + data?: ProgramInfo[]; }) => { const navigation = useNavigation>(); @@ -51,7 +53,7 @@ export const ProgramList = ({ { + const theme = useTheme(); + const [programs, setPrograms] = useState(programInfos.slice(0, 4)); + + const addOrRemoveLastItem = () => { + if (programs.length === 4) { + setPrograms(programInfos.slice(0, 3)); + } else { + setPrograms(programInfos.slice(0, 4)); + } + }; + + return ( + + + + + + + + + + +